Read, write, and modify PDF files using the Go programming language
This project has the goal of being a full-featured PDF library with the ability to read, write, and modify PDF files. The architecture has been designed to support having multiple PDF files open simultaneously and copying objects from one to another. Object reference numbers read from one PDF file are transparently translated and renumbered when used in another PDF file. The project has the goal (partially implemented) of being able to read arbitrary objects from an open PDF file and use them in another PDF file. It has an additional goal of being able to make append-only, incremental revisions to existing PDF files. The design of the Portable Document Format specifically provides for such revisions. To improve performance, Data is written to PDF files asynchronously in a goroutine created for each output file.
The API currently has two major types: a pdf.File
and a
pdf.Document
. The pdf.File
type deals with low-level PDF file
structure. The pdf.Document
type is a high-level API that uses an
internal pdf.File
object to generate usable PDF files. PDF files
may be constructed using only a pdf.Document
object, without regard
to the underlying pdf.File
object. The pdf.File
type is meant for
low-level manipulation of PDF files and does not necessarily produce a
file that can be read by a PDF reader without adding additional
document structure.
Although the library continues to be a work in progress, it is currently useful for producing PDF files, and it minimally supports reading and revising existing PDF files.