I'm trying to view a Pdf file that I found online.
Normally, when I attempt to open a Pdf file, Firefox displays it in its default Pdf viewer (called pdfjs, I believe). This is good and normal behavior.
However…
with this specific Pdf that I found online, I click the link to its location, and Firefox brings up the download dialog. It describes the file as a "binary file", even though the file is a Pdf that I can download and view natively.
I'm assuming the web-server is "not telling" Firefox that this Pdf file is, in fact, a Pdf file. So Firefox can only assume that it is a "binary file".
This spurred me to wonder the question…
If I were to ever encounter this annoyance again, instead of downloading the file, can I force Firefox to open a file (online or otherwise) in its default Pdf viewer?
Attempted Solutions:
- I tried the answer from How to call firefox built-in pdf viewer (pdf.js) manually?, but to no avail. Firefox just attempts to download the "binary file".
- I added
view-source:
to the beginning of the Pdf's location (i.e.view-source:https://www.website.com/pdf.pdf
), I just get the raw ASCII text displayed of the Pdf file.
PS: I'm using Firefox 48.0.2 …
Yes, it's old….
As requested:
Best Answer
There are several ways that sites can force your browser to download a file instead of opening it directly:
The
download
HTML AttributeThis attribute on an
anchor
tag will attempt to force your browser to download the file instead of processing it in the way it normally would.Generally this is used when you need to take an automatically generated document name and present it as something nice for the user.
Usage:
<a href="http://www.website.com/path/to/YourDocument.pdf" download="YourDocument.pdf">...
I have not yet found a way to work around this, but since the real cause of your problem lies below, I haven't researched it entirely...
HTTP Headers
Content-Disposition
A webserver can respond to a request for a document with the
Content-Disposition
header to describe how the browser should receive the file.Content-Disposition: Attachment
will tell the browser that it should download the file, rather than process it as it normally would.Content-Disposition: Inline
will tell the browser that it can be displayed inside the webpage, or as the webpage.Here is a Firefox addon that will take
Attachment
headers and replace them withInline
headers:https://addons.mozilla.org/en-US/firefox/addon/bypass-forced-download/
Technically, it intercepts
Content-Disposition: attachment
Headers and rewrites them on the fly toContent-Disposition: inline
. It also allows you to specify websites that should and should-not use this rewrite.As with most addons, your mileage may vary.
Content-Type
A webserver can respond to a request for a document with the
Content-Type
header to describe the type of document it is returning to the browser.Content-Type: application/octet-stream
is defined as "arbitrary binary data" and is basically only downloadable as a file, the browser won't know what to do with it otherwise.This is what you see when your browser requests the PDF file you are attempting to view.
Content-Type: application/pdf
is what you would probably need if you wanted to view this file in your browser, or at least have Firefox understand what the file is and how to handle it correctly.Here is a Firefox addon that can be set to listen for, and rewrite
Content-Type
headers based on their content.Note: Modifying how your browser handles MIME types can be dangerous.
https://addons.mozilla.org/en-US/firefox/addon/content-type-fixer/
Again, this addon may or may not work in all cases.