Convert Octet-stream To Pdf
Hi guys I have to catch a form post from flash, and convert the octet stream into an image to save on the server. Any help would be greatly appreciated Below is my code: byte[] imgBytes = new byte[.
I am using Mozilla Firefox with a PDF viewer plug-in. The plug-in has been correctly associated with Adobe Reader files to view them in the browser in the settings.
I would like to be able to view PDF files in Firefox rather than downloading them. This already works correctly when a web server indicates that a file has the Content-Type
of application/pdf
. However, some web servers provide other Content-Type
s for PDFs, such as application/octet-stream
. (See this example of a PDF served with a non-pdf Content-Type
.)
I have looked at Firefox's MimeTypes.rdf file, and it appears to only support mapping applications based on file extensions for non-Internet-based files. (It looks like it only uses Content-Type
to map Internet-based files.)
How can I have Firefox view all PDF documents in-browser rather than only the ones with the application/pdf
Content-Type
?
2 Answers
Firefox has no content inspection code (e.g. the linux file
command) to detect the actual content type and rely on the Content-Type
header.
Workaround: mozplugger
extension
See man 7 mozplugger
:
Workaround: human interaction
Convert Octet-stream To Base64
Save the file and open it in the file explorer ;-)
Workaround: misconfiguration
An additional workaround is to hack mimeTypes.rdf
and assign application/octet-stream
to the same value as application/pdf
.
I don't advice this workaround.
You can use Force Content-Type extension for pdf files with wrong Content-Type
response header.
Convert Octet-stream To Pdf Online
For example if web server provides Content-Type: application/octet-stream
you can add rule to transform it to Content-Type: application/pdf
based on pdf file url, like this:
Not the answer you're looking for? Browse other questions tagged firefoxpdfmime-types or ask your own question.
This blog entry has been re-published with updated information.
Some time ago I experimented with PDF attachments — trying to add them to my XML data. I wasn’t happy with the outcome at that time, and I was going to leave it. But then I saw a customer scenario that called for this capability, and then one of my regular commenters (Bruce) brought up the topic as well. So I’ve tried again and had a little more success this time.
The end goal is to copy a PDF attachments into XML data. If you can do so, it opens up a couple of interesting possibilities:
- Take any attachments a user has added to the PDF and include it in a form submission or in a web service request
- Take image attachments and use them to populate image fields
Acrobat methods for attachments
The acrobat document object has a property: dataObjects that returns an array of all the attachments in the current document. Then are a set of methods for dealing with attachments: openDataObject, getDataObject, createDataObject, importDataObject, removeDataObject, getDataObjectContents, and setDataObjectContents.
The interesting method in our case is getDataObjectContents(). It returns a stream object with the contents of an attachment. If your attachment happens to be textual, then you can use util.stringFromStream() to convert to a string value:
var inputStream = event.target.getDataObjectContents('MyNotes.txt');
Notes.rawValue = util.stringFromStream(inputStream);
The default encoding for binary attachments is a hex-encoding (each byte written as a 2 digit hex value). However, when your attachment is in a binary format, the standard way to include it in an XML file is to encode it as base64. To convert to a base64 encoding, use the Acrobat Net.streamEncode() method:
// Get a stream for the image attachment
var inputStream = event.target.getDataObjectContents('Smile.jpg');
// Get a new stream with the image encoded as base64
var vEncodedStream = Net.streamEncode(inputStream, 'base64');
Feb 14, 2018 - Autocom / delphi 2016 exonerate 2 keygen activator 2016.2 ( 2.15.2 activation dispersion 2 2016 cdp ds150e cdp+ cars trucks vci.
// Get a string from the stream
var sBase64 = util.stringFromStream(vEncodedStream);
// assign the base64 encoded value to an image field
sampleImage.rawValue = sBase64;
We know there are issues with Net.streamEncode() failing where content has null bytes. However, when used in the context of encoding an attachment, it seems to work fine.
When I first looked at this problem I assumed that the Net.StreamEncode() method wasn’t working so I wrote a base64 encoding JavaScript. It works fine — but it is slow! On a 140K image, it takes 10 seconds to encode. I’ve included this code in the sample just for interest sake.
Conversion to Base64
The attached sample form has an initialization script that displays a subform for each attachment. There are two buttons that will take the corresponding attachment, convert it to base64 and assign it to the image field value. One button uses the (slow) JavaScript encoding algorithm the other button uses Net.streamEncode() and works pretty quickly.
The easiest and most reliable way to encode attachments in your XML data is to keep them in a hex encoding. But of course, for this to work the consumer of your XML needs to be able to handle hex encoding as well.