this.hostContainer is undefined in Acrobat scripting - pdf

I have a query. Actually, I am using an acrobat 9 pro to create editable pdf and also have a submit button in pdf itself to submit a form to a backend server. My main concern is to send pdf data to the backend server for further processing. I am using this.hostContainer.postMessage(msg) to communicate between embedded pdf and the browser. The major problem here is this.hostContainer is always undefined in pdf scripting.
Also, I have been searching for this very long time and I could not find any solution though.
Some forums even say that Acrobat 9 pro have a problem with hostContainer.
Looking forward to your help. Thanks

The HostContainer Object is only available when the PDF is being displayed in IE now, not Edge or any other modern browser. It's also not available at all on macOS or mobile. I suggest not bothering with it at all because you don't actually need to embed the PDF in a browser in order to submit the form data to a server. You just need the submit URL to be fully qualified and the submit button will work.

Related

Putting an iframe overlaid on a pdf document in a browser extension

I created a browser extension that lets you look up words in Wikipedia or Wiktionary without needing to open a new tab ( https://addons.mozilla.org/en-US/firefox/addon/in-page-lookup/ , almost done porting to Chrome). It is very useful when you are doing research and come across a word you don't know or want to know more about. The only thing is, a lot of research content is in PDF format. A long time ago (~2013ish) I had an older version of the app based on the old Firefox add-on framework and that did let iframes show up over pdf documents but this has not been the case for many years. I don't think the extension is even recognized in pdf documents, I get "Error: Could not establish connection. Receiving end does not exist" and there is no extension content script on the pdf page. So, my question is, is it possible to put an iframe over a pdf document? Do I need to work on the background side, and if so, how? Thanks.

Edit texts in a PDF on Chrome using Chrome inspect

Is there any way to modify texts in PDF on Chrome using the Chrome inspect tool? I was stuck because in the Chrome inspect element, differently than any other websites and even PowerPoint presentations opened in Chrome, I'm able to modify texts, while with PDFs I cannot. Does anyone know how to do it?
Edit: Yes I know that the changes made through Chrome DevTools are temporary, but usually I'm able to make those changes, even if they're temporary. But with PDFs I can't.
There are differences in the way some browsers handle PDF data.
Chromium based browsers are more traditional in that the PDF plug-in is based on a Foxit/Skia collaboration, So you need to understand in that case, the downloaded PDF you are viewing is in the binary application/pdf (file already outside of the html wrapper).
Just as you cannot edit the PDF text in Acrobat Reader, the most you can do is incrementally add comments/annotation or field data to the end of the file, before save as a secondary download. The server cannot see your changes unless you submit as an upload.
With Firefox and Google docs there is often a different approach where the PDF is "Repr"oduced as an "Ex"ample (A ReprEx of the PDF) so it is built of a hybrid image and text overlay to emulate that part of the real PDF source. When you previously or later save the underlying downloaded PDF (for viewing) it would not necessarily include any browser based HTML editing, in the saving.
There are other techniques for other cases, but to answer the basic OP question most simply, the answer is NO you cannot change a PDF body, only add notes, etc via extensions. Microsoft variant of Chrome I.E. Edge has some inbuilt annotation ability thus does not need a second extension.
Found this question because I was googling a similar situation--I was wanting to manipulate type sizes and margins on a PDF in inspector via Chrome. I found that FireFox DevTools will allow you to view those styles and even alter the content in the PDF while in browser. I am late to the game but hope this provides answers for someone else in the future.

Questions about PDF Form, Acrobat Reader, Browser PlugIns and JavaScript

With the latest Adobe PDF smart forms, following are my questions:
1) Could the PDF form itself detect or be aware of what client software itself is opened with?
2) When a PDF form is opened inside a browser plugin, could the script on the form read from browser cookies? and also could the script on the form write into browser cookies?
Thanks for the info.
"latest smart forms"… this has been done for the last 15 years…
To 1): The first distinction is to make whether the PDF viewer used understands (Acrobat) JavaScript.
If not, your smart form will remain dumb, and there is nothing you can change (if the viewer allows submitting data, you could do a server-side data processing and form filling and return the filled PDF to the client).
If the PDF viewer understands (Acrobat) JavaScript, you have the possibility to test for the kind of viewer, its version, as well whether it is external (which means whether you view the form under a web browser). See the Acrobat JavaScript documentation (which is part of the Acrobat SDK, downloadable from the Adobe website).
To 2): The answer is simple: no. This is not allowed (and implemented) for security reasons.
Hope this can help.
Max Wyss.

Hiding the "You cannot save data typed into this form" message in Acrobat

I am embeding a PDF form on my web application. The application allows you to fill in the fields in the form, and when you are done, click on a "Submit" button, which saves whatever you've entered into the form. This functionality is working fine.
Unfortunately, Adobe Reader displays a message on top of their embeded control that says: "Please fill out the following form. You cannot save data typed into this form. Please print your completed form if you would like a copy for your records."
Now, I know what Adobe Reader is trying to tell the user. Basically, Adobe Reader will not allow you to save the contents of what you've entered into your local hard drive as a new PDF.
However, since we've added a Submit button which effectively will save what they typed within our application, and it is working. Therefore, we think this message is misleading, and would like to remove it.
I use iTextSharp in .Net for our form automation server side. I have not found a way to remove this message from the embeded forms.
Any help?
It has been a long time, but adobe has added option to hide this annoying message.
On OSX 11.0.3, Preferences>Forms>Always hide document message bar
I'm pretty sure that there is no way around this if you want to continue to use Acrobat Reader to display the PDF. This message is built into Acrobat Reader, and I am not aware of any way to override it from the outside.
Sorry, this is more in the way of a negative answer than a positive one.
There are some third-party, free, projects that are basically PDF viewers for .NET. This would allow you to get rid of the message by avoiding Acrobat Reader entirely, although this is a large amount of work just to get rid of a message.
This one is pretty comprehensive.
Another option that I'm sure you already thought of is to just build the form on the web page, instead of using the PDF. Again, a lot of extra work just to remove a message.
Adobe Acrobat (Standard and Pro) can change PDF forms to enable Adobe Acrobat Reader users to 'fill+save' form data (instead of the standard 'fill+print').
It is a special option available when saving the PDF saying "Save PDF with extended Reader functions" (or similar... I'm translating this back from German into English).
This cannot be achieved with any non-Adobe PDF creating software (unless this has licensed that function from Adobe). The technical reason for this is that Adobe uses a digital signature to protect this function, and that you'll have to agree to not reverse engineer the key when you accept the Adobe EULA. Acrobat Reader has that key compiled into its binary, and if it verified the key, it will change the message displayed to the user indicating that the form data of this document can be saved (it will also change its behaviour and indeed save the data).
Maybe this info helps you?
Switch to View > Full Screen Mode (short cut is on a mac is ⌘L).
Although this mode hides all menus and scroll bars too, I prefer it. IMHO the reader uses far too much screen real estate on junk)

Can a downloaded, fillable PDF form submit data to a server via JavaScript?

Although it would be nice to not use PDF, we are using a legacy system that only generates PDF forms.
I am working with some PDF forms that embed JavaScript to submit data back to a server. The form works when viewed and filled out in the browser.
Unfortunately, our users like to download the forms to their computer, fill them out completely, and only then get an error from Acrobat Reader that it cannot submit the form unless it is loaded in a browser.
How can I make the JavaScript form submission work outside of the web browser, prevent the users from downloading the form, or have the form warn them it won't work before they fill it out?
My knowledge of PDF is probably at least one version of Acrobat behind the curve, but I think the short answer to your question is "You can't".
From a bigger picture point of view: the use of PDF as a data entry user interface is a path of much pain and suffering.
If your objective is to provide a picture-perfect UI available over the web, look at solutions like Blueprint CSS.
If your objective is to provide a 'rich' user experience, look at JQuery.
If your objective is to save yourself the work of replicating an existing document as a web form, then you have not yet learned how much real work it takes to use PDF as a data-entry mechanism.