2021-04-10 14:00:52 +02:00
|
|
|
pdfio - PDF Read/Write Library
|
|
|
|
==============================
|
|
|
|
|
2021-06-02 00:36:22 +02:00
|
|
|
![Version](https://img.shields.io/github/v/release/michaelrsweet/pdfio?include_prereleases)
|
|
|
|
![Apache 2.0](https://img.shields.io/github/license/michaelrsweet/pdfio)
|
|
|
|
![Build](https://github.com/michaelrsweet/pdfio/workflows/Build/badge.svg)
|
|
|
|
[![Coverity Scan Status](https://img.shields.io/coverity/scan/22385.svg)](https://scan.coverity.com/projects/michaelrsweet-pdfio)
|
|
|
|
[![LGTM Grade](https://img.shields.io/lgtm/grade/cpp/github/michaelrsweet/pdfio)](https://lgtm.com/projects/g/michaelrsweet/pdfio/context:cpp)
|
|
|
|
[![LGTM Alerts](https://img.shields.io/lgtm/alerts/github/michaelrsweet/pdfio)](https://lgtm.com/projects/g/michaelrsweet/pdfio/)
|
|
|
|
|
2021-05-30 13:43:35 +02:00
|
|
|
PDFio is a simple C library for reading and writing PDF files. The primary
|
|
|
|
goals of PDFio are:
|
2021-04-10 14:00:52 +02:00
|
|
|
|
2021-05-30 16:22:56 +02:00
|
|
|
- Read and write any version of PDF file
|
|
|
|
- Provide access to pages, objects, and streams within a PDF file
|
2021-10-11 04:27:09 +02:00
|
|
|
- Support reading of encrypted PDF files
|
2021-04-10 14:00:52 +02:00
|
|
|
- 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
|
|
|
|
|
2021-05-30 13:43:35 +02:00
|
|
|
PDFio is *not* concerned with rendering or viewing a PDF file, although a PDF
|
2021-04-10 14:00:52 +02:00
|
|
|
RIP or viewer could be written using it.
|
|
|
|
|
|
|
|
|
2021-05-02 15:59:51 +02:00
|
|
|
Requirements
|
|
|
|
------------
|
|
|
|
|
2021-05-30 13:43:35 +02:00
|
|
|
PDFio requires the following to build the software:
|
2021-05-02 15:59:51 +02:00
|
|
|
|
|
|
|
- A C99 compiler such as Clang, GCC, or MS Visual C
|
|
|
|
- A POSIX-compliant `make` program
|
|
|
|
- ZLIB (<https://www.zlib.net>) 1.0 or higher
|
|
|
|
|
|
|
|
IDE files for Xcode (macOS/iOS) and Visual Studio (Windows) are also provided.
|
|
|
|
|
|
|
|
|
|
|
|
Documentation
|
|
|
|
-------------
|
|
|
|
|
|
|
|
See the man page (`pdfio.3`), frequently ask questions (`FAQ.md`), and full HTML
|
2021-05-30 13:43:35 +02:00
|
|
|
documentation (`pdfio.html`) for information on using PDFio.
|
2021-05-02 15:59:51 +02:00
|
|
|
|
|
|
|
|
2021-04-10 14:00:52 +02:00
|
|
|
Installing pdfio
|
|
|
|
----------------
|
|
|
|
|
2021-05-30 13:43:35 +02:00
|
|
|
PDFio comes with a portable makefile that will work on any POSIX-compliant
|
2021-05-02 15:59:51 +02:00
|
|
|
system with ZLIB installed. To make it, run:
|
2021-04-10 14:00:52 +02:00
|
|
|
|
|
|
|
make all
|
|
|
|
|
|
|
|
To test it, run:
|
|
|
|
|
|
|
|
make test
|
|
|
|
|
|
|
|
To install it, run:
|
|
|
|
|
|
|
|
make install
|
|
|
|
|
|
|
|
If you want a shared library, run:
|
|
|
|
|
|
|
|
make all-shared
|
|
|
|
make install-shared
|
|
|
|
|
|
|
|
The default installation location is "/usr/local". Pass the `prefix` variable
|
|
|
|
to make to install it to another location:
|
|
|
|
|
|
|
|
make install prefix=/some/other/directory
|
|
|
|
|
|
|
|
The makefile installs the pdfio header to "${prefix}/include", the library to
|
|
|
|
"${prefix}/lib", the `pkg-config` file to "${prefix}/lib/pkgconfig", the man
|
|
|
|
page to "${prefix}/share/man/man3", and the documentation to
|
2021-04-10 14:06:37 +02:00
|
|
|
"${prefix}/share/doc/pdfio".
|
2021-04-10 14:00:52 +02:00
|
|
|
|
|
|
|
The makefile supports the following variables that can be specified in the make
|
|
|
|
command or as environment variables:
|
|
|
|
|
|
|
|
- `AR`: the library archiver (default "ar")
|
|
|
|
- `ARFLAGS`: options for the library archiver (default "cr")
|
|
|
|
- `CC`: the C compiler (default "cc")
|
|
|
|
- `CFLAGS`: options for the C compiler (default "")
|
|
|
|
- `CODESIGN_IDENTITY`: the identity to use when code signing the shared library
|
|
|
|
on macOS (default "Developer ID")
|
|
|
|
- `COMMONFLAGS`: options for the C compiler and linker (typically architecture
|
|
|
|
and optimization options, default is "-Os -g")
|
|
|
|
- `CPPFLAGS`: options for the C preprocessor (default "")
|
2021-07-18 22:46:34 +02:00
|
|
|
- `DESTDIR` and `DSTROOT`: specifies a root directory when installing
|
2021-04-10 14:00:52 +02:00
|
|
|
(default is "", specify only one)
|
|
|
|
- `DSOFLAGS`: options for the C compiler when linking the shared library
|
|
|
|
(default "")
|
|
|
|
- `LDFLAGS`: options for the C compiler when linking the test programs
|
|
|
|
(default "")
|
|
|
|
- `LIBS`: library options when linking the test programs (default "-lz")
|
|
|
|
- `RANLIB`: program that generates a table-of-contents in a library
|
|
|
|
(default "ranlib")
|
|
|
|
- `prefix`: specifies the installation directory (default "/usr/local")
|
|
|
|
|
|
|
|
|
2021-05-02 15:59:51 +02:00
|
|
|
Visual Studio Project
|
|
|
|
---------------------
|
|
|
|
|
2021-06-07 23:06:13 +02:00
|
|
|
The Visual Studio solution ("pdfio.sln") is provided for Windows developers and
|
2021-09-27 14:11:53 +02:00
|
|
|
generates the PDFIO1 DLL. You can also use NuGet to install the `pdfio_native`
|
|
|
|
package.
|
2021-05-02 15:59:51 +02:00
|
|
|
|
|
|
|
|
2021-05-01 13:43:39 +02:00
|
|
|
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
|
|
|
|
|
|
|
|
You can reproduce this with the makefile using:
|
|
|
|
|
2021-09-27 16:23:32 +02:00
|
|
|
sudo make COMMONFLAGS="-Os -mmacosx-version-min=10.14 -arch x86_64 -arch arm64" install
|
2021-05-01 13:43:39 +02:00
|
|
|
|
|
|
|
|
2021-04-10 14:00:52 +02:00
|
|
|
Legal Stuff
|
|
|
|
-----------
|
|
|
|
|
2021-05-30 13:43:35 +02:00
|
|
|
PDFio is Copyright © 2021 by Michael R Sweet.
|
2021-04-10 14:00:52 +02:00
|
|
|
|
|
|
|
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.
|