2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-11-14 08:44:04 +00:00
Go to file
Jay Berkenbilt 3c4110184c Add specially crafted test cases for EOF error
This replaces a PDF from the wild that I didn't want to include in the
test suite but used to verify the original fix.
2012-08-11 12:36:57 -04:00
doc update release date to actual date 2008-04-29 12:55:25 +00:00
examples Restore coverage case 2012-07-25 22:32:14 -04:00
include/qpdf Refactor: move resolution of literal to its own method 2012-08-11 09:22:59 -04:00
libqpdf Bug fix: let EOF resolve literal token 2012-08-11 09:29:04 -04:00
libtests Add test code for Pl_Concatenate 2012-06-27 10:20:47 -04:00
m4 Update autoconf and libtool files 2012-06-20 08:50:33 -04:00
make Fix order of build flags. 2012-06-21 21:24:06 -04:00
manual Update version to 3.0.0 2012-08-02 06:52:33 -04:00
qpdf Add specially crafted test cases for EOF error 2012-08-11 12:36:57 -04:00
qtest fix qtest-driver 2009-10-14 00:57:04 +00:00
zlib-flate ABI change: fix use of off_t, size_t, and integer types 2012-06-20 15:20:26 -04:00
.gitignore Add doc files to .gitignore 2012-06-21 16:36:34 -04:00
Artistic-2.0 update release date to actual date 2008-04-29 12:55:25 +00:00
autoconf.mk.in Add QPDF_ to some variables used by the test suite 2012-07-28 19:07:37 -04:00
autogen.sh create autogen.sh for convenience 2010-03-27 13:17:17 +00:00
ChangeLog Bug fix: let EOF resolve literal token 2012-08-11 09:29:04 -04:00
config-mingw32 Visual C++ and mingw32 fixes for large files 2012-06-26 23:05:59 -04:00
config-mingw64 Adjust Windows built to support 32-bit and 64-bit builds 2012-06-21 21:22:35 -04:00
config-msvc Adjust Windows built to support 32-bit and 64-bit builds 2012-06-21 21:22:35 -04:00
config.guess Update autoconf and libtool files 2012-06-20 08:50:33 -04:00
config.sub Update autoconf and libtool files 2012-06-20 08:50:33 -04:00
configure.ac Update version to 3.0.0 2012-08-02 06:52:33 -04:00
copy_dlls Adjust Windows built to support 32-bit and 64-bit builds 2012-06-21 21:22:35 -04:00
INSTALL update release date to actual date 2008-04-29 12:55:25 +00:00
install-sh Update autoconf and libtool files 2012-06-20 08:50:33 -04:00
ispell-words Fix spelling errors 2012-07-29 14:44:12 -04:00
libqpdf.map Add symbol versioning 2012-06-20 15:18:12 -04:00
libqpdf.pc.in Add pkg-config support 2012-06-21 16:36:34 -04:00
ltmain.sh Update autoconf and libtool files 2012-06-20 08:50:33 -04:00
make_dist Fix version pattern for configure.ac 2012-06-21 17:28:19 -04:00
make_windows_releases Fix typo in release instructions 2012-07-29 16:29:15 -04:00
make_windows_releases-finish Adjust Windows built to support 32-bit and 64-bit builds 2012-06-21 21:22:35 -04:00
make_windows_releases-msvc Adjust Windows built to support 32-bit and 64-bit builds 2012-06-21 21:22:35 -04:00
Makefile Add QPDF_ to some variables used by the test suite 2012-07-28 19:07:37 -04:00
mkinstalldirs update libtool and automake pieces 2009-09-26 15:42:39 +00:00
qpdf.spec Update version to 3.0.0 2012-08-02 06:52:33 -04:00
README Fix spelling errors 2012-07-29 14:44:12 -04:00
README-what-to-download.txt Minor corrections to download instructions 2012-07-31 13:51:14 -04:00
README-windows-install.txt new 2009-10-23 16:58:52 +00:00
README-windows.txt Fix spelling errors 2012-07-29 14:44:12 -04:00
README.maintainer Minor update to release checklist 2012-07-31 13:53:00 -04:00
TODO Add specially crafted test cases for EOF error 2012-08-11 12:36:57 -04:00

This is the QPDF package.  Information about it can be found at
http://qpdf.sourceforge.net.  The source code repository is hosted
at github: https://github.com/qpdf/qpdf.

QPDF is copyright (c) 2005-2012 Jay Berkenbilt

This software may be distributed under the terms of version 2 of the
Artistic License which may be found in the source distribution as
"Artistic-2.0".  It is provided "as is" without express or implied
warranty.


Prerequisites
=============

QPDF depends on external libraries "zlib" and "pcre".  These are part
of virtually all Linux distributions and are readily available;
download information appears in the documentation.  For Windows, you
can download pre-built binary versions of those libraries for some
compilers; see README-windows.txt for additional details.

QPDF requires a C++ compiler that works with STL.  Your compiler must
also support "long long".  Almost all modern compilers do.  If you are
trying to port qpdf to a compiler that doesn't support long long, you
could change all occurrences of "long long" to "long" in the source
code, noting that this would break binary compatibility with other
builds of qpdf.  Doing so would certainly prevent qpdf from working
with files larger than 2 GB, but remaining functionality would most
likely work fine.  If you built qpdf this way and it passed its test
suite with large file support disabled, you could be confident that
you had an otherwise working qpdf.


Licensing terms of embedded software
====================================

QPDF makes use of zlib and pcre for its functionality.  These packages
can be downloaded separately from their own download locations, or
they can be downloaded in the external-libs area of the qpdf download
site.

The Rijndael encryption implementation used as the basis for AES
encryption and decryption support comes from Philip J. Erdelsky's
public domain implementation.  The files libqpdf/rijndael.cc and
libqpdf/qpdf/rijndael.h remain in the public domain.  They were
obtained from

  http://www.efgh.com/software/rijndael.htm
  http://www.efgh.com/software/rijndael.txt


Building on UNIX/Linux
======================

For UNIX and UNIX-like systems, you can usually get by with just

./configure
make
make install

Packagers may set DESTDIR, in which case make install will install
inside of DESTDIR, as is customary with many packages.  For more
detailed general information, see the "INSTALL" file in this
directory.  If you are already accustomed to building and installing
software that uses autoconf, there's nothing new for you in the
INSTALL file.


Building on Windows
===================

QPDF is known to build and pass its test suite with mingw (latest
version tested: gcc 4.6.2), mingw64 (latest version tested: 4.7.0) and
Microsoft Visual C++ 2010, both 32-bit and 64-bit versions.  MSYS plus
ActiveState Perl is required to build as well in order to get make
and other related tools.  See README-windows.txt for details on how to
build under Windows, see README-windows.txt.


Additional Notes on Build
=========================

QPDF's build system, inspired by abuild (http://www.abuild.org), can
optionally use its own built-in rules rather than using libtool and
obeying the compiler specified with configure.  This can be enabled by
passing --with-buildrules=buildrules where buildrules corresponds to
one of the .mk files (other than rules.mk) in the make directory.
This should never be necessary on a UNIX system, but may be necessary
on a Windows system.  See README-windows.txt for details.  There is a
gcc-linux.mk file enable "gcc-linux" build rules, but it is intended
to help test the build system; Linux users should build with the
"libtools" rules, which are enabled by default.

The QPDF package provides some executables and a software library.  A
user's manual can be found in the "doc" directory.  The docbook
sources to the user's manual can be found in the "manual" directory.

The software library is just libqpdf, and all the header files are in
the qpdf subdirectory.  If you link statically with -lqpdf, then you
will also need to link with -lpcre and -lz.  The shared qpdf library
is linked with -lpcre and -lz, and none of qpdf's public header files
directly include files from pcre or libz, so in many cases, qpdf's
development files are self contained.

To learn about using the library, please read comments in the header
files in include/qpdf, especially QPDF.hh, QPDFObjectHandle.hh, and
QPDFWriter.hh.  You can also study the code of qpdf/qpdf.cc, which
exercises most of the public interface.  There are additional example
programs in the examples directory.  Reading all the source files in
the qpdf directory (including the qpdf command-line tool and some test
drivers) along with the code in the examples directory will give you a
complete picture of every aspect of the public interface.


Additional Notes on Test Suite
==============================

By default, slow tests are disabled.  Slow tests include image
comparison tests and large file tests.  Image comparison tests can be
enabled by passing --enable-test-compare-images to ./configure.  This
was on by default in qpdf versions prior to 3.0, but is now off by
default.  Large file tests can be enabled by passing
--with-large-file-test-path=path to ./configure or by setting the
QPDF_LARGE_FILE_TEST_PATH environment variable.  Run ./configure
--help for additional options.  The test suite provides nearly full
coverage even without these tests.  Unless you are making deep changes
to the library that would impact the contents of the generated PDF
files or testing this on a new platform for the first time, there is
no real reason to run these tests.  If you're just running the test
suite to make sure that qpdf works for your build, the default tests
are adequate.  The configure rules for these tests do nothing other
than setting variables in autoconf.mk, so you can feel free to turn
these on and off directly in autoconf.mk rather than rerunning
configure.

If you are packaging qpdf for a distribution and preparing a build
that is run by an autobuilder, you may want to add the
--enable-show-failed-test-output to configure options.  This way, if
the test suite fails, test failure detail will be included in the
build output.  Otherwise, you will have to have access to the
qtest.log file from the build to view test failures.  The debian
packages for qpdf enable this option, for example.