Force "Open in Firefox" for iframe in Firefox - pdf

I have a webapp which has ability to print PDF blobs by creating <iframe> with display: none and then calling .contentWindow.print(). It works great in Chrome and Firefox with default configuration.
The problem appears when I have a setting Open in other app: Acrobat Reader DC:
If this is chosen, every time I mount iframe with application/pdf content to DOM I have Adobe Acrobat Reader opened with this PDF.
Is there any way to make Firefox treat PDF with default behaviour for particular webpage/iframe?

Related

Firefox Ignores Content-Disposition

I'm trying to write MVC endpoint that will optionally set the content-disposition to inline or attachment in order to either display the file (a pdf) inside a new browser tab or else to download it. The UI allows the user to select how they'd like to open the file (not my design - can't change that aspect of it).
Note that this works in Chrome/Edge just as expected.
In Firefox, the application settings for PDF appear to trump the content-disposition. Is there a reliable way to get Firefox to respect the content-disposition? Preferably a way that will work w/ a vanilla installation of the browser such that end-users don't need to make any modifications on their end for it to work.
Here's the code I'm using to setup my response (class is derived from ApiController):
var response = Request.CreateResponse(System.Net.HttpStatusCode.OK);
response.Content = new PushStreamContent((stream, content, context) =>
{
dispatcher.Dispatch(request, stream);
}, new MediaTypeHeaderValue(MediaTypeNames.Application.Pdf));
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue(contentDisposition)
{
FileName = $"{auto_generated_fileName}.pdf",
};
response.Headers.CacheControl = new CacheControlHeaderValue()
{
NoCache = true,
NoStore = true
};
return response;
We have noticed this issue in our webapp as well. The webapp has a download button that lets the user download a PDF file. Firefox shows the PDF file in the current tab, which effectively kills the webapp.
After a bit of research, this appears to be an intentional feature, see the release notes for Firefox 98:
When you set an application to open files of a specific type in your Firefox preference settings, those files will open automatically, even files served by the website with "content-disposition: attachment". The same applies to PDF files that are set to open in Firefox by default. This is a fix to bug 453455.
Personally, while I can understand some users may want this for web pages that don't behave well, this is an issue for well-behaved web apps.
Setting the download attribute on the anchor does not appear to work either, Firefox still shows the file inline (tested with Firefox 99.0)
So as far as I am aware, you cannot force the browser to download the file if the browser does not allow it. Other web apps such as OwnCloud or Google Drive are having the same issue -- if you click right on a PDF file in Google Drive and then click on Dowload, Firefox still open the PDF file inline, whereas Chrome downloads it.
For now, it seems the best you can do is to open file in a new tab, to prevent the webapp or web page from being replaced by the downloaded file (which is also what Google Drive seems to be doing). You can open the download in a new tab or window e.g. via the target attribute on an <a> links or via the formtarget atttribute on a <button> element.
I found #blutorange's answer after trying to find a solution to the same problem as OP. However, just before I got here, I stumbled across this answer from back in 2013 - https://stackoverflow.com/a/16515146 which suggests to set the Content-Type header to application/octet-stream, instead of application/pdf.
I tried that solution and what do you know - it works! The PDF opens in a new tab in Firefox automatically, but at least it doesn't replace the tab of my application, so yay! Chrome doesn't seem to mind it either and my PDF viewer on my computer also recognizes the files as PDFs.
Now, this might not be the most "correct" fix to the issue we're facing, but it's an alternative to forcing open a new tab.

Can I force PDF documents in my web application to get opened by Adobe Acrobat plugin

Is it possible somehow to force my pdf documents to open always with the Adobe plugin for opening pdf's in a browser?
The problem is that I have some forms that have to be filled and saved(made with Adobe LiveCycle Designer) but with the Chrome PDF Viewer or others different than Adobe's it fails and the filled pdf can not be saved or saves but without the entered data.
you cannot force pdf to be viewed by acrobat by default. Default pdf applications set by browser will be there. You need to go through browsers in order to change the plugin. No code can invoke this functio

Can pdf and doc files be opened in a browser using coldfusion

Can a pdf file or a doc/docx file be opened in a browser? I have a link which when clicked opens up the document as such in pdf and in MS word. But is it possible to open them in browser using Coldfusion?
thanks in advance
ColdFusion has little to do with how they are opened in the browser. That depends on how the user's browser is configured. If it is configured to open in a standalone app, then it will do so, if it is configured to open in the browser then it will do that. You have some influence if you are serving the file via ColdFusion using the <cfcontent> tag, but since you have provided no code or any explanation of how you are serving these files I will assume you are just doing something like pdf which will just load the file in the browser and the browser determines whether to download it or view it directly.
If you are using <cfcontent> to serve the file then you can also use <cfheader> and send the file as either inline or an attachment which can help tell the browser how it should load it. That said, it is still up to the browser's configuration.
Something like:
<cfheader name="Content-Type" value="application/pdf" />
<cfheader name="Content-Disposition" value="inline;filename=mypdf.pdf;" />
<cfcontent type="application/pdf" reset="true" variable="#myPDFBinary#" />
would serve a PDF binary, telling the browser to load it inline, which should, if properly configured, open the PDF in the browser.
This is not something that ColdFusion can address. This has to do with the particular web browser being used and what related software a user has installed locally.
If the user has a browser that supports PDF natively (e.g. Chrome) or they have the Adobe Acrobat browser plugin installed, then the PDF will open in the browser. Otherwise, it will open in the Acrobat program or any program they have that can view PDF documents. There is no MS Word plugin for browsers, so the browser will always try to open a .doc file in MS Word (if they have it installed) or any other program they have that can read that type of file.

How to force to show PDF in google chrome using Adobe PDF Plug-In only

I am facing a problem while showing a pdf in Google Chrome. The issue is that Chrome shows some pages of the pdf as black.
This happens when Chrome PDF Viewer is enabled. If I disable this plug-in and use Adobe PDF Plug-In it works fine.
Is there any way to show a PDF in Google Chrome using the Adobe PDF Plug-In only.
AS I am showing PDF using an HTML object tag, is there any parameter which forces Chrome to show the PDF using Adobe PDF Plug-In?
There's no way for a website to force the browser to use one renderer or another: those decisions are all made client-side. As you noted, disabling the Chrome PDF plugin bubbles the Adobe plugin to the top, but that's a decision the user would have to make.
That said, if you have a PDF with rendering issues that you can share, please file a bug at http://new.crbug.com/. I'll be happy to put it in front of the correct team for triage.
The only way that you can be 100% that all users can open your PDF correctly currently, is to force that the PDF is downloaded.
Use some headers within your apache or backend.
Example for Apache
https://stackoverflow.com/a/11991050/3086639

Opening a local PDF file in Chrome

Ok I see these 2 questions:
How to open PDF file in Google Chrome in new tab?
Can Google Chrome open local links?
But I'm not sure they answer my question. I'm trying not to install any PDF reader (Adobe sucks) and know that Chrome will open PDFs I open from the internet. So my question, is why won't it work if the PDF is local to my machine? Is there a workaround/plugin/other browser I can use to accomplish this?
The argument of security is totally bogus; how would a PDF I'm opening on the internet be any more secure/safe than a PDF I have on my local machine?
I'm running Chrome 8.0.552.18 on my computer now, under Windows 7, and I just clicked and dragged a PDF onto it, and it loaded it up no problem...
And no, it doesn't look like it's using Acrobat or Foxit, or another PDF reader... it looks like Chrome 8 does have its own PDF renderer.
I'm assuming you are on Windows. So, if your PDF is c:\some\path\some.pdf, simply use this URI in Chrome's address and search field:
file:///C:/some/path/some.pdf
On Linux I'd expect this for /some/path/some.pdf to change to
file:///some/path/some.pdf
(but have no chance to test this).
When you say "open a PDF in Chrome", what do you mean, exactly? Are you opening it through Gmail or Google Docs? If so, that's Google doing conversion behind the scenes, converting it to HTML on their servers, with Chrome simply rendering the HTML as usual.
As far as I'm aware, Chrome has no built-in PDF viewing capabilities.
edit looks like Chrome 8 does have its own PDF viewer built-in. Wowj.