PDFio is a simple C library for reading and writing PDF files.
Go to file
Michael R Sweet 6c1db141a1
Switch string pool code to an insertion sort - provides a modest 25% improvement
to open speeds on typical files.
2024-01-27 20:58:50 -05:00
.github Fix CI scripts. 2023-12-03 20:20:23 -05:00
afl-input Fix AFL target, remove excess PDF test files. 2021-11-30 08:13:41 -05:00
doc Update docos. 2024-01-24 11:03:58 -05:00
pdfio.xcodeproj Bump version and put PDFIO_VERSION definition in the pdfio.h header. 2023-10-06 14:38:38 -04:00
testfiles Add ProPhotoRGB ICC profile. 2021-06-10 11:56:01 -04:00
.cppcheck Update Cppcheck exclusions. 2021-06-04 11:03:15 -04:00
.gitattributes Don't include AFL files in source archives. 2021-11-30 08:46:43 -05:00
.gitignore Fix some warnings. 2023-12-03 19:23:36 -05:00
CHANGES.md Switch string pool code to an insertion sort - provides a modest 25% improvement 2024-01-27 20:58:50 -05:00
CODE_OF_CONDUCT.md Add some supporting documentation files. 2021-09-27 07:42:19 -04:00
CONTRIBUTING.md Update CONTRIBUTING docos. 2023-12-05 14:07:52 -05:00
LICENSE Initial checkin. 2021-04-10 08:00:52 -04:00
Makefile.in Make sure all output code paths set the locale information (Issue #61) 2024-01-27 19:23:51 -05:00
NOTICE Prep for 1.2.0 release, bump copyright. 2024-01-24 10:53:53 -05:00
README.md Prep for 1.2.0 release, bump copyright. 2024-01-24 10:53:53 -05:00
SECURITY.md Prep for 1.2.0 release, bump copyright. 2024-01-24 10:53:53 -05:00
afl-pdf.dict Add AFL++ PDF dictionary. 2021-11-29 18:47:04 -05:00
config.guess Adopt autoconf (Issue #54) 2023-12-03 19:16:34 -05:00
config.sub Adopt autoconf (Issue #54) 2023-12-03 19:16:34 -05:00
configure Bump version. 2024-01-27 18:20:36 -05:00
configure.ac Bump version. 2024-01-27 18:20:36 -05:00
install-sh Adopt autoconf (Issue #54) 2023-12-03 19:16:34 -05:00
makesrcdist Add ZIP file production. 2021-08-30 16:44:48 -04:00
packages.config Add initial Nuget packaging files. 2021-07-30 20:33:21 -04:00
pdfio-aes.c Documentation cleanup. 2023-12-05 13:49:58 -05:00
pdfio-array.c Defer object/value decryption to after the object is loaded (Issue #42) 2023-12-14 16:02:26 -05:00
pdfio-common.c Fix locale support (Issue #61) 2024-01-27 18:22:16 -05:00
pdfio-content.c Fix some Clang warnings. 2024-01-24 10:58:11 -05:00
pdfio-content.h Bring back mis-named pdfioContentTextNextLine. 2023-12-05 13:33:07 -05:00
pdfio-crypto.c Fix whitespace. 2023-12-18 10:04:24 -05:00
pdfio-dict.c Defer object/value decryption to after the object is loaded (Issue #42) 2023-12-14 16:02:26 -05:00
pdfio-file.c Make sure all output code paths set the locale information (Issue #61) 2024-01-27 19:23:51 -05:00
pdfio-md5.c Fix warnings, update Xcode project. 2021-10-08 14:08:07 -04:00
pdfio-object.c Add some more debug printfs, relocate extra newline detection after stream 2023-12-15 12:57:31 -05:00
pdfio-page.c Documentation cleanup. 2023-12-05 13:49:58 -05:00
pdfio-private.h Fix locale support (Issue #61) 2024-01-27 18:22:16 -05:00
pdfio-rc4.c Update crypto callback to return the number of output bytes (to account for AES 2021-10-23 14:37:25 -04:00
pdfio-sha256.c Fix build error due to mismatched function declarations. 2023-03-20 08:19:31 -04:00
pdfio-stream.c Fix locale support (Issue #61) 2024-01-27 18:22:16 -05:00
pdfio-string.c Switch string pool code to an insertion sort - provides a modest 25% improvement 2024-01-27 20:58:50 -05:00
pdfio-token.c Add some more debug printfs, relocate extra newline detection after stream 2023-12-15 12:57:31 -05:00
pdfio-value.c Fix locale support (Issue #61) 2024-01-27 18:22:16 -05:00
pdfio.h Bump version. 2024-01-27 18:20:36 -05:00
pdfio.pc.in pdfio.pc: use -lm as specified in configure 2023-12-10 16:32:52 -05:00
pdfio.sln Add testpdfio target for MSVC. 2021-07-26 11:58:20 -04:00
pdfio.vcxproj Bump version and put PDFIO_VERSION definition in the pdfio.h header. 2023-10-06 14:38:38 -04:00
pdfio.vcxproj.filters Fix Windows builds. 2021-10-26 07:12:41 -04:00
pdfio.vcxproj.user Initial Visual Studio support. 2021-06-21 11:39:06 -04:00
pdfio1.def Bring back mis-named pdfioContentTextNextLine. 2023-12-05 13:33:07 -05:00
pdfio_native.nuspec Prep for 1.2.0 release, bump copyright. 2024-01-24 10:53:53 -05:00
pdfio_native.props Update NuGet package info. 2021-09-01 17:09:05 -04:00
pdfio_native.redist.nuspec Prep for 1.2.0 release, bump copyright. 2024-01-24 10:53:53 -05:00
pdfiototext.c Fix pdfioStreamGetToken implementation (wasn't flushing input), update 2022-03-01 09:18:56 -05:00
testpdfio.c Make sure all output code paths set the locale information (Issue #61) 2024-01-27 19:23:51 -05:00
testpdfio.vcxproj Add initial Nuget packaging files. 2021-07-30 20:33:21 -04:00
testpdfio.vcxproj.filters Add testpdfio target for MSVC. 2021-07-26 11:58:20 -04:00
testpdfio.vcxproj.user Add testpdfio target for MSVC. 2021-07-26 11:58:20 -04:00
testttf.c Fix another bug in the CMAPv4 code, and a bug in the unit test program. 2023-11-19 07:06:35 -05:00
ttf.c Fix some Clang warnings. 2024-01-24 10:58:11 -05:00
ttf.h Merge TTF changes to fix off-by-one error. 2023-10-06 16:44:20 -04:00

README.md

pdfio - PDF Read/Write Library

Version Apache 2.0 Build Status Coverity Scan Status

PDFio is a simple C library for reading and writing PDF files. The primary goals of PDFio are:

  • Read and write any version of PDF file
  • Provide access to pages, objects, and streams within a PDF file
  • Support reading and writing of encrypted PDF files
  • Extract or embed useful metadata (author, creator, page information, etc.)
  • "Filter" PDF files, for example to extract a range of pages or to embed fonts that are missing from a PDF
  • Provide access to objects used for each page

PDFio is not concerned with rendering or viewing a PDF file, although a PDF RIP or viewer could be written using it.

Requirements

PDFio requires the following to build the software:

  • A C99 compiler such as Clang, GCC, or MS Visual C
  • A POSIX-compliant make program
  • ZLIB (https://www.zlib.net) 1.1 or higher

IDE files for Xcode (macOS/iOS) and Visual Studio (Windows) are also provided.

Documentation

See the man page (pdfio.3) and full HTML documentation (pdfio.html) for information on using PDFio.

Installing PDFio

PDFio uses a configure script on Unix systems to generate a makefile:

./configure

If you want a shared library, run:

./configure --enable-shared

The default installation location is "/usr/local". Pass the --prefix option to make to install it to another location:

./configure --prefix=/some/other/directory

Once configured, run the following to make the library:

make all

To test it, run:

make test

To install it, run:

sudo make install

Visual Studio Project

The Visual Studio solution ("pdfio.sln") is provided for Windows developers and generates the PDFIO1 DLL. You can also use NuGet to install the pdfio_native package.

Xcode Project

There is also an Xcode project ("pdfio.xcodeproj") you can use on macOS which generates a static library that will be installed under "/usr/local" with:

sudo xcodebuild install

PDFio is Copyright © 2021-2024 by Michael R Sweet.

This software is licensed under the Apache License Version 2.0 with an (optional) exception to allow linking against GPL2/LGPL2 software. See the files "LICENSE" and "NOTICE" for more information.