User Tools

Site Tools



Library for reading and writing PDF files.

PDF files can be opened and all PDF objects are available as Smalltalk objects, which can be manipulated in any way you like. Likewise, any Smalltalk PDF object (net) can be written out as conforming PDF file.

The library implements the PDF specification (ISO standard PDF 32000-1:2008) in Cincom's VisualWorks Smalltalk.

The syntax and basic machinery is covered comprehensively, which let's you read any PDF file and write any PDF object in a conforming way.

The Library

The library is for programmers who want full control over all details of PDFs.

See the release notes for details.

The licence is MIT.

PDF objects are typically dictionaries or arrays. The object types and their attributes are well documented by the PDF Specification. The library defines many PDF objects as Smalltalk objects (and it is easy to add more PDF types).

The code is as close to the specification as possible. The names of types and attributes are directly used for the implementation when appropriate. When studying the PDF specification (a nice read in most parts!), it is easy to find the relevant implementation in the library.

The library code is annotated with the original descriptions and definitions from the specification, so that learning about PDF itself is well supported.

Included is a UI tool to inspect PDFs: the PDFExplorer (internal version of the PDFtalkSnooper application).

Get started

The slides "PDF in Smalltalk" (a talk at ESUG 2011), give an overview of what this project is about.

Load the {PDFtalk Project} bundle from the Cincom Public Store into your VisualWorks image.

Copy the original PDF specification (ISO standard PDF 32000-1:2008) to your image directory. This PDF is needed for some examples and tests.

Note 1: The old version of the library is still in the store under the name {PDF Development}. Don't load this.

Note 2: The library uses the Values package. There has been an incompatible change in version 3. Unfortunately, the old version is in the contribution of VisualWorks up to version 8.3.2. If the old version is loaded, you get errors about OrderedDictionary. This class has been renamed to Valuemap in the new version. If this error hits you (I tried to prevent this by improving the prerequisites), please load Values version 3.x first.

Try the demos and examples.

Read the documentation.


Values A base library for immutable complex objects facilitating functional programming.

RDF The implementation of the W3C Recommendation RDF 1.1 XML Syntax.

PostScript Implementation of the PostScript Level 3 language (without graphics or rendering).

CMap Font encodings for Type 0 fonts (large fonts for Japanese, Chinese, Korean…)


PDFtalk for Gemstone The port of the library to Gemstone Smalltalk. A talk about this was held at ESUG 2017: “PDFtalk for Gemstone” (slides are here).

Gemstone Fileout A VisualWorks to Gemstone translation tool. This tool, with project specific code transformation declarations, creates a Gemstone filein. Used to create the Gemstone PDFtalkLibrary from the Values package and PDFtalk bundle.

Smalltalk Transform Project A translation tool for VisualWorks to generate Smalltalk for other dialects. Project specific code transformation declarations are used to generate a filein for the target dialect. This is the next more general version of the Gemstone Fileout project.

The projects above are open source with MIT licence.


Snooper Stand-alone UI tool to inspect PDFs. This is the packaged version of the internal tool.

The tool is free, but not open-sourced.


The slides "PDF in Smalltalk" from the ESUG 2011 talk give an overview.

The slides "PDFtalk for Gemstone" from the ESUG 2017 talk.

The project was discussed in a podcast (German) from Smalltalk Inspect (mentioned in Joachims Small World).

Bob Nemec is using the library to build a report generator!

start.txt · Last modified: 2021/07/27 11:46 by christian