rdkit.sping.PDF.pdfdoc module

PDFgen is a library to generate PDF files containing text and graphics. It is the foundation for a complete reporting solution in Python.

The module pdfdoc.py handles the ‘outer structure’ of PDF documents, ensuring that all objects are properly cross-referenced and indexed to the nearest byte. The ‘inner structure’ - the page descriptions - are presumed to be generated before each page is saved. pdfgen.py calls this and provides a ‘canvas’ object to handle page marking operators. piddlePDF calls pdfgen and offers a high-level interface.

  1. Copyright Andy Robinson 1998-1999
rdkit.sping.PDF.pdfdoc.MakeFontDictionary(startpos, count)

returns a font dictionary assuming they are all in the file from startpos

rdkit.sping.PDF.pdfdoc.MakeType1Fonts()

returns a list of all the standard font objects

class rdkit.sping.PDF.pdfdoc.OutputGrabber

Bases: object

At times we need to put something in the place of standard output. This grabs stdout, keeps the data, and releases stdout when done.

NOT working well enough!

close()
getData()
write(x)
class rdkit.sping.PDF.pdfdoc.PDFCatalog

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

requires RefPages and RefOutlines set

save(file)
class rdkit.sping.PDF.pdfdoc.PDFDocument

Bases: object

Responsible for linking and writing out the whole document. Builds up a list of objects using add(key, object). Each of these must inherit from PDFObject and be able to write itself into the file. For cross-linking, it provides getPosition(key) which tells you where another object is, or raises a KeyError if not found. The rule is that objects should only refer ones previously written to file.

SaveToFile(filename)
SaveToFileObject(fileobj)

Open a file, and ask each object in turn to write itself to the file. Keep track of the file position at each point for use in the index at the end

add(key, obj)
addPage(page)

adds page and stream at end. Maintains pages list

getAvailableFonts()
getInternalFontName(psfontname)
getPosition(key)

Tell you where the given object is in the file - used for cross-linking; an object can call self.doc.getPosition(“Page001”) to find out where the object keyed under “Page001” is stored.

hasFont(psfontname)
printPDF()

prints it to standard output. Logs positions for doing trailer

printTrailer()
printXref()
setAuthor(author)

embedded in PDF file

setSubject(subject)

embeds in PDF file

setTitle(title)

embeds in PDF file

writeTrailer(f)
writeXref(f)
class rdkit.sping.PDF.pdfdoc.PDFImage

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

save(file)
class rdkit.sping.PDF.pdfdoc.PDFInfo

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

PDF documents can have basic information embedded, viewable from File | Document Info in Acrobat Reader. If this is wrong, you get Postscript errors while printing, even though it does not print.

save(file)
class rdkit.sping.PDF.pdfdoc.PDFLiteral(text)

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

a ready-made one you wish to quote

save(file)
class rdkit.sping.PDF.pdfdoc.PDFObject

Bases: object

Base class for all PDF objects. In PDF, precise measurement of file offsets is essential, so the usual trick of just printing and redirecting output has proved to give different behaviour on Mac and Windows. While it might be soluble, I’m taking charge of line ends at the binary level and explicitly writing to a file. The LINEEND constant lets me try CR, LF and CRLF easily to help pin down the problem.

printPDF()
save(file)

Save its content to an open file

class rdkit.sping.PDF.pdfdoc.PDFOutline

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

null outline, does nothing yet

save(file)
class rdkit.sping.PDF.pdfdoc.PDFPage

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

The Bastard. Needs list of Resources etc. Use a standard one for now. It manages a PDFStream object which must be added to the document’s list of objects as well.

clear()
save(file)
setCompression(onoff=0)

Turns page compression on or off

setStream(data)
class rdkit.sping.PDF.pdfdoc.PDFPageCollection

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

presumes PageList attribute set (list of integers)

save(file)
class rdkit.sping.PDF.pdfdoc.PDFStream

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

Used for the contents of a page

save(file)
setStream(data)
class rdkit.sping.PDF.pdfdoc.PDFType1Font(key, font)

Bases: rdkit.sping.PDF.pdfdoc.PDFObject

save(file)
rdkit.sping.PDF.pdfdoc.testOutputGrabber()