Reading Font Colour Information From a PDF
I am working on a piece of software that analyses PDF files and generates HTML based on them. There are a number of things out there that already do this so I know it is possible, I have to write my own for business reasons.
I have managed to get all the text information, positions, fonts out of the PDF but I am struggling to rea开发者_开发技巧d out the colour of the text. I am currently using PDFMiner to analyse the PDF but am beginning to think I will need to write my own PDFReader, even so, I can't figure out where in the document the Colour information for text is even kept! I have even read the PDF spec but cannot find the information I need.
I have scoured google, with no joy.
Thanks in advance!
The colour for text and other filled graphics is set using one of the g
, rg
or k
operators in the content stream object in the PDF file, as described in section 4.5.7 Color Operators in the PDF reference manual.
The example G.3 Simple Graphics Example in the reference manual shows these operators being used to stroke and fill some shapes (but not text).
http://www.adobe.com/devnet/pdf/pdf_reference.html
When parsing a PDF file yourself you start by reading the trailer at the end of the file which contains the file offset of the cross reference table. This table contains the file offset of each object in the PDF file. The objects are in a tree structure with references to other objects. One of the objects will be the content stream. This is described in sections 3.4 File Structure and 3.6 Document Structure in the PDF reference manual.
It is possible to parse the PDF file yourself but this is quite a lot of work. The content stream may be compressed, contain references to other objects, contain comments, etc. and you must handle all of these cases.
The PDFMiner software is already reading the content stream. Perhaps it would be easier to extend PDFMiner to report the colour of the text too?
精彩评论