poppler  0.82.0
About: Poppler is a PDF rendering library (based on the xpdf-3.0 code base).
  Fossies Dox: poppler-0.82.0.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

poppler Documentation

Some Fossies usage hints in advance:

  1. To see the Doxygen generated documentation please click on one of the items in the steelblue colored "quick index" bar above or use the side panel at the left which displays a hierarchical tree-like index structure and is adjustable in width.
  2. If you want to search for something by keyword rather than browse for it you can use the client side search facility (using Javascript and DHTML) that provides live searching, i.e. the search results are presented and adapted as you type in the Search input field at the top right.
  3. Doxygen doesn't incorporate all member files but just a definable subset (basically the main project source code files that are written in a supported language). So to search and browse all member files you may visit the Fossies
  4. poppler-0.82.0.tar.xz contents page and use the Fossies standard member browsing features (also with source code highlighting and additionally with optional code folding).
README.md

Poppler, a PDF rendering library

This is Poppler, a library for rendering PDF files, and examining or modifying their structure. Poppler originally came from the XPDF sources; please see the file README-XPDF for the original xpdf-3.03 README.

Note that Poppler is licensed under the GPL, not the LGPL, so programs which call Poppler must be licensed under the GPL as well. See the section History and GPL licensing for more information.

Source code

Poppler's source code is maintained as a Git repository in gitlab.freedesktop.org. You can fork that repository and submit merge requests.

Reporting bugs

Please report bugs at https://gitlab.freedesktop.org/poppler/poppler/issues

If you want to report a rendering or parsing bug, or a missing PDF feature, please provide an example PDF file as an attachment to your bug report. It really helps if you can minimize the PDF to only the items required to reproduce the bug or the missing feature, but it is not absolutely required. Please be careful of publishing PDF files that you don't want other people to see, or files whose copyright does not allow redistribution; the bug tracker is a public resource and attachments are visible to everyone.

Security

Poppler is highly sensitive to security bugs, since it deals mainly with untrusted files downloaded from the Internet.

If you find a crash in Poppler, or if a tool like Valgrind/asan/ubsan/msan detect a problem, please report a bug at https://gitlab.freedesktop.org/poppler/poppler/issues

Stable and unstable APIs

Poppler provides stable, public APIs for its various front-ends, and an unstable API for Poppler's own internal use. The following directories in Poppler's source tree have the stable APIs:

  • cpp - Stable C++ API for examining the structure of a PDF file and rendering it to a raster image.

  • glib - Stable C API with Glib/GObject idioms, to examine the structure of a PDF file, and to render its pages to Cairo contexts.

  • qt5 - Stable C++ API with Qt5 idioms, to examine the structure of a PDF file, and to render its pages to QPainter or QImage objects.

WARNING: Poppler also provides direct access to its internals, since various tools historically use the C++ header files that came from XPDF and which became the basis for Poppler.

  • poppler - UNSTABLE, INTERNAL C++ API to operate directly on Poppler's internal representation of PDF files. If you use this API, you are on your own. This API may change at any time, even among minor versions of Poppler!

History and GPL licensing

Poppler is a fork of the xpdf PDF viewer developed by Derek Noonburg of Glyph and Cog, LLC. The purpose of forking xpdf is twofold. First, we want to provide PDF rendering functionality as a shared library, to centralize the maintenance effort. Today a number of applications incorporate the xpdf code base, and whenever a security issue is discovered, all these applications exchange patches and put out new releases. In turn, all distributions must package and release new version of these xpdf based viewers. It's safe to say that there's a lot of duplicated effort with the current situation. Even if poppler in the short term introduces yet another xpdf derived code base to the world, we hope that over time these applications will adopt poppler. After all, we only need one application to use poppler to break even.

Second, we would like to move libpoppler forward in a number of areas that don't fit within the goals of xpdf. By design, xpdf depends on very few libraries and runs a wide range of X based platforms. This is a strong feature and reasonable design goal. However, with poppler we would like to replace parts of xpdf that are now available as standard components of modern Unix desktop environments. One such example is fontconfig, which solves the problem of matching and locating fonts on the system, in a standardized and well understood way. Another example is cairo, which provides high quality 2D rendering.

Please note that xpdf, and thus poppler, is licensed under the GPL, not the LGPL. Consequently, any application using poppler must also be licensed under the GPL. If you want to incorporate Xpdf based PDF rendering in a closed source product, please contact Glyph & Cog (www.glyphandcog.com) for commercial licensing options. Note that this only allows you to use xpdf in a closed source product, not poppler itself.