===== Documentation for the PDFtalk library ===== The {{pdf:pdf32000_2008.pdf|PDF specification}} is extensive. The implementation covers the core mechanisms to read and write PDF objects in a conforming way. This is comparable to the virtual machine and core classes in Smalltalk. Many of the PDF features and possibilities are implemented by sets of PDF types and a clear definition of their structure and interplay. This compares to class libraries in Smalltalk. PDF has many features which are more or less independent from each other. Implementing a PDF feature with the PDFtalk library means to define classes for each relevant PDF type for the feature and providing some automations or helpers for constructing the proper structures. Some simple features are implemented by the library apart from the core mechanisms. Many others are not. For an overview see [[Implementation|the state of the implementation]]. The documentation here is not comprehensive and covers only a few topics. ==== Using the library ==== * [[PaintingAPage|Text]] Shows how to put text on a page. * [[Colors]] Usage of colorspaces and colors * [[Images]] Bitmapped images in PDF * [[Changing]] Changing existing PDFs * [[Examples]] Various examples of Smalltalk generated PDF documents. ==== About the library ==== * [[Implementation]] Notes the state of the implementation of the features structured along the specification chapters. * [[Typing]] PDF attributes are typed. To make use of this, the typing system was implemented. Since this is complex, it deserves its own topic. * [[Extending]] How to add a new PDF Object to the library from the specification. * [[Monsters]] Some PDF writers are not implementing the specification properly. Some of the problems encountered in the wild are dicussed here. ==== Related projects ==== * [[PDFtalk4Gemstone|PDFtalk for Gemstone]] A port of the library to Gemstone. * [[GemstoneFileout|Gemstone Fileout]] Tool for porting VW code to Gemstone * [[complexvalues|Complex Values]] The paper and slides about the basic values framework. Brief descriptions of the releases are documented in the [[History]] of the project.