I have a set of PDF files that were created in Acrobat Professional with fillable, savable forms. I can modify the values of the fields in the forms, and save those changes with ABCpdf, which works great. The problem is that users with Adobe Reader can no longer save any data they put in the form. They can still fill out the form and print it, just not save it.
This might be licensing related (on Adobe's end), but I have not been able to find a solid answer one way or another.
The answer is apparently "no". In order for a PDF form to be savable in Adobe Reader, it has to be signed by an approved product. I'm not sure if there are any third party PDF libraries that would allow this feature, but ABCpdf definitely does not.
Things have changed a little bit with Adobe Reader XI. If the user uses Adobe Reader XI (or newer), the form can be saved. For earlier versions of Reader, so-called Extended Rights are necessary. Extended Rights can be applied using Adobe Acrobat (Pro), or LiveCycle Reader Extensions server. Note that there are (legal) limitations for the use of the form when Acrobat is used to assign the Extended Rights, and that Acrobat can assign only a limited set of rights.
Related
I'm trying to generate a PDF that can be viewed interactively in Adobe Reader, but also, upon printing, selects different paper trays based on the page. (Some pages are supposed to use stationery, whereas other must not.)
PDF itself apparently doesn't support this form of metadata by design (as discussed e.g. here), but apparently, JDF is an appropriate format, and can be embedded as XML in the PDF.
What's less clear to me is if Adobe Reader does anything useful with that metadata: if a PDF with embedded JDF information is printed, does it parse the JDF and choose paper trays? Can I use PDF portfolios for this purpose instead?
My goal is to both let the user view the PDF in Adobe Reader interactively, and, upon printing, automatically selecting different paper trays.
(The far less convenient alternative would be to write a custom app to do the printing.)
You are right, PDF describes the artwork while the JDF describes the metadata about print. However, JDF is targeted to industrial printing systems rather than for desktop printers. As far as I know does Adobe Acrobat Reader not support this kind of feature based on a JDF.
In order to control the different paper trays of your printer, you may setup your printer several times - one for each tray and switch the flag "default printer" in the background programmatically.
Another idea could be to use the Acrobat Reader only for viewing purposes and using the command line for printing.
There are concepts of how to put metadata into the PDF directly (see: https://confluence.cip4.org/display/PUB/PDF+Intent), but it could take a while until this specification is gonna to be implemented.
My C# Windows application needs to print office documents silently(without popup dialog or open up applications such as Word, Excel ). So I'm trying to find a way to print office documents without office (Otherwise user needs to buy office package also to use my application).
I tried with Aspose.NET but It seems some parts of the documents(such as notes, comments) are getting ignored by this component.
I've also tried to go through Microsoft Office 2010: Primary Interop Assemblies Redistributable. But, as I found to use MS office PIAs, MS office needs to be install in the target computer.
Any ideas where should I look into?
First you should understand, that MSOffice uses a proprietary format, that event he best open-source office software is having problems reading without screwing something up.
My suggestion is - you either take something that does a minimal amount of damage, or require office. One suggestion would be: Microsoft used to make "word reader" and "excel reader", try to see if they are still being released.
Another idea would be to find a free office-to-pdf or office-to-xps conversion software, include it with your program and print.
The most difficult way, in my oppinion, would be to feed the document to some online service, for example skydrive's document reader, and request it to print the file.
Depending on the application, your best bet might be saving the content to Open XML and parsing it (beware there's a lot of bloat in larger documents saved in that format per my experience) or simply saving to PDF.
Another clunkier, but more standalone possibility is to use control.click and such to build an automated clicker that opens content in an external freeware application and prints it. The most compelling option is Microsoft's "Viewer" applications (when available). When that is unavailable for a particular document type, Microsoft suggests OneDrive as a freeware alternative (requires account, internet connection).
Word -- "Viewer" has been retired, look for legacy version or use OneDrive
Excel -- "Viewer" is available
Powerpoint -- "Viewer" is available
If you don't want to use a third party application, that could give you a creative, if clunky route to accomplishing your posted goal. Good luck!
How can I embed Acrobat Rader in aWindows 8 Store Application. There are some tutorials based on C# and there some related question but I could not find any solution. They all suggest adding a COM element and then selecting Acrobat Reader control from toolbox. I have added Acrobat Reader COM element but it gave me error:
Sad to say, but at this time, the only way to read pdf files inside a Windows 8 Store app is to use commercial libraries such as Foxit.
You cannot do this if you want your application to be certified for distribution on the Windows Store.
COM objects can be used in Windows Store Apps, but they must be distributed with your application package, and they must not use any forbidden API for the Windows Store. This is must likely not the case for the ActiveX control of Acrobat Reader, since it uses (just to mention one example) the OPENFILENAME dialog, which is not allowed in Windows Store.
Edit on April 2013:
Amyuni PDF Creator for WinRT (a commercial library) is currently available as pre-release trial. This library provides a Xaml control for PDF viewing in Xaml-based projects, and it can also be used for PDF-to-HTML5 convertion in WinRT-Javascript projects. Disclaimer: I currently work as a developer of the library
I need to load a pdf file and then convert it to a text file programmatically in order to then parse it.
Another possibility would be to execute the file (execute Adobe Reader, with the pdf file as the argument) and then "send keys" to it to save the file as text.
However, I would prefer not to do it that way (opening the file) but will if that is the only solution. But: is it even possible to do a "send keys" sort of functionality in C#/WPF?
Note: I don't want to buy any custom components, and besides, I'm using Visual Studio 2012 RC in this "home" project, so I don't know if 3rd party components would be compatible anyway.
If you are looking to deploy this application to other users, I would tend to lean towards using one of the many PDF libraries available and process the PDF via code vs. attempting to use Adobe Reader. It will eliminate issues if your users don't have Adobe Reader installed.
Try starting at the link below for some library ideas.
https://stackoverflow.com/questions/373926/lightweight-open-source-pdf-library-in-c
C# PDF Control & Library
I am trying to programmatically read the field values from a Livecycle created form. I tried opening the document using the Acrobat COM component and it seemed to work and with some reflection I managed to get the actual field names, but the value for each field is the hard part, as it seems.
Furthermore, I know believe that I actually need to use a different approach to extract the values, since it is an XFA form PDF.
(Please don't tell me to look into the examples provided in the Adobe PDF SDK, because they are very poor and absolutely useless to my issue - I already read all I could from the Adobe documentation).
Thank you all.
I use iText/iTextSharp when working with both Acrobat and LiveCycle (XFA) forms. You need need to get access to the LiveCycle XML DOM as the starting point:
iTextSharp Example:
string sourcePdf = #"c:\livecycle.pdf";<br>
PdfReader reader = new PdfReader(sourcePdf);<br>
XmlDocument xmlDoc = reader.AcroFields.Xfa.DomDocument;
You'll need to familiarize yourself with the XFA specification to work with the DOM.
Perhaps, you could use a third-party library, such as ABCPdf to extract field values (this is not an advertisement, I used this library in a similar case, though some time ago).
Another opportunity is that if the PDF in question is under your control, you can use the HTTP-post facility of the LifeCycle-generated PDF files (AFAIK, they can send the values of the fields to a pre-configured Web address once the user pushed the Send button).