home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2002 February
/
PCWorld_2002-02_cd.bin
/
Software
/
Vyzkuste
/
pdflib
/
pdflib-4.0.1.sit
/
pdflib-4.0.1
/
doc
/
changes.txt
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
Text File
|
2001-07-04
|
117.0 KB
|
3,092 lines
|
[
TEXT/ttxt
]
V4.0.1 (May 18, 2001)
=====================
Bug fixes and enhancements
==========================
- Removed the time-bomb feature of the beta versions which accidentally
was still present in the release version of PDFlib 4.0.0 (p_basic.c).
- PDF_show_boxed() erroneously returned the value 1 if the text completely
fit in the box, and the last character was a newline (p_text.c).
- Fixed a bug in the image mask handling which had some interaction with
the total number of images, and the fact whether or not images had
been closed and therefore image handles reused (p_image.c).
- Non-interlaced PNG images were erroneously rejected when used as a
mask (p_image.c).
- Individual strips of separate multi-strip TIFF images could get mixed
up under certain circumstances when the first image had already been
closed before placing subsequent images (p_image.c, p_image.h, p_intern.h,
p_basic.c).
- The values of ascender and descender were wrong for TrueType fonts since
we picked tab_hhea->ascender instead of tab_OS_2->sTypoAscender
(p_truetype.c).
- The scope check in PDF_stringwidth2() was too strict (p_text.c).
- /FontName was garbled on EBCDIC platforms, but it's unused anyway (p_font.c).
- Due to a bug in pdf_make_quoted_name() quoted characters in spot color names
could appear with wrong hex codes (p_util.c).
- Creating and deleting a PDFlib object without any documents created
resulted in a wrong exception (p_stream.c)
- Implements host encoding support for AS/400 and S/390 (p_util.c, p_font.c,
p_intern.h)
- Using a CID font caused a crash due to inappropriately freeing static strings
(p_cid.h)
- EBCDIC and CID encoding were rejected in PDF_show_boxed() even when no box
justification was requested (width=0 and height=0) (p_text.c).
Build process and platform support
==================================
- Minor modifications for AIX compatibility (configure.in, tiff/tiff.h).
- AS/400 fine-tuning (p_config.h, several *.c).
- Fixed MVS-related macros (p_config.h)
- Removed unnecessary PHP make targets which caused an error (Makefile.in,
configure.in)
Bindings
========
- C:
- Replaced the deprecated function setrgbcolor() with PDF_setcolor()
in the pdfclock sample.
- C++:
- Replaced the deprecated function setrgbcolor() with PDF_setcolor()
in the pdfclock sample.
- Java:
- Replaced the deprecated function setrgbcolor() with PDF_setcolor()
in the pdfclock sample.
- A few mainframe-related fixes in the wrapper code (pdflib_java.c).
- Clear pending exceptions if any of the JNI functions in the initialization
fails since JNI doesn't allow more than one pending exception.
(pdflib_java.c).
- Makes the private functions PDF_new() and PDF_delete() in the PDFlib
Java object synchronized (pdflib.java).
- Modified the internal version of the Java wrapper for use on the
AS/400 (pdflib_java.c).
- Perl:
- Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
in the pdfclock sample.
- PHP:
- Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
in the pdfclock sample.
- A required image handle conversion was missing in the wrapper code for
PDF_open_image_file(), resulting in erroneous error messages when
trying to mask images (pdf.c).
- Python:
- Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
in the pdfclock sample.
- Tcl:
- Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
in the pdfclock sample.
- RPG
- Introduced a new binding for ILE-RPG on the AS/400 (bind/rpg/*).
V4.0.0 (April 18, 2001)
=======================
Bug fixes and enhancements
==========================
- Implements a check in PDF_delete() in order to make sure that the caller
acutally fetched the last chunk of PDF data via PDF_get_buffer()
(p_intern.h, p_basic.c, p_stream.c).
- Several modifications in the TrueType module (p_truetype.c):
- Allow TrueType symbol fonts (such as Webdings and Wingdings) to be used
with "builtin" encoding.
- When font warnings are enabled (default) issue a concise error message
when a TrueType font file can't be opened or read, or is empty.
- The TrueType module didn't always correctly distinguish between
exception and error return when a problem with a font was detected.
- Fine-tuned the trace debug facility (several *.c).
- Optimize the underline/overline/strikeout functions for empty text
strings (p_text.c).
- PDF_continue_text2() didn't correctly deal with a NULL text argument
under certain conditions, and failed to enter a text block and set
the text parameters (p_text.c).
- Throw an exception in PDF_show_boxed() if the current font uses CID
or EBCDIC encoding (p_text.c).
- Change the scope back to object if fopen() fails in PDF_open_file().
This guards against clients which fail to check the return value of
PDF_open_file() (p_basic.c).
- PDF_open_image() didn't set the use_raw flag for JPEG- and CCITT-
compressed images, resulting in bad output filters (p_image.c).
- Implements hooks for fetching encoding definitions from the host system
(p_font.c, p_util.c).
- Modifies the error handling machinery so that the error handler is never
called with a NULL PDF pointer, even when the initial PDF allocation in
PDF_new2() goes wrong. This way error handlers installed by the client
are guaranteed to have access to thread- or object-specific data in all
cases (p_basic.c).
Build process and platform support
==================================
- Adjusts more language bindings to Mac OS X (see below).
- Disable the PHP binding if an external library was configured (configure.in).
- Moves an inherited LDFLAGS variable to the front of EXTERNALLIBS in order
to make external -L paths work (configure.in).
- Installs the pdflib-config script to make it more useful (Makefile.in).
- Extends the pdflib-config script to include auxiliary information such
as PDFlib's install path, binding information, PDI existence, and a summary
(pdflib-config.in).
- AS/400 portability mods and support for more compile-time code pages
(p_stream.c, p_config.h).
- More MVS portability fixes (p_config.h tiff/port.h).
- Change the libtool version number to 2:0:1 in order to somehow fix the bug
in 3.03 which incorrectly increased the age entry (configure.in).
Bindings
========
- Perl:
- Always call PDF_delete() in the error handler since the PDF pointer is now
guaranteed to be different from NULL (pdflib_pl.c).
- Removed -lm for $PERLLINK on HP-UX (configure.in).
- PHP:
- Cleans up the configure machinery which no longer must check for the
presence of any auxiliary library (config.m4).
- Python:
- Always call PDF_delete() in the error handler since the PDF pointer is now
guaranteed to be different from NULL (pdflib_py.c).
- Introduces a hack for renaming the Python wrapper library on Mac OS X from
libpdflib_py.dylib to pdflib_py.so(!), which apparently is what Python
expects (Makefile.in).
- Tcl:
- Removed the pkgIndex.tcl Makefile target and rule because we no longer
must build the index file dynamically (Makefile.in).
- Introduces a hack for renaming the Tcl wrapper library on Mac OS X from
libpdflib_tcl.dylib to pdflib_tcl.dylib (Makefile.in).
V4.0.0beta3 quick fix (April 9, 2001)
=====================================
Bug fixes and enhancements
==========================
- Add /Matrix and /FormType entries to the form xobjects dictionary.
Although these are not required according to the PDF reference (new edition),
they _are_ required according to the PDF reference (old edition) and -- more
importantly -- by several PDF consumers such as Ghostscript, some
Adobe RIPs, and the PostScript output of Acrobat 4.0 (but not 4.05).
(p_template.c, pdi.c).
V4.0.0beta3 (April 5, 2001)
===========================
Bug fixes and enhancements
==========================
- Consistently use the Windows API name for TrueType fonts, regardless of
whether they have been read from file or retrieved from the host system
(p_truetype.c).
- TrueType symbol fonts couldn't be used (p_truetype.c).
- Implements support for flate-compressed TIFF images (p_tiff.c, tiff/*.c).
- Start a new text block when a font set if we are not currently in a text
block. This seems to be required by some Adobe RIPs and some third-party
PDF consumers, although explicitly allowed in the PDF reference (p_font.c).
- Throws an exception when the PDF document is empty (p_basic.c).
- Fixed a memory overwrite in XObjects handling (p_image.c).
- Fixed several memory leaks in the PNG module, and dropped support
for libpng versions older than 0.88 (p_png.c).
- Changes the PNG handler so that we can process simple PNG images even
without libpng attached (p_png.c).
- Resources were dropped between documents, meaning that for example
fonts had to be configured again and again for multiple output documents
with the same PDFlib instance (p_basic.c).
- Reworked parameter handling, and introduced a new table for important
parameter properties such as the scope (p_params.c, p_params.h).
- Updated the utility for converting font metrics to a C header file
(util/compile_metrics.c).
- Regenerated the built-in metrics for the core fonts with the following
changes (p_metrics.h):
- Uses the new Adobe AFMs as input which have minor changes.
- Correctly use the width of the space character for all undefined
characters instead of the fixed value 250.
- Uses the current encoding definitions, which had a few updates.
- Generate more tense output.
- Modified the getopt() stuff for easier building the demo clients on
Windows (clients/*.c).
- Fixed a memory leak in the GIF reader when the requested file couldn't
be opened (p_gif.c).
- Fixed memory leaks in the font engine, related to TrueType fonts and
the builtin core fonts (p_font.c, p_truetype.c).
- The default for floating point output accuracy (3) was too small,
as evidenced by the pdfclock example. Increased to 4 (p_basic.c).
- Fixed a nasty bug in pdf_compress_init(): due to missing initialization
importing PDF pages on an otherwise empty page could result in a crash
on some platforms (p_stream.c).
Build process and platform support
==================================
- Changes a few details for better MVS support.
- Updates the Mac project files including support for the language
bindings (*.mcp).
- Updated the project files for Borland C++ Builder (*.brp, *.bpf).
- Consolidated the predefined encodings into a single header file
(p_encoding.h).
- Improved portability in code and build process for a number of Unix
platforms.
- Replaced the GIF test image with a new one (test/machine.gif).
- Statically links all C samples and demo programs (*/Makefile.in,
configure.in).
Bindings
========
- C:
- Changes all clients to return 0 from the main program (*.c).
- Runs the tests without libtool since we link statically (Makefile.in).
- C++:
- Adds typedefs to support the notion that all functions which are
passed to PDFlib must be pure C (as opposed to C++) functions (pdflib.h,
pdflib.hpp, pdflib.cpp).
- Runs the tests without libtool since we link statically (Makefile.in).
- Drops support for the Watcom compiler (pdflib.hpp, pdflib.cpp).
- Changes namespace handling for non-gcc compilers (configure.in).
- Adds casts to pacify the Sun compiler (image.cpp, personalize.cpp).
- Java:
- Adds a hack for Mac OS X to help the test and install process run even
though OS X has its own idea of JNI library naming conventions
(Makefile.in).
- Perl:
- Runs the tests without libtool since we supply -I options (Makefile.in).
- Adds -lm (or equivalent) to the list of libraries against which the
Perl wrapper is linked. This is required, for example, for some builds
of Perl on Solaris (configure.in).
- PHP:
- Fixed a crash which was caused by a typo in the PDI memory functions.
- Adds documentation on the PHP/PDFlib build process (readme.txt).
- Python:
- Fixes a systematic bug in all wrappers for the new 4.0 functions
(pdflib_py.c, pdflib/pdflib.i).
- Adds PDI examples (personalize.py, quickreference.py).
- Tcl:
- Renames the Tcl/PDFlib wrapper library on the Mac to pdflib_tcl.shlb,
which is the name returned by Tcl's [info sharedlibextension] command
(*.mcp).
V4.0.0 beta2 (March 23, 2001)
=============================
Bug fixes and enhancements
==========================
- Removes all attempts to "repair" the file if API calls are incomplete,
or in bad order. This greatly simplifies cleanup in case of errors.
- Fully implements a scoping system which enforces the scoping rules
documented in the manual. This may break clients which do not adhere
to the scoping rules, but got away with the old implementation,
potentially producing bad PDF output (pdflib/*.c, p_intern.h).
- The "imagewidth" and "imageheight" parameters are now supported for
templates, too (p_template.c).
- Implements custom memory handlers for libpng and tifflib (png/pngmem.c,
pdflib/p_png.c, pdflib/p_tiff.c).
- Relaxed the encoding check for AFM files since so many AFM files
out there are just plain wrong (mostly those generated by Fontographer
(p_afm.c).
- Improves the Unicode bookmark samples so that they work correctly on
EBCDIC platforms (pdftest.c).
- Implements pdf_vsprintf() which does the "right thing" for all kinds
of formatted PDF output. In addition, we finally get rid of cursed NLS
(pdflib/*.c, pdi/*.c).
- Moved the PDI dummy functions to p_template.c, and removed p_pdi.c from
the distribution fileset.
- Delays resource cleanup until PDF_delete() (instead of PDF_close()) in
order to keep configuration information across PDF output documents
(p_basic.c).
- Implements a real tree structure for the /Pages tree instead of a linear
array. This greatly improves Acrobat's performance when navigating
_very_ large documents (p_basic.c, p_intern.h).
- Fixes a problem related to TrueType font names which resulted in
bad font cache misses due to internal name mismatches. We cured this
by storing the PostScript name of a TrueType font separately (name
table entry 6. The fullName field is used for this since fullName was
unused anyway (p_font.h, p_font.c, p_truetype.c, p_afm.c, p_pfm.c,
p_metrics.h, util/compile_metrics.c).
- pdflib.upr was loaded to early. This especially affected host fonts
where no upr file is required, but an exception was thrown nevertheless
(p_util.c).
- Added "CharacterSet" to the list of recognized AFM keywords (p_afm.c).
- Modifies the TrueType parser to gracefully deal with Unicode-based
Mac fonts, although these are not yet supported (p_truetype.c).
- Replaces the core 14 AFM files with newer versions which cover the
ExtendedRoman character set (315 instead of 229 glyphs), and are therefore
better suited for PDFlib's powerful encoding machinery (fonts/*.afm).
- Changed the accuracy of imagewidth and imageheight from int to float
to account for imported PDF pages and templates (p_image.h, p_tiff.c,
p_ccitt.c, p_jpeg.c, p_gif.c, p_image.c, p_template.c).
Build process and platform support
==================================
- Supports local (uninstalled) static versions of the auxiliary libraries
via the LDFLAGS environment variable (configure.in).
- A variety of portability fixes in the auxiliary libraries (tiff/*,
png/*, flate/*) plus a few more in PDFlib (pdflib/*).
- Modifies the MSVC++ project files for the new library structure (*.dsw,
*.dsp).
- Brings the CodeWarrior project file for Mac up to date (PDFlib.mcp).
- Several bug fixes and improvements in the configure machinery
(configure.in, pdflib-config.in, */Makefile.in).
Bindings
========
Java:
- show_boxed didn't correctly retrieve its text argument as a
Unicode string, resulting in wrong output for non-Latin-1 characters
(pdflib_java.c).
- stringwidth() didn't retrieve its text argument as a Unicode string
(pdflib_java.c).
Tcl:
- Fully implements the use of Tcl's stub feature which allows us to
use a single library with different Tcl versions (pdflib_tcl.c).
- Modifies the index file so that it no longer requires the library
name and the list of function names (pkgIndex.tcl).
- PDF_show_boxed didn't correctly retrieve its text argument as a
Unicode string, resulting in wrong output for non-ASCII characters
(pdflib_tcl.c).
- PDF_stringwidth() didn't retrieve its text argument as a Unicode string
(pdflib_tcl.c).
V4.0.0 beta1 (March 02, 2001)
=============================
New features
============
- Implements support for the pattern color space (p_pattern.c, p_intern.h,
p_basic.c, pdflib.h).
- Adds support for spot color (p_color.c, p_intern.h, pdflib.h).
- Adds a hook for attaching the PDF import library PDI (p_pdi.c).
- Adds Unicode handling for TrueType and PostScript fonts (p_unicode.c,
p_font.c, p_truetype.c).
- Implements new parameters:
major/minor/revision/version
pdi
pdiwarning
CropBox/llx/lly/urx/ury
BleedBox/llx/lly/urx/ury
TrimBox/llx/lly/urx/ury
ArtBox/llx/lly/urx/ury
Bug fixes and enhancements
==========================
- Major restructuring in order to better localize data types and
related functions (most *.c and *.h).
- Fixed a bug in the MacRoman encoding table: guilsinglleft and guilsinglright
had a letter missing in their name. Since we never write MacRomanEncoding
explicitly, the characters were available, but their widths were retrieved
wrongly from an AFM file (e_macroman.h).
- Added the missing Euro glyph to the cp1250 encoding table (cp1250.enc).
Build process and platform support
==================================
- Changes the library file name suffix for Mac OS X server (Rhapsody)
from .so to .dylib (config/ltconfig).
- Integrated zlib into the PDFlib distribution, configure, and make process,
including a libtool-based Makefile. Similarly for parts of libpng and
libtiff (configure.in, */Makefile.in, tiff/*, png/*, flate/*).
- The search for Python's shared lib path could result in multi-line
output under certain circumstances. We work around this with more
sophisticated filtering of Python's sys.path, contributed by a user
(configure.in).
Distribution
============
- Adds the Lucidux Sans PostScript font as a sample (fonts/lcdxsr.*).
- Adds code page definitions for all ISO 8859 flavors and Windows 125X
code pages (fonts/*.cpg).
- Adds a PDI demo client in C (pdfimpose.c), and the quick reference
and personalize demos for all supported language bindings.
- Adds a few user-contributed improvements to the image client (pdfimage.c).
- Removes config/pdflib.m4 since it is no longer required.
Bindings
========
PHP:
- Adds a supported language binding for PHP (bind/php/*).
Java:
- Introduces PDF_VOLATILE in order to prevent scores of compiler
warnings when building the wrapper (pdflib_java.c).
Perl:
- Introduces PDF_VOLATILE in order to prevent scores of compiler
warnings when building the wrapper (pdflib_pl.c).
Python:
- Introduces PDF_VOLATILE in order to prevent scores of compiler
warnings when building the wrapper (pdflib_py.c).
Tcl:
- Implements an initialization function to make the PDFlib extension
work with safe builds of the Tcl interpreter (pdflib_tcl.c).
- Introduces PDF_VOLATILE in order to prevent scores of compiler
warnings when building the wrapper (pdflib_tcl.c).
V3.5.0 (February 01, 2001)
==========================
This version has only been released to a few customers.
New features
============
- Makes the CMYK functions supported API members (p_color.c).
- Makes PDF_arcn() a supported API function (p_draw.c).
- Makes PDF_add_thumbnail() a supported API function (p_draw.c).
- Implements the template feature (p_image.c, p_template.c, p_intern.h,
p_basic.c, p_text.c, pdflib.h, Makefile.in).
- Implements TrueType font support (p_font.c, p_afm.c, p_pfm.c, p_font.h,
p_util.c, p_basic.c, p_truetype.c, p_truetype.h, p_intern.h, p_cid.h,
p_metrics.h, Makefile.in).
Bug fixes and enhancements
==========================
- PDF_open_mem() didn't work due to a typo (p_basic.c).
- PDF_set_parameter(p, "flush", "none") didn't work due to a typo (p_basic.c).
Build process, distribution, and platform support
=================================================
- Improvements for Mac OS X:
- Makes libtool generate shared libraries (.dylib) on Mac OS X (ltconfig,
ltmain.sh).
Distribution
============
- Introduces the new major.minor.revision version numbering scheme
(many files).
Bindings
========
Java:
- Makes the Java wrapper compatible with Mac OS X (pdflib_java.c).
Tcl:
- Configure now finds the Tcl header on Mac OS X (configure.in).
V3.03 (December 22, 2000)
=========================
Bug fixes and enhancements
==========================
- Contrary to the documentation, a == sequence in the UPR file didn't
guarantee absolute file names (no directory prefix applied) if a
prefix has been set using PDF_set_parameter(). This especially affected
the ActiveX edition where the wrapper always set a prefix, and
absolute resource names couldn't effecitvely be used. Similarly,
the "==" syntax now works with when resources are set dynamically via
PDF_set_parameter(). (p_util.c, p_basic.c).
- Makes the JPEG reader more robust against damaged files (p_jpeg.c).
- Implements an option in the image converter for printing details
for damaged image files (clients/pdfimage.c).
- Implements PDF_get_value() for the following parameters:
leading, textrise, horizscaling, textrendering, charspacing, wordspacing.
Implements PDF_get_parameter() for the following parameters:
overline, underline, strikeout.
- Reworks implementation and documentation of PDF_arc(), and fine-tunes
several other graphics functions in the process (p_draw.c):
- Re-implements the algorithm for cutting down arcs into smaller
segments. This fixes a number of subtle bugs with certain parameter
combinations, and introduces clearer documentation for all cases,
including degenerate ones.
- Defines the magic arc variable for the PDF_circle() algorithm
with 8 instead of 4 decimal places in order to increase the
accuracy (p_draw.c).
- Introduces clear semantics for the behaviour of PDF_arc() and
other functions when a current point is available, and when no
current point has previously been set.
- Introduces a (currently unsupported) PDF_arcn() function for
drawing arcs in clockwise direction.
- Removes the clearing loop for debug flags in PDF_new2() since the
memset() for the PDF structure clears those anyway (p_basic.c).
- Fixes subtle bugs in the text handling (p_text.c):
- The combination of word or character spacing != 0 and underline/
overline/strikeout text resulted in wrong text positioning.
- After PDF_show_boxed() the call PDF_get_value("texty",0) returned
a vertical position which was one line too high under the same
circumstances as above.
- Allows the external and internal data types for floating point
calculations to be redefined via a #define. This is intended for
applications which require improved accuracy, and not supported in the
general case due to platform and binary compatibility issues (pdflib.h).
- Implements a check to make sure that PDF_save() and PDF_restore() calls
are balanced at the end of a page (p_basic.).
- Removed the SWIG preprocessor conditionals since we don't use SWIG
any more (pdflib.h).
- Fixes a bug in PDFlib's object machinery, related to PDF page object
numbers. Fortunately, the bug occurred only under very rare and subtle
circumstances, but was severe nevertheless because it resulted in
damaged PDF output, and erroneous "allocated but not used" messages
(p_basic.c).
- Changes the output accuracy of floating point numbers from four to
six decimal places. This slightly affects output file size, but was
necessary to defeat some accuracy problems. For example, stitching
individual stripes of striped TIFF images could lead to visual
artifacts in Acrobat (p_util.c).
- Corrected a typo in the error message for bad page sizes with Acrobat
4 compatibility (p_basic.c).
- Implements support for setting the document's base URI (p_intern.h,
p_basic.c).
- Changes the PNG error handling in order to make it source- and binary-
compatible with libpng 1.08. and 1.1 (p_png.c).
- Fixes two problems in PDF_show_boxed() (p_text.c):
- Certain forced line breaks could cause a single character to disappear.
- Forced line breaks could cause the preceding line to be ragged even
in "justify" or "fulljustify" mode.
- Improves TIFF handling:
- Does no longer throw an exception if the imagewarning parameter is
set to true, and the requested image number in a multi-page TIFF can
not be retrieved (p_tiff.c).
- Moves an increment operator outside a function call because the
variable has been used as function parameter twice. This is not
portable because the order of parameter evaluation is platform-
dependent. The Compaq True64 compiler correctly spotted this (p_tiff.c).
- Rejects TIFF images with a color depth other than 1, 2, 4, or 8 bits
per sample since other values are not supported by PDF (p_tiff.c).
- Changed the parameter handling for CCITT G3-compressed TIFF images,
preventing "Read less image data than expected" messages in Acrobat
(p_tiff.c).
- Failure of the TIFF library to read an image file could result in a
crash (p_tiff.c).
- Made the AFM parser stricter in checking the 'StartCharMetrics' entry
against the actual number of character entries in the file. This
makes PDFlib more robust in case of bad AFMs, but may result in
AFMs being rejected which previously have been accepted (p_afm.c).
- Implements support for an arbitrary number of user-defined document
information fields (p_hyper.c, p_intern.h).
- The allowed range in the encoding parser was wrong, and must be 0-255
instead of 1-256 (p_util.c).
- Changed two entries in the Latin 2 encoding file since Adobe fonts
use the character names T/tcommaaccent instead of T/tcedilla
(fonts/iso8859-2.enc).
- Adds unsupported code for generating the Crop, Bleed, Trim, and
Art boxes in addition to the MediaBox. Later these will be adjustable
by the client (p_intern.h, p_basic.c).
- Prevents multiple PDF_open_*() calls without a matching PDF_close()
(p_basic.c).
- Referenced images were lacking an endobj token at the end of their
(empty) data section (p_image.c).
- Prevents the use of flush points from language bindings other than
C or C++ (p_basic.c).
- Two format strings for error messages were wrong in PDF_get_parameter()
(p_basic.c).
- Issue a NonfatalError when the obsolete function PDF_endpath() is
called (p_draw.c).
- Calling PDF_get_parameter(p, "resy", image) with an invalid image
parameter resulted in a crash. Ironically, the crash occurred due to
a malformed argument when the error message was formatted (p_basic.c).
- The test program accidentally set the embedding parameter in several
samples to 1 instead of 0 (pdftest.c).
- Implements the "fontwarning" parameter. The default value is "true";
setting it to "false" makes PDF_findfont() return -1 instead of throwing
an exception (p_basic.c, p_font.c, p_util.c, p_intern.h).
- Using PDF_findfont() before a document has been opened now results
in a RuntimeError (p_font.c).
- Implements a thumbnail hook for a customer. However, this hook is
not available in the general version, and not yet supported in
language bindings other than C (p_image.c).
- Allows the base 14 fonts to be embedded (p_fonts.c).
- Documents and implements the fact that /Producer and /CreationDate
are not allowed as user-defined info keys (p_hyper.c).
- Ensures that PDF_setfont() and PDF_stringwidth()/PDF_stringwidth2()
cannot be called outside of page descriptions (p_text.c, p_font.c).
- Safeguards against internal attempts at malloc()'ing 0 bytes (p_basic.c).
- Fixes a number of EBCDIC-related bugs:
- The description and author fields in PDF_attach_file() haven't been
properly converted to PDFDocEncoding (p_annots.c).
- PFA font files were treated wrongly (p_font.c).
- PFM metrics file handling didn't work (p_pfm.c).
- The "ebcdic" value of the encoding enum was wrong. This resulted in the
compiled-in metrics not being found on native EBCDIC platforms
(p_intern.h).
- The debug array in the PDF struct was too small for use with
control characters from the EBCDIC character set (p_intern.h).
- The test for compilation on EBCDIC platforms didn't work reliably
(p_config.h).
- Introduces a flavor of the poem text where German special characters
are encoded for EBCDIC (pdftest.c).
- The Unicode sample for document info entries was defined too ASCII-
centric in the demo program, and produced bad results (pdftest.c).
- Fixes a typo in the unsupported CMYK functions (p_color.c).
- Fixes the compile_metrics utility which was broken (util/compile_metrics.c).
- Font metrics read in from a PFM file caused a memory leak. The function
pdf_cleanup_font_struct() now works with all types of fonts, and is
also called for fonts read in from PFM files (p_font.c, p_afm.c, p_intern.h).
Build process, distribution, and platform support
=================================================
- Fixes a few configure buglets, and adds a new option (configure.in):
- The --disable-cxx and --enable-cxx=no options didn't work;
- The --disable-shared-pdflib and --enable-shared-pdflib=no options
didn't work;
- Implements --enable-profile.
- Modifies "make install" in the pdflib subdirectory to do different
things with the static vs. shared library (pdflib/Makefile.in).
- Added an encoding file for Windows code page 1250 (central european)
(fonts/cp1250.enc, fonts/pdflib.upr), and changes T/tcedilla to
T/tcommaaccent in order to match Adobe conventions (fonts/iso8859-2.enc).
- Enhancements for MacOS X server/Rhapsody 5.6/Darwin (configure.in).
Set with_gnu_ld=yes which is required for GNU libtool (not to be
confused with Apple's libtool).
- S/390 enhancements:
- Adds a new branch for shared library/DLL options on the S/390 in
the libtool database (ltconfig).
- Patches the libtool input for EBCDIC compatibility, and moves the
source file names in compiler commands to the end for c89 (ltmain.sh).
- Introduces a dedicated distribution kit for S/390, which has all
text files converted to EBCDIC already (Makefile.in).
- Uses compress instead of gzip for the S/390 distribution (Makefile.in).
- Removes the PDF_PLATFORM since it is now supplied by the configure
script (p_config.h).
- Adds -DOS390 to the compiler options if appropriate, and sets the CC
and LD variables (configure.in).
- Changes a test for OS/2 in order to not catch S/390 (pdflib.h).
- Introduces a compile-time switch to distinguish between Unix System
Services and MVS on the S/390 (p_config.h, p_util.c).
- Installing the static C library didn't work due to a typo
(pdflib/Makefile.in).
Bindings
========
- Added a call to PDF_close_image() in the image samples for all language
bindings (bind/*/image.*).
- C++:
- Implements unsupported wrapper functions for the CMYK functions
(pdflib.hpp, pdflib.cpp).
- Java:
- Adds information on building the Java wrapper on S/390 (readme.txt).
- Adds information about Apple WebObjects (readme.txt).
- Adds information about J2EE and Apache JServ deployment (readme.txt).
- Adds the JNI header path for MacOS X server (configure.in).
- Adds the JNI header path for S/390 (configure.in).
- Searches $JAVAINCLUDE/mvs for machine-dependent JNI headers (configure.in).
- Makes the Java wrapper EBCDIC-safe, and implements changes required
for the JNI on S/390 (pdflib_java.c).
- Perl:
- Searches for Perl 5.7.0 (configure.in).
- Sets the standard output to binary mode in the CGI sample
(pdfclock.pl.cgi).
- Python:
- Includes an "oldpython" configuration to build the PDFlib extension
for Python < 2.0 on Windows (Python.dsp). PDFlib binaries for Python
1.x and 2.0 are included in the Windows binary distribution.
- Updates the configure script for Python 2.0 (configure.in).
- Tcl:
- Searches for Tcl 8.4 (configure.in).
Documentation
=============
- Splits the manual in an ActiveX edition and another one for all
other language bindings (doc/PDFlib-manual.pdf).
- Improved the form fields in the PDFlib order form (PDFlib-purchase-order.pdf).
- Documents a workaround for problems when viewing the PDFlib purchase
order form with Acrobat Reader on Unix/Linux (doc/readme_unix.txt).
- Adds ColdFusion examples and documentation to the ActiveX edition.
V3.02 (August 22, 2000)
=======================
Bug fixes and enhancements
==========================
- Added state checks to the text functions (p_text.c).
- Refined the error handling in PDF_open_image (p_basic.c, p_image.c).
- Deactivated the default prefix entry in the UPR file because it could
cause confusion with the ActiveX edition (pdflib.upr).
- Multi-strip TIFF images didn't work correctly when placed with a scaling
factor != 1 (p_image.c).
- Implements a macro which aids in overcoming differences in libpng
versions when it comes to accessing the setjmp buffer (p_png.c).
- Fine-tuned the OS/2 test in p_config.h.
- Allow negative box width and height in PDF_show_boxed() (p_text.c).
- Added the debug version of the C runtime library to the debug configuration
of the MSVC test and pdflib projects (test/test.dsp, pdflib/pdflib.dsp).
- Under certain circumstances the GIF reader didn't work correctly due to
missing variable initialization (p_gif.c).
- pdftest.c couldn't be compiled in strict ANSI mode by some compilers due to
two misplaced statements (which actually only serve as warning preventers)
(pdftest.c).
- Added an #if conditional because the Intel version of the Metrowerks compiler
doesn't have setmode() (p_basic.c).
- PDF_open_fp() resulted in a crash or PDFlib exception because the file pointer
got overwritten due to wrong initialization order (p_basic.c).
Build process, distribution, and platform support
=================================================
- Adds more AS/400 relevant information (doc/readme_ebcdic.txt).
- Includes the files in the fonts directory in the binary distributions.
- Extended the CodeWarrior project file for dual use on both Mac and
Windows, and updated to CodeWarrior Pro 5 (PDFlib.mcp).
- Fine-tuned support for S/390 (p_config.h, p_util.c).
- Removed an obsolete file (pdflib/makefile.bcc).
Bindings
========
- C:
- PDF_delete() was missing from two C samples (hello.c, image.c) and
a demo client (clients/text2pdf.c);
- Java:
- No longer calls PDF_delete() in the Java exception generating mechanism
since this may lead to multiple calls due to interference with PDFlib's
finalize() method. This should fix long-standing problems with
exceptions in some Java environments, especially Servlet engines
(pdflib_java.c).
- Adds a classFinalize() method (pdflib.java).
- Adds throws clauses to all PDFlib Java and native methods. This change
required the addition of an import statement (pdflib.java).
- Adds throws clauses to all examples.
- Renames the Java servlet example to PDFlibServlet.java.
- Adds notes on using PDFlib with IBM WebSphere Application server
and Allaire JRun (bind/java/readme.txt).
Documentation
=============
- Marks PDF_endpath() as deprecated (pdflib.h).
- Replaced the order form with an interactive version
(doc/PDFlib-purchase-order.pdf).
V3.01 (July 1, 2000)
=====================
New features and API
====================
This release is binary-compatible to 3.0, but adds a few new features
which are accessible through additional parameters to existing functions:
- Implements the "fontencoding" parameter for retrieving the encoding of the
current font (p_basic.c, p_font.c).
- Implements "blind" mode in PDF_show_boxed() in order to check whether or not a
string fits in a given box (p_text.c).
- Adds support for multipage TIFF images via the "page" parameter
of PDF_open_image_file() (p_tiff.c).
- Implements pass-through mode for a variety of TIFF compression schemes.
Compressed image data is no longer decompressed and recompressed, resulting
in much faster TIFF procecessing. Correctly dealing with multi-strip images
required rewriting parts of the image machinery (p_tiff.c, p_image.c,
p_intern.h).
- Adds support for CMYK TIFF images (p_tiff.c).
- Implements pass-through mode in the GIF handler. This results in much faster
GIF processing, but unfortunately restricts the number of supported GIF flavors
to 8-bit, non-interlaced. As a side effect, this decreases the memory footprint
of each PDF instance by more than 64 KB (p_gif.c, p_intern.h).
- Implements the "openmode" parameter for setting the initial
display of bookmarks, thumbnails, or fullscreen mode (p_intern.h,
p_basic.c, p_hyper.c).
- Implements the "bookmarkdest" parameter which allows changing the
destination view of individual bookmarks (p_intern.h, p_hyper.c,
p_basic.c).
- Implements the "imagewarning" parameter which allows the client to get more
detailed information about why PDF_open_image_file() or PDF_open_CCITT() failed
(p_basic.c, p_jpeg.c, p_gif.c, p_tiff.c, p_png.c, p_ccitt.c).
Bug fixes and enhancements
==========================
- Outputs \r and \n in strings with a preceding backslash which seems to be
required for proper handling of linebreaks in annotations (p_text.c).
- Eliminate the exception caused by unknown category entries in the resource
files.
This behavior caused unnecessary exception when UPR files were created with the
makepsres utility (p_util.c).
- Implements an unsupported "memory32" mode for 32-bit aligned memory images in
PDF_open_image() (p_image.c).
- Negative horizontal scaling was taken into account for the underline/overline/
strikeout distance from the baseline including its sign, which is wrong
(p_text.c).
- Increased several of the initial allocation chunk sizes since we saved 64K by
the rewrite of the GIF module (p_intern.h).
- Uses pdf_end_path() more efficiently in PDF_endpath() (p_draw.c).
- After an image was rejected the next image could suffer from left-over
information from the rejected image since proper initialization was missing
(p_image.c).
- Allows the compression level to be changed within a page description
(p_basic.c).
- Removed the warning about page sizes which are incompatible to Acrobat 3
which was issued by default when a page was too large or too small. Now
a RuntimeError is generated only in Acrobat 3 compatibility mode (p_basic.c).
- PDF_close() closed the file handle even if it was provided by the client
through PDF_open_fp() which is a bad attitude towards clients (p_basic.c).
- PDF_open_mem() was broken: it provoked a wrong error message due to missing
initialization (p_basic.).
- Removed a number of obsolete functions which were no longer supported in
PDFlib 3.0 but still available (p_jpeg.c, p_gif.c, p_tiff.c, p_gstate.c,
p_text.c, p_hyper.c, pdflib.h, p_intern.h, p_basic.c,
bind/[perl|tcl|python]/pdflib_*.c).
- PDF_add_note interprets an empty icon parameter equivalent to a NULL value
(p_annots.c).
- Setting the transition parameter to an empty string is now equivalent to
a NULL string value, and resets the transition to default (p_hyper.c).
- Replaces the GIF test image with a non-interlaced version (test/pdflib.gif).
- Eliminates a superfluous moveto in PDF_arc() when the current point and the
starting point of the arc coincide. The redundant moveto broke subsequent
closepath and fill behaviors (p_draw.c).
- Changed several hex characters in strings to octal notation (pdftest.c).
- Added a few casts to satisfy C++ compilers (p_font.c, p_pfm.c).
- Re-implements PDF_set_text_matrix(), which is currently neither documented in
the manual nor supported (p_text.c, pdflib.h).
- Adds the "nativeunicode" parameter to Unicode-aware language wrappers in order
to disable native Unicode processing. The default value is false (p_basic.c).
- The "defined" preprocessor instruction was missing for the __BORLANDC__
identifier (p_config.h).
- Safeguards the interpretation of encoding and UPR files on Unix from
Windows-style lineends (p_util.c).
- An infinite loop could result when trying to attach a non-existent
file with PDF_attach_file (p_basic.c).
- The return type of PDF_get_buffer() was missing a const qualifier
(pdflib.h, p_basic.c).
- Separates the generation of a multi-threaded test program from the
WIN32 environment in order to simplify building non-threaded tests
with non-MS compilers (test/pdftest.c).
- Removes several warnings about redundant variable assignments which
were uncovered by the Borland compiler (p_afm.c, p_basic.c, p_draw.c,
p_filter.c, p_font.c, p_jpeg.c, p_pfm.c, p_util.c, test/pdftest.c).
- PDF_get_value() could crash when called with bad parameters. Ironically,
the crash was not caused by the bad parameters but by a bug in the
error message complaining about the bad parameters (p_basic.c).
- PDF_setfont() and PDF_stringwidth2() now accept negative font sizes.
The horizontal scaling factor may now also be negative.
The underline/overline/strikeout functions use the absolute value
of the calculated line width to ensure that the line width will be
positive (p_font.c, p_text.c).
- Changed the name of the "byte" typedef to "pdf_byte" (p_intern.h, many *.c).
- Changed the default encoding in text2pdf.c from "winansi" to "host",
and adds a command line option for the text encoding (pdftest.c).
- The formula for calculating Bezier control points for the arc
approximation gave wrong results due to a missing cast (!) in the
C expression, resulting in ugly circle segments for certain parameter
combinations (p_draw.c).
- The vertical start position of the text line could be reset to 0 if graphics
operators were issued between the PDF_show_xy and PDF_continue_text()
calls (p_text.c).
- Text output could be positioned one line too high if the character
or word spacing was set != 0 because the leading value was not
set correctly in PDF_show() and PDF_show_xy(). This bug also affected
the horizontal positioning of PDF_show_boxed() (p_text.c).
- PDF_continue_text now honors empty strings, i.e., moves to the start
of the next line if the supplied string is empty (p_text.c).
- The ISO 8859-2 encoding file had typos in the Zacute and Racute
entries (iso8859-2.enc).
- CMYK JPEG images resulted in corrupt PDF output due to a typo (p_image.c).
- Fixed a non-portable construct involving the increment operator which
resulted in wrong code when optimizing on True64 Unix (test/pdftest.c).
Build process, distribution, and platform support
=================================================
- Introduced a new configuration "no auxiliary libs" for MSVC for building
PDFlib without any auxiliary library present (*.dsp).
- Changes the sample projects for MSVC++ from pdfclock to hello because this
is better suited as the first example (c.dsp, cpp.dsp).
- Makes the math library linker option (usually -lm) configurable via an option.
This is only rarely required. The option is empty on MacOS X/Darwin
(configure.in).
- On Windows, switches to static versions of libpng, tifflib, and libz, and
renamed libpng_static.lib to libpng.lib (*.dsp).
- Adds support files for Borland C++ Builder 5.0 (*.bpf, *.bpr).
- Adds -pthreads to the compiler options on OSF1 (configure.in).
- Libtool output was sent to /dev/null in the bind Makefiles, which is
a bad idea, and was changed (bind/*/Makefile.in).
- By default the C++ binding is no longer enabled, since few people seem to
actually use it and inconsistent handling of the standard C++ library causes
frequent configuration trouble on several systems. It can be enabled with the
--enable-cxx configure option (configure.in).
- Changed the name of the C++ configure option from --with-cxx to the more
appropriate --enable-cxx (configure.in).
- Removes -ljpeg and -lz from the TIFFlib tests in the configure script, since
these are't always required for libtiff, and missing additional libraries may
cause linker error messages on some platforms if not installed. Platforms
which require auxiliary libraries for TIFFlib can configure those with the
new --with-tiffauxlib option (configure.in).
- Changes the shared library mechanism in order to avoid problems with
multiple dependent shared libs on platforms which don't support inter-
library dependencies, or when the user doesn't have root privilege for
installing the PDFlib shared library, for example on an ISP's server
(configure.in, pdflib-config.in, all Makefile.in):
- PDFlib is built as a libtool convenience library by default.
- C/C++ language clients which prefer a shared PDFlib can request this via
the --enable-shared-pdflib configure option. Other language bindings
will not be available when this option is used.
- Using non-installed versions of the auxiliary libraries now works as
expected, but requires them to be built as static libs. Problems may
arise if a local library directory contains a shared version of some
auxiliary lib. The configure script will warn about this situation.
- The PDFlib library will only be installed if it was built as a shared
object. "make install" will install pdflib.h always, however.
- All language wrapper libraries are still shared, but pull in the PDFlib core
into the respective shared library.
- Removes the dependencies from the client Makefile (clients/Makefile.in, configure.in).
- The client and util Makefiles didn't use the configure-supplied macro for the
name of the PDFlib core library (clients/Makefile.in, util/Makefile.in).
- Switches to libtool 1.3.5 (config/*).
- Removed all space characters after the -I compiler options since some
compilers don't like this (configure.in).
- Includes an encoding definition file for ISO 8859-9/Turkish, also
known as Latin Alphabet No 5 (!) with additional character entries
for Windows codepage 1254, and includes a corresponding
entry in the UPR file (fonts/iso8859-9.enc, fonts/pdflib.upr).
- Removes an obsolete file (test/graphdata).
- The "clean" target didn't check whether or not a certain language
binding actually had been built, resulting in errors for a global
"make clean" (configure.in, Makefile.in).
- Sets the LANG variable to empty string before calling the date
command. Otherwise %p depends on the LANG setting, and may not
work (Makefile.in).
- Adds the list of dependent libraries (PDFLIBLINK) when linking the
PDFlib shared library via libtool. Some platforms such as AIX require
the names of all dependent libraries to be coded into the shared library
file (pdflib/Makefile.in).
- Fixed a number of EBCDIC-related bugs:
- Bookmarks and annotation text didn't get converted to ASCII (p_hyper.c).
- User-defined document information field names got converted to
ASCII just one time too often, resulting in bad output (p_hyper.c).
- The open mode for fopen() must be set to binary ("rb" and "wb"),
otherwise PDF output will be screwed up, and images don't work
(p_config.h).
- Removed all occurrences of "-lc" in configure.in.
- When searching for the TIFF library configure didn't check the lib
subdirectory of any directory supplied via the --with-tifflib= option,
contrary to the search applied for zlib and libpng, and the TIFFlib
header files (configure.in).
- Implements config/pdflib.m4 for use with the configure process of other
packages which need to test for the availability of PDFlib.
- Includes pdflib-config as an aid in configuring other packages which
want to use PDFlib (configure.in, pdflib-config.in).
- Fixed a typo in the SUFFIXES line which adversely affected some
non-GNU makes (pdflib/Makefile.in).
- Added a precompiler test for the EMX compiler on OS/2 (p_config.h).
Bindings
========
- C:
- Includes an image sample (image.c).
- The improved libtool scheme revealed a bug in the ordering of
object files in the Makefile (Makefile.in).
- C++:
- Changed the name of the preprocessor define BROKEN_BOOL to PDF_BROKEN_BOOL
(pdflib.hpp, pdflib.cpp).
- Changed the C++ test files to return 0 (hello.cpp, image.cpp, pdfclock.cpp).
- Added several casts to properly deal with the size method of C++
strings (pdflib.cpp).
- get_parameter() was accidentally missing from the wrapper code
(pdflib.hpp, pdflib.cpp).
- Adjusted the return type of PDF_get_buffer() (pdflib.hpp, pdflib.cpp).
- Includes an image sample (image.cpp).
- The improved libtool scheme revealed a bug in the ordering of
objects in the Makefile (Makefile.in).
- Changed the preprocessor conditionals for name space handling (pdflib.hpp).
- Separates out the name of the standard C++ library, and sets it from
the configure script. Determining whether it is required is however
not yet finally implemented (configure.in, Makefile.in).
- Java:
- Adds /jdk1.2.[123] to the list of directories to be searched for the Java
header files for the benefit of Cygwin users (configure.in).
- Adds /usr/local/java and /usr/local/java/alpha to the list of
directories to be searched for the Java header files (configure.in).
- Implements the "nativeunicode" parameter (pdflib_java.c).
- Includes a servlet sample (hello_servlet.java).
- Makes the exception handling in the Java wrapper thread-safe, which was
the last step to a completely thread-safe Java binding (pdflib_java.c).
- Adds some notes on using PDFLib with Borland/Inprise JBuilder (readme.txt).
- The error message for a bad PDFlib version used only a single significant
digit (pdflib_java.c).
- PDF_concat() had accidentally been declared public instead of private
(pdflib.java).
- Includes an image sample (image.java).
- Implements several changes which are necessary for the AS/400 JNI
implementation where jlong is a struct (pdflib_java.c):
- Removes an unneccesary jlong initializer in the wrapper code of
PDF_new().
- Casts NULL to jbyteArray in the wrapper of PDF_get_buffer().
- Adds a cast to the (jbyte *) argument of ReleaseByteArrayElements().
- Conditionally uses a JNI-supplied macro for the assignment of
jlong to long.
- Made changes to the configure script in order to support the Kaffe
VM which doesn't use the common jni_md.h in its JNI implementation
(configure.in).
- Relaxed javadoc generation since Kaffe doesn't have a javadoc
implementation (Makefile.in).
- The Unicode converter didn't report back the correct string length
if the string was empty (pdflib_java.c).
- libtool versioning information was missing (Makefile.in).
- Perl:
- Links the Perl wrapper against the Perl library on AIX, Cygwin, and
OSF/1 (configure.in).
- Removed a number of obsolete functions which were no longer supported in
PDFlib 3.0 but still available (see doc/compatibility.txt for details).
- PDF_concat still didn't work due to a glitch in the module file and a
missing newXS entry (pdflib_pl.pm, pdflib_pl.c).
- Adds a CGI variant of the pdfclock sample (pdfclock.pl.cgi).
- Adjusted the return type of PDF_get_buffer() (pdflib_perl.c).
- Includes an image sample (image.pl).
- Cleaned up a few of the many warnings produced by the SWIG-generated
wrapper code (pdflib_pl.c).
- Implements a number of changes to make the wrapper compatible with
Perl 5.6, mostly required by the discontinued use of PERL_OBJECT in
the ActivePerl build:
- Introduced another configuration called "oldperl" for building the
wrapper for older ActivePerl versions (perl.dsp).
- Added the XS macro to the export declaration of boot_pdflib_pl
(pdflib_pl.c).
- Searches for perl5.6.0 in the configure script (configure.in).
- Changed the include and lib paths for Perl 5.6.0 on Windows (Perl.dsp).
- Changed the include path in the VC project file to the Perl/lib/CORE
directory (Perl.dsp).
- Removed the /Tp option in the VC project file (no longer use C++ mode).
(Perl.dsp).
- Removed the PERL_OBJECT #define on Windows (pdflib_pl.c).
- Changed all occurrences of CPerl to CPerlObj, and removed the respective
macro definition (pdflib_pl.c).
- Changed a preprocessor directive to make the wrapper code compatible
with Perl 5.6 on Unix (pdflib_pl.c).
- libtool versioning information was missing (Makefile.in).
- Python:
- Includes an image sample (image.py).
- Changed the include and lib paths for Python 1.5.2 on Windows (Python.dsp).
- Removed some dead code from the wrapper code (pdflib_py.c).
- "make test" tried to make a hard link to a symbolic link, which
doesn't work on all platforms (bind/python/Makefile.in).
- libtool versioning information was missing (Makefile.in).
- Tcl:
- Implements the "nativeunicode" parameter (pdflib_tcl.c).
- Removed a number of obsolete functions which were no longer supported in
PDFlib 3.0 but still available (see doc/compatibility.txt for details).
- Makes the exception handling in the Tcl wrapper thread-safe, which was
the last step to a completely thread-safe Tcl binding (pdflib_tcl.c).
- Adjusted the return type of PDF_get_buffer() (pdflib_tcl.c).
- Includes an image sample (image.tcl).
- Changed the include and lib paths for Tcl 8.3.1 on Windows (Tcl.dsp).
- The wrapper now requires Tcl 8.2 or higher.
- If appropriate, calls Tcl_InitStubs() for Tcl Stubs support
(pdflib_tcl.c).
- Queries the version number of the Tcl interpreter instead of
relying on the static version number in the Tcl header used
for compiling the wrapper (pdflib_tcl.c).
- Added some preprocessor directives necessary for the mingw
environment under Windows (pdflib_tcl.c).
- Removed the DllMain function from the wrapper since it wasn't actually
required but could cause trouble with some wrong precompiler settings
(pdflib_tcl.c).
- PDF_get_value and PDF_set_value were not properly reported to the
Tcl interpreter, and were therefore unavailable (pdflib_tcl.c).
- The Unicode converter didn't report back the correct string length
if the string was empty (pdflib_tcl.c).
Documentation
=============
- Adds many clarifications to the manual, as well as some basic text and
graphics handling algorithms (PDFlib-manual.pdf).
- Includes a PDF with point grid measures for common page sizes (grid.pdf).
- Updated the Web locations of the png and zlib libraries (readme.txt,
PDFlib-manual.pdf).
- Added some information on forcing a certain compiler, or certain compiler
flags (doc/readme_unix.txt).
- Updated the PDFlib license (PDFlib-license.pdf).
- Included the PDFlib order form (PDFlib-purchase-order.pdf).
V3.0 (March 1, 2000)
====================
New features and API
====================
- Implements the "invert" parameter for PDF_open_image() in order to
work around problems with certain 1-bit TIFF images (p_tiff.c).
- Implements ascender, descender, and capheight parameters for get_value()
(p_basic.c).
Bug fixes and enhancements
==========================
- Fixed a bad memory leak for all TIFFs which couldn't be handled
in pass-through mode (p_tiff.c).
- Track the text position even if the supplied string is NULL or
empty (p_text.c).
- PDFlib attempted to load the UPR resource file too early, even if
the resource query could have been satisfied with dynamically loaded
resources (p_util.c).
- Empty resource file names (e.g. produced by an empty, but existing
environment variable) were not handled correctly (p_util.c).
- The y position calculations for PDF_show, PDF_show_xy, and
PDF_continue_text were wrong for nonzero word spacing values.
This also affected PDF_show_boxed (p_text.c).
- Re-enabled the #ifdef'ed /EncodedByteAlign code (p_tiff.c).
- Change the cleanup_...() functions in order to make them multiply
callable. This was not the case for certain rare situations when an
exception occured during cleanup (p_annots.c, p_basic.c, p_font.c,
p_hyper.c, p_util.c, p_image.c).
- The handling of font files with DOS line ends was broken on Unix
systems (p_font.c).
- The error machinery didn't recognize a certain recursive error situation
related to the handling of corrupt font files (p_basic.c).
- The font machinery now treats the AFM entry "StandardEncoding" like
"AdobeStandardEncoding" since some AFMs use the former (wrong)
variation (p_font.c).
- The UPR resource names didn't work in PDF_set_parameter() due to
a typo (p_basic.c).
- CCITT-compressed TIFFs with multiple strips haven't been handled
properly, and resulted in corrupt output. As a quick fix we revert
to uncompressing and recompressing with Flate (p_tiff.c).
- The PDF properties sheet in Windows explorer doesn't work when the
Info dictionary keys are not followed by space characters. (This
should be considered an Acrobat bug!) We therefore removed this
optimization in order to work around this misfeature (p_hyper.c).
- PDF_stringwidth2() didn't take the length argument into account (p_text.c).
Build process, distribution, and platform support
=================================================
- configure improvements (configure.in):
- configure failed to include -I in the include paths for the auxiliary libs.
- configure failed to accept library paths supplied on the command line.
- Unified the handling of the -I option for the various language
include directories.
- Adds -lm to the libpng tests.
- The --disable-shared option didn't work.
- Changed the install target so that it creates the install directories
for library and header files if they don't exist. This was a problem
especially on RedHat systems where /usr/local/include doesn't exist
(pdflib/Makefile.in).
- Removed the FORCE: target in the main Makefile (Makefile.in).
- Added some preprocessor lines for Cygwin support (p_config.h, p_basic.c).
- Switched to a static version of the PNG library due to problems with
libpng.dll when used with static C runtime (*.dsp).
Bindings
========
- Java:
- get_value didn't work because of a missing comment terminator (pdflib.java).
- An exception in get_parameter could result in an access violation in
Windows due to a bug in the wrapper code (pdflib_java.c).
- Relaxed the compiler setting "strict ANSI" in the CodeWarrior project
for the Java binding on the Mac, since the Apple-supplied Java
headers for MRJ 2.2 do no longer compile in strict mode (pdflib.mcp).
- Perl:
- PDF_concat didn't work due to a glitch in pdflib_pm.pl.
- Python:
- PDF_open_image_file() was missing from the set of registered functions,
and was therefore unavailable (pdflib_py.c).
- Tcl:
- Changed the Windows project file for Tcl 8.3 paths (tcl.dsp).
- The Tcl install target didn't check whether the install directory
already existed (Makefile.in).
Documentation
=============
- Switched to version 8 of the Aladdin license (aladdin-license.txt).
V2.30 (February 15, 2000)
=========================
New features and API
====================
- Implements the ignoremask parameter for PDF_open_image_file() to
allow the user to disable PDFlib's automatic transparency support.
- Reactivates the disabled PDF_open_mem/writeproc interface for installing
a callback to fetch the PDF data (p_basic.c, p_annots.c, p_image.c,
p_font.c, p_stream.c, pdflib.h, p_intern.h).
- Removes PDF_set_text_matrix() which has bad interactions with
internal functions and properties of PDF, and doesn't offer any
advantage to the client (p_text.c).
- Path segment functions no longer reset the text position and matrix
(p_text.c).
- Implements PDF_get_value() and PDF_set_value() which (along with
PDF_set_parameter()) replace the following functions (p_basic.c):
get_font
get_fontsize
get_image_height
get_image_width
set_fillrule
set_leading
set_text_rise
set_horiz_scaling
set_text_rendering
set_char_spacing
set_word_spacing
set_duration
set_transition
In bindings other than Java and ActiveX these are still available, however.
- Interprets the image resolution in the image converter client, and
adjusts both page size and scaling factors accordingly (pdfimage.c).
- Reads the resolution or aspect ratio values from all image formats
which support it, and passes the values to the client (p_jpeg.c, p_png.c,
p_tiff.c, p_gif.c);
- Implements and documents PDF_concat() (p_gstate.c).
- Makes the default zoom factor (open action for the first page) user-
settable through PDF_set_parameter() (p_basic.c).
Bug fixes and enhancements
==========================
- PDF_delete() didn't PDF_close() if called from the error handler (p_basic.c).
- PDF_arc() didn't handle movetos correctly (p_draw.c).
- Due to a subtle bug in the exception handling machinery non-fatal
errors could cause recursive errors (p_basic.c).
- PDF_show_boxed() didn't fully justify the second but last line under
certain circumstances, and didn't get forced newlines right
sometimes (p_text.c).
- PDF_show_boxed() didn't take the text matrix into account correctly
(p_text.c).
- End the text object if the text render mode is set to one of the
clipping modes (p_text.c).
- Added an endpath operator to the clip operators to save the client from
doing so (p_draw.c).
- PDF_open_image() didn't check for a valid params pointer for one-
component images (p_image.c).
- Non-fatal errors could result in corrupt output due to a glitch
in the error handling machinery (p_basic.c).
- Implements data pass-through for CCITT-compressed TIFF images. This
decreases the PDF output, and accelerates image processing (p_tiff.c,
p_image.c, p_intern.h).
- Changed the key of the duration setting from /D to /Dur. The former
is only correct within a transition dictionary (p_basic.c).
- Implements a complete text and graphics state tracking machinery,
including save/restore (p_intern.h, p_gstate.c, p_draw.c, p_text.c,
p_basic.c).
- Disallows the use of the null character in user-defined encodings
(p_util.c), and documents the fact.
- Implemented a stricter state checking machinery for switching
between path objects, text objects, image objects, and the general
page description state (p_text.c, p_draw.c, p_gstate.c, p_image.c,
p_intern.h).
- The parameter checks in the text output functions were too strict,
and erroneously rejected strings starting with a character code < 256
in Unicode mode (p_text.c).
- Removed several remains of an obsolete filename in comments
and a project file (p_intern.h, pdflib_static.dsp).
- Checks for a degenerate matrix in PDF_set_text_matrix() (p_text.c).
- Renamed pdf_concat() to pdf_concat_raw() (p_gstate.c).
- Simplifies the old and new stringwidth/show/show_xy/continue_text
functions pairs such that the old simply relay to the new functions.
A zero length parameter for the new functions is interpreted to
mean C-style text (p_text.c).
- Fixes the underline/overline/strikeout handling (p_text.c).
- Made the prefix parameter public (p_basic.c.).
- Relaxed the handling of metrics files where the font name has been
changed, and doesn't match the user-supplied font name (p_afm.c,
p_pfm.c).
- The AFM and PFM modules threw NonfatalErrors even in severe cases
(p_afm.c, p_pfm.c).
- Added an omitted pdf_begin_text() call which resulted in bad PostScript
output when the PDF was printed (p_text.c, p_font.c, p_intern.h).
- An erroneous byte was output in the header section (p_basic.c).
Build process, distribution, and platform support
=================================================
- Puts double quotes around all variables used in test statements
in the configure script. This will make the script more resistant
against test complaining when a variable happens to be empty (configure.in).
- Moves the test for EBCDIC from configure to p_config.h.
- Switches the language bindings on Windows to static C runtime
libraries in order to avoid the dreaded problems with multiple
versions of msvcrt.dll (*.dsp).
- Added solaris as a subdirectory name in looking for jni_md.h, since
it doesn't seem to be picked up via $ac_md_system (configure.in).
- Added -lm -lc at a few places in order to help configure find the
auxiliary libraries (configure.in).
- Changed the handling of the PDF magic number to protect it from
EBCDIC compilers (p_basic.c).
- Introduces a binary distribution for Windows, generated with a
JScript program run in Windows Script Host (shell programming a la
Microsoft, oh my...).
- Added "-ljpeg" to TIFFLIBLINK (configure.in).
- Added "-lz -lm" to the TIFF library check (configure.in).
Bindings
========
- C++:
- The C++ Makefile failed to set the CXX variable correctly (Makefile.in).
- Implemented concat() (pdflib.hpp, pdflib.cpp).
- show_boxed() didn't return a value (pdflib.cpp).
- Java:
- Reworked and fixed the exception handling (pdflib_java.c).
- Changed the string extraction routines so that they handle empty
strings gracefully (pdflib_java.c).
- Implemented concat() (pdflib_java.c, pdflib.java).
- Calls java and javadoc after compiling the Windows DLL (Java.dsp).
- Perl:
- Removed the export-dynamic option for libtool (Makefile.in).
- Implemented PDF_concat() (pdflib_pl.c, pdflib_pl.pm).
- Python:
- Removed the export-dynamic option for libtool (Makefile.in).
- Implemented PDF_concat() (pdflib_py.c).
- Tcl:
- PDF_open_image_file() was missing from the set of exported functions
in the wrapper code (pdflib_tcl.c).
- Conditionally compiles the wrapper in order to avoid the use of
binary strings when compiling against Tcl 8.0 (pdflib_tcl.c).
- Implemented PDF_concat() (pdflib_tcl.c, pkgIndex.tcl).
Documentation
=============
- Documents the libtool library versioning scheme (readme_unix.txt).
V2.20 (January 24, 2000)
=========================
New features and API
====================
- Implements PDF_concat(), currently only for the C binding
(pdflib.h, p_gstate.c).
- Implements PDF_show_boxed(), the basis of which has been contributed
by Leonard Rosenthol (pdflib.h, p_text.c, bind/*/*.c, pdflib_pl.pm,
pkgIndex.tcl, pdflib.hpp, pdflib.cpp, pdflib.java).
- Implements overline and strikethrough text, as suggested and contributed
by Leonard Rosenthol. API, implementation and behavior parallel underlined
text (p_intern.h, p_basic.c, p_text.c).
- Implements PDF_get_buffer() for fetching the PDF output from memory
for all language bindings.
Bug fixes and enhancements
==========================
- Fixed three bugs in the AS/400 codepage conversion table (p_stream.c).
- Fixed a bug in the EBCDIC-safe handling of document info entries
(p_hyper.c).
- #ifdef'ed all code for dealing with the now obsolete flush parameter.
- pdf_ebcdic2ascii() didn't return the correct string. Changed the caller
such that the return isn't needed anyway (p_stream.c).
- The binary PDF magic number was inadvertently written using pdf_puts()
instead of pdf_write() which is wrong on EBCDIC machines (p_basic.c).
- The debug and nodebug parameters are no longer documented nor supported.
Nonfatal exceptions can be suppressed with the new warning parameter
(p_basic.c).
- Changes the error handling and memory management such that one pair of
PDF_new()/PDF_delete() can accomodate multiple pairs of PDF_open_*()/
PDF_close() without leaking memory (p_stream.c, p_basic.c).
- Fixed a possible crash under rare circumstances, related to an
exception being thrown when no real work has been done (p_stream.c).
- Changes the underline/overline/strikeout calculations such that the
width of the line is no longer taken into account for calculating
the distance from the baseline (p_text.c).
- Fixes problems related to setting the current text position via
PDF_set_text_matrix() and PDF_set_text_position() (p_text.c).
- Removes the transition settings from all clock samples since these
may significantly slow down PDF the screen presentation, especially
when served via the Web (bind/pdfclock.*).
- Removes the dynamic TIFFlib attachment on Windows, and directly
links to TIFFlib. The TIFFlib DLL will also be included in the
binary distributions (p_basic.c, p_tiff.c, p_intern.h).
- Changes the TIFF code to use the PDFlib-supplied malloc/free
routines instead of the TIFFlib-supplied ones. This makes the code
for attaching the TIFFlib Windows DLL at runtime compatible with
the generally available DLL (p_tiff.c, p_basic.c, p_intern.h).
- Changes PDF_findfont() such that an exception is raised when the
requested font can't be set, instead of returning -1 (p_font.c,
bind/*/hello.*, test/pdftest.c).
- An error message had a wrong printf format (p_state.c).
- Accepts the image file type parameter of PDF_open_image_file() in
both lower and upper case, although this will not be documented
(p_image.c).
- Removed the optimization which tried to keep track of redundant
font changes (p_font.c).
- "builtin" encodings no longer worked after the great encoding rehaul,
but required only a simple fix (p_font.c).
- Implements a safeguard against recursive I/O errors which may occur
in rare situations when flushing the output raises an exception while
being called from the exception handler already (p_intern.h, p_basic.c,
p_stream.c).
- The stream machinery didn't get initialized in PDF_open_fp(), resulting
in an infinite recursion (well, a finite one...) when opening a PDF
with a preexisting FILE pointer (p_basic.c).
- Changes several places where #includes had filenames in "..." instead
of <...>, resulting in bad dependencies in the Makefiles (pdflib/p_intern.h,
util/compile_metrics.c, pdflib_pl.c, pdflib_py.c, pdflib_tcl.c).
- The compile_metrics utility was not yet adapted to the new encoding
include file logic (util/compile_metrics.c).
Build process, distribution, and platform support
=================================================
- Under Windows switched all language bindings other than C and C++
from a DLL to a static PDFlib library (bind/*/*.dsp).
- Improves and simplifies the searching mechanism for Perl, Tcl, Python,
and Java in configure (configure.in).
- Simplifies and streamlines the configure code for detecting the
TIFF, Zlib, and PNG libraries (configure.in).
- Switches to libtool 1.3.4, and back to 1.3.c due to problems with
the former (config/*).
- Fixes many glitches in the configure and build machinery.
- Makes the name of the core PDFlib library file configurable via
the --with-libname configure option in order to work around a name
clash on Digital Unix 4. The bindings are set up such that changing
the core library name is transparent to the language binding
(configure.in, all Makefile.in).
- Includes an encoding file for ISO 8859-15 in the distribution
(fonts/iso8859-15.enc), and changed the Latin 2 encoding file name
(fonts/iso8859-2.enc).
- Changed the ordering of libpng and zlib when linking programs against
PDFlib since older linkers require this ordering (Makefile.in).
- Moved the .PHONY targets in the Makefiles below the all target for
combatibility with non-GNU makes.
- Implements a suitable mechanism for patching the version number into
numerous source files, and splits it from the distribution (version.pl).
- Fixes a number of Makefile bugs which resulted in wrong dependencies
(*/Makefile.in).
Bindings
========
- C++:
- Changes the data parameter of open_image() from String to const char *
which is more appropriate (pdflib.hpp, pdflib.cpp).
- Java:
- Implements Unicode support for page descriptions (pdflib_java.c).
- Changes the data parameter of open_image() from String to byte[]
which is more appropriate (pdflib.java, pdflib_java.c).
- Correctly implements setpolydash() (pdflib_java.c).
- Includes javadoc comments and Makefile targets for generating Java
documentation in HTML (pdflib.java, Makefile.in).
- Implements package support for PDFlib, and generates a .jar file
(*.java, *.c, Makefile.in).
- Changes the version mechanism for the Java wrapper to use version
number querying instead of matching version numbers in the name of
the wrapper library (pdflib_java.c, Makefile.in, Java.dsp, pdflib.h).
- Perl:
- Correctly implements PDF_setpolydash() (pdflib_pl.c).
- Python:
- Correctly implements setpolydash() (pdflib_py.c).
- Tcl:
- Implements Unicode support for page descriptions (pdflib_tcl.c).
- Searches for tclsh8.3 in configure (configure.in).
- Correctly implements PDF_open_image() (pdflib_tcl.c).
- Correctly implements PDF_setpolydash() (pdflib_tcl.c).
- Changed all occurrences of atol() in the wrapper code to Tcl_GetInt()
or Tcl_GetLongFromObj() with appropriate error handling (pdflib_tcl.c).
- Implemented suitable conditionals to allow for compiling the Tcl
wrapper with different versions of Tcl. This was necessary because of
the Unicode support which is only available in Tcl 8.2 (pdflib_tcl.c).
Documentation
=============
- Addes a description of the PDFlib commercial license to the distribution
(PDFlib-license.pdf).
- Introduces javadoc comments.
V2.10 (December 13, 1999)
=========================
New features and API
====================
- Makes the page dimensions adjustable after starting a page, using
PDF_set_parameter (p_basic.c).
- Made a variety of changes to make PDFlib work when compiled on
EBCDIC-based systems (most *.c, p_intern.h).
- Made the Zlib compression level configurable (p_basic.c, p_stream.c).
- Switched to in-core PDF generation through the new pdf_streams
interface. This also allows us to compress page content streams
and to simplify handling of compressed data streams (all *.c, p_intern.h).
- Implements transparency support (masking by position or color) (p_gif.c,
p_png.c, p_image.c, p_intern.h).
- Implements a PNG handler (p_png.c, pdflib.h, p_intern.h).
- Font handling:
- Implemented support for null characters in text strings for all
language bindings (p_text.c, bind/*/*.c).
- Implemented support for CID fonts and CMap encodings (p_font.c, p_cid.h).
- Implemented underlined text (except for CID fonts) (p_text.c).
- Implements support for user-defined encodings, and includes
a sample encoding file (p_fonts.c, fonts/pdflib.upr, fonts/latin-2.enc).
- Implements EBCDIC encoding (p_font.c, e_ebcdic.h, p_intern.h,
p_metrics.h, util/compile_metrics.c).
- Implements support for PFB PostScript font files (p_font.c).
- Implements support for PFM PostScript font metrics files (p_pfm.c).
- Updates to the AFM parser (p_afmparse.c, p_afmparse.h):
- The FONTBBOX is read as float which is required by the 4.1 spec.
- Recognizes Multiple Master fonts by FamilyName ending in " MM".
- Allows the WEIGHT entry to contain more than one word.
- Implements limited Multiple Master handling for an in-house
application (p_font.c):
- As in PostScript, MM handling is transparent at the API level. All
MM handling is done by extracting the parameters from the font name.
- All instances of an MM font are required to have the same metrics
(i.e., no support for /Width axis).
- The required AFM file is that for the master.
- Implements PDF_skew() in order to provide for a full set of coordinate
transformation functions (p_gstate.c).
- Reactivates ASCII85 encoding which lay dormant in previous releases
(p_intern.h, p_filter.c).
Bug fixes and enhancements
==========================
- Fixed a bug where PDF_moveto() wouldn't set the text position
correctly (p_text.c).
- Corrects a small glitch where pdf_float() would return the
correct result string, but fails to use the supplied buffer (p_util.c).
- Makes the PDF compatibility user-settable (again). The reasoning
behind this is not obvious, and discussed in the manual. If the
compatibility level is set to PDF 1.2, asking PDFlib to generate
any Acrobat 4 feature will result in a RuntimeError (*.c).
- Adds a little PostScript utility for finding all glyph names in
a font (fonts/print_glyphs.ps).
- Implements support for dynamically loading TIFFlib at
runtime (p_basic.c, p_tiff.c, p_intern.h).
- Removed all references to PDFDocEncoding since it isn't required
for hypertext elements, and can't be used for text fonts (e_pdfdoc.h).
- PDF_arc() implicitly moves to the beginning of the arc segment in
order to avoid unwanted connecting lines from the current point to
the beginning of the arc segment (p_draw.c).
- All public PDFlib functions perform a simple sanity check on their
p argument before accessing any structure member. This reduces the
chances for a crash due to client-supplied NULL or rogue pointers (*.c).
- Include the names of the language binding and the platform in the
/Producer entry (p_basic.c, p_intern.h, p_hyper.c, bind/*/*.c).
- Added the width of the Euro character to the supplied internal and
external metrics tables (*.afm, p_metrics.h).
- Replaced the AFM files with newer versions, and used the additional
data in the internal metrics tables. The kerning information
has been stripped for size and performance reasons (fonts/*.afm).
- When user-requested encoding and font-supplied encoding didn't match,
PDFlib could try to reencode Symbol fonts with not adequate encodings
(like Symbol with Winansi) -- despite issuing a warning message
(p_font.c).
- PDF_stringwidth() now takes the text state parameters into account,
and protects itself from empty strings (p_text.c).
- Removed the pdf_begin_text() calls in all functions that set the
text state (p_font.c, p_text.c).
- Do not set the leading parameter in PDF_setfont() since it may
override a leading value set by the user (p_font.c).
- Changed the name of the pseudo encoding vector from "default" to
"host" (p_font.c, most bind/*/hello.*).
- Checks the scale parameter of PDF_set_horiz_scaling() to be positive
(p_text.c).
- Write the colormap for an image also in compressed or ASCII format
if requested (was previously the case only for the actual image
data, but not the colormap) (p_image.c).
- The 'w' debug parameter for enabling or disabling warning messages
was erroneously implemented as 'e' instead. Now it works according
to the documentation (p_basic.c).
- Adds (void) casts to several fputc() and fputs() calls.
- Changes the PDF output to avoid unnecessary blanks aside self-delimiting
tokens in many places (most *.c).
- Checks current font and font size in PDF_setfont() in order to eliminate
redundant setting. This requires initializing the current font to an
invalid value of -1 in PDF_begin_page() (p_font.c, p_basic.c).
- Image handling:
- When the error handler popped in for memory images with bad length it
would try to free not yet allocated memory. We guard against this by
prematurely setting the image file name to NULL (p_image.c).
- The parameter checking code in PDF_open_image() and the documentation
didn't account for images with other than 8 bits per component
(p_image.c).
- The test for the length of the image data in memory for PDF_open_image()
could still be wrong when bpc was smaller than 8 (p_image.c).
- GIF images with a local colormap ended up with a colormap with all
black entries in the PDF because the local colormap was read when the
(wrong) global colormap was already written to the PDF (p_image.c).
- Detect and correctly handle transparent colormap entries in GIF
images (p_image.c, p_gif.c, p_intern.h).
- Changes the PATHSEP definition for VMS and moves HAVE_GETOPT to the
top of the include file (p_config.h).
- The pdfgraph.c and pdfimage.c sample clients incorrectly advertised
a binary option in their usage messages although the option is no longer
available.
- Check the parameters of PDF_scale() for zero values (p_gstate.c).
- Introduce parenthesis in a set of critical macro definitions (p_gif.c).
- Changed the text2pdf client to PDF_findfont/PDF_setfont instead of
the obsolete PDF_set_font().
- Unified the names of the encoding files to e_*.h (formerly *_e.h).
- Removed the obsolete compatibility function PDF_set_font (p_font.c,
pdflib.h, bind/*/*.c, bind/perl/*.pm).
Build process, distribution, and platform support
=================================================
- Removed the sample CGI script (bind/cgi).
- Removed the pdfgraph demo program (clients directory).
- Removed the optional getopt module (util directory, Makefile.in).
- Adds support for the DJGPP compiler (p_config.h).
- Adds support for libtool in order to cleanly deal with the gazillion
kinds of shared library support (configure.in, Makefile.in, test/Makefile.in,
pdflib/Makefile.in).
- Introduces the new config directory for libtool and installation support
scripts.
- Added the ANSI option for native HP compilers (configure.in).
- Properly implements all configure switches for disabling the language
bindings (configure.in).
- Starts adding support for OS/2 and VMS systems.
- Adds support for EBCDIC-based systems, including source code changes
and an EBCDIC test in the configure script (configure.in).
Bindings
========
- SWIG:
- No longer automatically generates the wrapper file with SWIG due to
the necessary amount of manual changes in the wrapper files
(bind/*/Makefile.in).
- C:
- The arguments to PDF_begin_page() were incorrectly cast to the wrong
type instead of float. Incidentally, a particular compiler incorrectly
produced zero values, thereby disclosing the bug in the source code by
a compiler bug (pdfclock.c).
- C++:
- Implements support for strings containing null characters.
- Added PDF_shutdown() to the PDF destructor (pdflib.cpp).
- PDF_close_image() was missing from the C++ interface due to an
oversight (pdflib.hpp, pdflib.cpp).
- Added -lstdc++ to the Makefile.
- Java:
- On Windows separates the wrapper DLL from the PDFlib core DLL.
- Implements support for strings containing null characters.
- configure now looks in an additional subdirectory for the machine-
dependent JNI include file. Formerly it used $MACHDEP only, but
on some systems the subdirectory doesn't use the system version number
(configure.in).
- Rewrote the wrapper code so that it does the right thing with Unicode
strings (pdflib_java.c).
- Switched to a more object-oriented notation, and dropped the PDF_
prefix from the names of the PDFlib Java methods (pdflib_java.c, *.java).
- Perl:
- On Windows separates the wrapper DLL from the PDFlib core DLL.
- Removed the unused and unsupported Makefile.PL.
- Implements support for strings containing null characters.
- Removed PDF_boot() and PDF_shutdown() which have accidentally been
included in the wrapper code (pdflib_pl.c, pdflib.pm).
- Integrated wrapper code changes in order to make the PDFlib wrapper
compatible to versions of Perl newer thant 5.005_54 (pdflib_pl.c).
- Added an export list to the pdflib Perl module. This makes it easier
to use our module along with other modules. Clients need no longer
write "package pdflib" at the beginning since all functions are
exported (pdflib.pm, hello.pl, pdfclock.pl).
- Python:
- On Windows separates the wrapper DLL from the PDFlib core DLL.
- Due to a necessary change in the name of the library, script must
now use "from pdflib_py import *" (instead of "pdflib").
- Implements support for strings containing null characters.
- Removed PDF_boot() and PDF_shutdown() which have accidentally been
included in the wrapper code (pdflib_py.c).
- Searches for the lib-dynload directory where to install the shared
library for Python (configure.in).
- Tcl:
- On Windows separates the wrapper DLL from the PDFlib core DLL.
- Changed the name of the wrapper library from pdflib.so to pdflib_tcl.so
(pkgIndex.tcl).
- Rewrote the wrapper code so that it does the right thing with Unicode
strings (pdflib_tcl.c).
- Implements support for strings containing null characters.
- Tcl 8.0 is now required because of the support for binary strings
(configure.in).
- Removed PDF_boot() and PDF_shutdown() which have accidentally been
included in the wrapper code (pdflib_tcl.c, pkgIndex.tcl).
- Visual Basic:
- Removed the Visual Basic binding since VB is much better covered by the
new PDFlib ActiveX control (bind/vb/*).
Documentation
=============
- Added platform-specific readme files (doc/readme_<platform>.txt).
- Added an appendix dealing with shared libraries to the manual.
- Removed the redundant list of configure options from doc/install.txt.
- Changed all occurrences of PDFlib's WWW address to www.pdflib.com.
V2.01 (August 3, 1999)
=====================
New features and API
====================
- Extends the JPEG reader to allow for progressive JPEG images which are
supported in PDF 1.3/Acrobat 4 (p_jpeg.c).
- Applies a workaround for Photoshop-generated CMYK JPEG images. The
algorithm is taken from my jpeg2ps utility: detect the Adobe marker,
and write a suitable /Decode array to invert the 4 color planes (p_image.c).
- Introduces the concept of a "default" encoding which evaluates to
macroman or winansi according to the current platform. This facilitates
writing identical test programs for all platforms. All samples except
those for Visual Basic (which is Windows-only) have been adjusted to use
the default encoding.
- Streamlines the image file interface in several ways: (pdflib.h, p_intern.h,
p_image.c, p_gif.c, p_tiff.c, p_jpeg.c, p_ccitt.c, p_basic.c,
bind/vb/pdflib_vb.idl, bind/vb/pdflib_vb.def, clients/pdfimage.c,
bind/cpp/pdflib.[h|c]pp, test/pdftest.c).
- Removes PDF_place_inline_image() since it doesn't seem to bring any
real advantage to PDFlib clients.
- Removes PDF_put_image() since the image data is "parked" in the ouput
immediately on PDF_open_*(). The /Name key is no longer in Xobjects
since it was only required by PDF 1.0.
- Removes PDF_execute_image(). Instead, PDF_place_image() can now be
called multiple times for re-using image data.
- Consolidates all pdf_close_*() functions in PDF_close_image. All
image-specific stuff is now done at the end of PDF_open_*().
- PDF_open_*() (along with the newly implied pdf_put_image()) is now
allowed outside of page descriptions. This requires pdf_put_image()
to do a pdf_begin_contents_section() in some cases.
- Adds several symbolic names for new destination zoom values in
PDF_add_pdflink() and PDF_add_locallink() (p_annots.c).
- Added an undocumented hook for placing existing images as thumbnail
for the current page. This is for a specialized application and is
not supported at the scripting layer (p_image.c, p_image.c, p_intern.h).
- Changed PDF_open_memory_image() to PDF_open_image(). This makes memory
images accessible from the scripting languages, and adds support for
file and url references as placeholders for the actual image data
(pdflib.h, p_image.h, p_intern.h, bind/vb/pdflib_vb.idl, bind/cpp/pdflib.hpp,
bind/cpp/pdflib.cpp).
Bug fixes and enhancements
==========================
- A static resource configuration file (pdflib.upr) was always opened
when the client dynamically added resources. We skipped the file open
step since it's well reasonable to work with dynamic configuration
exclusively (p_util.c).
- Fixes a crash due to an uninitialized member of the PDF struct
(resourcefile_loaded). The bug showed up when trying to use non-standard
fonts (p_basic.c).
- Added a number of casts to avoid assignments to variables which are
never used. This basically affected the contents of comment and notice
lines in AFM files, which are not being used (p_afmparse.c).
- Merged the metrics files for macroman and winansi core metrics
(p_metrics_win.h, p_metrics_mac.h) to a single file (p_metrics.h,
p_font.c, Makefile.in, pdflib/Makefile.in, PDFlib.hqx, *.dsp)
- Makes DLLMain only visible when PDFLIB_EXPORTS is defined (p_basic.c).
- Changed the default page transition duration to 0 in order to avoid
unnecessarily writing the duration key to all page dictionaries (p_hyper.c).
- Changes to example path prefix in pdflib.upr to make it clearer that
the upr file has to be adjusted before it can be used (fonts/pdflib.upr).
- The debug flags didn't work due to a typo (p_basic.c).
- Debug flag 'u' (don't unlink PDF file on error) was implemented the wrong
way, and didn't match the documentation (p_basic.c).
- Improves the memory management by avoiding "semi-allocated" aggregated
objects. This involves subtle changes around the realloc() calls,
and cleaner initialization of the reallocated data. The benefit of this
shows up in memory-out situations when the error handler pops in and tries
to free memory blocks which are not completely initialized. This may
especially happen in multi-threaded environments (p_intern.h, p_basic.c,
p_font.c, p_images.c, p_hyper.c).
- Fixes some inconsistencies related to link border style, color, and
destination zoom (p_annots.c).
- Removed the beveled, inset, and underlined link border styles since they
don't work as advertised in the PDF specification (p_annots.c, pdftest.c).
- Improves the handling of XObject resources: formerly all Xobjects used
in the document up to the current page had been placed in the page's
resource list, potentially cluttering up the print stream generated for
the PDF. Now we only list the XObjects which are actually used on the
current page. This change will not affect Acrobat's viewing behavior.
- The bpc and components values of TIFF image weren't always properly
reported by TIFFlib. We improved this by using TIFFGetFieldDefaulted()
instead of TIFFGetField() for retrieving these (p_tiff.c).
Build process, distribution, and platform support
=================================================
- Several improvements in the configure machinery (configure.in, Makefile.in):
- Added a --without-cxx option to the configure script in order to make
life easier on systems where the C++ is not correctly recognized.
- The include and lib paths for perl/zlib/tifflib shown with
"configure --help" had some differences from the actual spelling of
the supported options.
- Included a number of changes to the configure script required to make
the shared library versioning work on NetBSD systems.
- The --with-perlincl option for configure didn't work.
- Added a number of conditionals for the Cygwin environment.
- Always puts the version number in the file names of the shared and
static PDFlib libraries. Previously the static library ended up without
a version number in its name, possibly leading to mismatches with later
versions.
- Introduces configure variables for the names of the shared and static
libraries. This allows us to easily build the "other" library (as opposed
to the one specified when configure was run) as well.
- Removes the -g option from all Makefiles (pdflib/Makefile.in,
clients/Makefile.in, util/Makefile.in, bind/c/Makefile.in,
bind/cpp/Makefile.in, test/Makefile.in)
- The util Makefile is no longer called by default since the utility programs
are currently not needed by ordinary library users (Makefile.in).
- Notes that the util Makefile needs an installed PDFlib library
(util/Makefile.in).
- Assorted changes suggested for supporting the Cygwin32 development
environment. These involved several Makefile.in files, configure.in, and
C source modules which make use of getopt(). Most of the changes enhanced
the configuration machinery for other systems, too.
- Removes the install targets for the C and C++ bindings in the main
Makefile since those targets weren't used anyway (Makefile.in).
- Changes the $@.$(OBJ) construct in all Makefiles to the actual name of
the object (we don't want to use $< since it doesn't work everywhere)
(*/Makefile.in, bind/Makefile.in).
- Removed a leftover text file (util/readme.txt).
- Cleaned up the configuration information in the MSVC project files.
Most projects now only support a "Release" configuration; only pdflib
and test have "Debug" configurations, too (pdflib.dsp, bind/*/*.dsp).
- Includes a separate project for building PDFlib as a static library
with MSVC.
- Better supports the Mac distribution (Makefile.in):
- Changes the CodeWarrior project file name suffix from the odd mu
character to the more Unix-friendly .mcp. Since the project file
doesn't contain a resource fork, there's no need to use binhex (.hqx)
encoding.
- Convert the lineends in all relevant text files to the Mac convention.
- Implements a procedure for setting the correct file types for all
relevant files (uses a utility program on the Mac).
- Makes a self-extracting distribution fileset for the Mac.
- Changes the Mac build of the shared library to link static C runtime
libraries (instead of the previously used DLLs). This avoids the need
for certain Metrowerks libraries at runtime (PDFlib.hqx).
- Expands the Macintosh project file with support for the Java/MRJ, Python,
Perl, and Tcl bindings.
Bindings
========
- C:
- One of the test programs didn't check the return value of PDF_open()
(pdfclock.c).
- Corrected a typo in the clean target of the makefile (Makefile.in).
- C++
- Changes the C++ wrapper such that setting the define BROKEN_STRINGS
reverts from ANSI C++ string handling to plain old C char pointers.
As it turned out, ANSI C++ strings are badly supported by many
compilers. Besides, there was a typo in the old construct (pdflib.hpp,
pdflib.cpp).
- All SWIG bindings
- Introduces export pragma for exporting PDFlib routines for the SWIG
bindings on the Mac (pdflib/pdflib.i, bind/*/pdflib_*.c)
- Java:
- Makes the Java binding work with the Macintosh Runtime for Java (MRJ)
2.1 (PDFlib.mcp).
- The pdflib Java initialization sleeps some time if the shared library
cannot be loaded. This is a benefit on systems where the Java console
immediately disappears on exit.
- The MSVC project file for the Java binding used file names with the
path of a beta version for all source files (Java.dsp).
- Perl:
- The DEFINES variable was missing in the definition of CFLAGS
(bind/perl/Makefile.in).
- Makes the Perl binding work on the Macintosh (PDFlib.mcp).
- Includes a first version of a MakeMaker-compatible Perl script for
generating a Makefile which more closely fits the Perl environment.
The Perl-generated Makefile can be used instead of the configure-
generated one in bind/perl. Note that the Perl script itself must be
generated by the configure script.
- Notes how to build the PDFlib Perl binding with recent versions of
Perl, e.g. 5.005_57 (bind/perl/readme.txt).
- Python:
- The DEFINES variable was missing in the definition of CFLAGS
(bind/python/Makefile.in).
- Makes the Python binding work on the Macintosh (PDFlib.mcp).
- Makes the test programs exit cleanly in case of error (hello.py,
pdfclock.py).
- Tcl:
- The Tcl package index file didn't get updated properly due to
the LD_LIBRARY_PATH variable not being properly exported
(bind/tcl/Makefile.in).
- Fixed a typo in the hello test program. Apparently it worked correctly
anyway because of some particular circumstances and missing type
checking in the SWIG-generated code (hello_tcl.pdf).
- Makes the Tcl binding work on the Macintosh (PDFlib.mcp).
- Visual Basic:
- The return value of all image open functions was erroneously declared
void instead of int. We had to change the GUID after this correction,
but the 2.01 API lost some image functions anyway (pdflib_vb.idl).
Documentation:
- Slightly expands the comments in pdflib.upr.
- Adds several clarifications and minor additions to the manual, and cuts
down the size of the PDF manual by optimizing font and image handling.
- Adds information to the manual about configuring the shared libraries
for scripting under Unix, Windows, and Mac.
- Adds descriptions of the few new features to the manual.
- Removes the bind/*/pdflib_*.doc text files since they don't add any
real value to the big PDFlib manual which is supplied in PDF format.
- Brings the sections in pdflib.h in sync with the sections in the main
manual (although the SWIG-generated doc files are no longer distributed).
V2.0 (June 30, 1999)
=====================
Bug fixes and enhancements:
- Implements a better scheme for making sure the ordering constraints
for PDF page descriptions are obeyed while not bothering library
clients with most of the details (p_gstate.c, p_draw.c, p_text.c).
The remaining constraints are documented in the manual.
Build process, distribution, and platform support:
- Further tweaks the support for shared libraries on OpenStep 4 (configure.in).
Bindings:
- All bindings:
- The shared libraries built for a specific language binding inadvertently
referred to a hard-coded path to the actual PDFlib library (../../pdflib).
In order to avoid this, the -L and -l options are used instead of
supplying the relative name of the library file for linking the
shared libraries or test programs (bind/*/Makefile.in, configure.in).
This means LD_LIBRARY_PATH has to be set for testing.
- Java:
- Removes the pointless import statement from the Java samples
(hello.java, pdfclock.java).
- Tcl:
- Added LD_LIBRARY_PATH when generating the Tcl package index file
in order to find the PDFlib shared library (bind/tcl/Makefile.in).
Documentation:
- Explains more of the PDF graphics model, and documents the
restrictions and interactions among graphics-related functions
(doc/PDFlib.pdf).
V1.92 (June 27, 1999)
=====================
Bug fixes and enhancements:
- PDF_translate() erroneously used the same value for both coordinates
(p_gstate.c).
- A subtle "unreachable code" warning was issued by the Watcom
compiler, and he was right (p_util.c).
- Fixed a bug in the GIF code which caused a crash on the Mac due to
an improper variable initialization. The bug had been introduced
in the transition to thread-safe GIF handling in 1.91, and didn't
affect other platforms.
- Cleaned up several places which look like empty statements within
a conditional (p_gif.c).
- Slightly changes the PDF output. Although legal PDF, some properties
caused problems with PDFviewer, a non-Adobe PDF viewer for OpenStep
written by Detlev Droege:
- Don't count the newline character into the /Length key of colormap
objects because this leads to problems in the PostScript output
generated from the PDF (p_image.c).
- Don't compress inline images (p_image.c).
- A missing initialization caused a crash on Windows (p_hyper.c).
API:
- Implemented PDF_set_fillrule() for setting the area algorithm used
by PDF_fill(), PDF_fill_stroke(), PDF_closepath_fill_stroke(), and
PDF_clip() (pdflib.h, p_gstate.c, p_draw.c). This change was
requested and implemented by Evgeny Stambulchik
<fnevgeny@plasma-gate.weizmann.ac.il>.
- Allows for dynamic font configuration by adding all UPR categories
to the list of supported parameters in PDF_set_parameter() (p_basic.c,
p_util.c).
Build process, distribution, and platform support:
- Added some compiler-dependent conditionals in order to make the
C++ binding work with non-ANSI compilers (bind/cpp/pdflib.hpp, pdflib.cpp).
- Improves compatibility with OpenStep 4.x:
- Added an include file required for getopt (util/compile_metrics.c).
- Enhanced configure for shared libraries on OpenStep 4.x (configure.in).
- Don't build the C++ binding (configure.in).
- Removed the additional Makefiles for MS VC++ and the complete port
subdirectory from the distribution (port/msvc/*).
Bindings:
- SWIG:
- Made PDF_boot() and PDF_shutdown public in order to avoid problems
with the SWIG wrapper files which may use them (pdflib.h).
- Made the exception jump buffers for the SWIG bindings static which
they should have been anyway (pdflib.i).
- Adds the define PDFLIB_STATIC to the project files for the SWIG
bindings on Windows because we don't want to export the core
PDFlib functions from the DLL in the SWIG case.
- Java:
- Adds a MS VC++ project file for the Java binding (bind/java/Java.dsp).
- Tcl
- Adds a MS VC++ project file for the Tcl binding (bind/tcl/Tcl.dsp).
- Perl
- Adds a MS VC++ project file for the Perl binding (bind/perl/Perl.dsp).
- Introduces patches and quirks to support PDFlib with ActivePerl on
Win32. Although our configuration works for a certain software
combination, all issues are documented (pdflib/pdflib.i, perl/readme.txt).
- Changed the order in which Perl executable names are searched. The
more likely name "perl" now is searched first (configure.in).
- Don't map bool to char in the Perl module on NeXT, since the Perl
include files contain special handling for bool which breaks with our
usual defines (configure.in, bind/perl/Makefile.in).
- Python
- Adds a MS VC++ project file for the Python binding (bind/python/Python.dsp).
Documentation:
- doc/compatibility.txt had some deprecated advice on the use of PDF_close().
- Added several clarifications and corrections to the manual.
- Adds a table of tested version numbers for the language bindings to the
manual.
- Reduced the number of fonts used in the manual.
- Delivers the manual in PDF 1.2 format to avoid triggering a PostScript
error when printing PDF 1.3 files with color images from Acrobat 3.
- Changed the page size format of the manual in order to cut down the
total number of pages.
V1.91 (June 18, 1999)
=====================
Bug fixes and enhancements:
- Fixed a typo involving a printf %s format in an error message (p_font.c).
- Fixed two NULL pointer accesses for AFMs without a Weight entry
(p_afmparse.c, p_font.c).
- Extends the AFM parser which was required for correctly processing certain
non-Adobe AFM files (p_afmparse.c):
- Added the new key "Characters" to the AFM parser. The value is ignored
since it is duplicated in "StartCharMetrics".
- Changes the handling of the "Version" key in AFMs such that arbitrary
strings are allowed after the keyword, not only single tokens.
- Changes the handling of the "Encoding" key in AFMs such that it is
optional, not required (p_afmparse.c).
- Allow blank lines and comment lines in upr files (p_util.c).
- Removed the remaining non-const globals in the GIF module, thus making
GIF processing thread-safe (p_gif.c, p_intern.h).
- Adds multithreading for Win32 to the test bed (test/pdftest.c). This
nicely demonstrates PDFlib's thread-safety.
- Changes the debug configuration and output machinery to a more flexible
system with control over individual debug facilities.
- Adds const to the PDF_set_font declaration and definition.
- Removed sys_errlist from makepsres in order to make it POSIX compliant.
- Added some cleanup code for places discovered with a purify session:
- The resource handling machinery didn't close the handle to the
resource file (p_util.c).
- The client-provided resource file name wasn't freed (p_basic.c).
- The base structure for ligatures in the AFM parser wasn't freed
(p_afmparse.c).
- Changed the cleanup routines to make sure the output file is closed
in case of error (p_basic.c).
- Two non-initalized members of the PDF struct caused a core dump at
clean-up time under rare circumstances (p_basic.c, p_image.c).
- Adjusted the output format of float values to the limits documented in
the PDF spec (p_util.c).
- The annotation border style and color were not correctly initialized
due to a typo (p_basic.c).
- The transition info didn't get properly initialized (p_hyper.c).
API:
- (Again) bundles PDF_close_file() and PDF_close_fp() to PDF_close() since
clients should not be affected by the way in which the PDF had been
opened.
- Slightly rearranged some functions to other C modules in order to
make the API structure and manual clearer.
- Removed PDF_finalize() from the API and reworked PDF_delete() so
that it may be used for cleanup in case of error.
- Changed the error handler's signature to include PDF * to make it
easier for client-supplied handlers to do a PDF_delete(p) (p_basic.c,
p_intern.h, pdflib.i).
- Changed the first argument of the memory management procedures back
to PDF *, since the client can retrieve his own opaque pointer via
PDF_get_opaque().
Build process, distribution, and platform support:
- Added several casts in order to pacify the CodeWarrior compiler.
- Added a Macintosh-encoded variant to the sample text in pdftest.c.
- The configure script set the TIFF include path even when no TIFF support
was installed/found (configure.in).
- Adds the AFM files to the distribution (again), and moves pdflib.upr to
the directory where the AFMs live (fonts/*.afm, fonts/*.upr).
- Adds a --with-debug option to the configure script which activates the
debugging facilities, and implies building PDFlib as a static library.
- Adds a test for the JPEG library to the configure script since the
JPEG library is needed by some versions of the TIFF library.
- Changes a couple of places for compilation with the Watcom compiler:
- Maps the __WATCOMC__ #define to WIN32 (p_config.h).
- Introduced a typedef for the first function argument of PDF_new2()
since the Watcom compiler issues a dubious warning otherwise (pdflib.h).
- Includes io.h for the unlink() declaration (p_basic.c).
- Changed the sample images included in the distribution (pdflib.gif,
tm.g3, acroweb_j.tif)
- Removed the makepsres program from the distribution.
- Adds compiler optimize flags by adding $CFLAGS to $DEFINES (configure.in).
Bindings:
- All SWIG bindings:
- The dist target in the main makefile called the version target, resulting
in updated access times for the SWIG-generated wrapper files. This in
turn resulted in SWIG being launched unnecessarily on the client system.
We now simply touch the wrapper files before preparing the tar file.
- Java:
- PDF_boot() and PDF_shutdown need not be available to the Java API
since PDFlib booting is done automatically for the Java binding.
- The hello example didn't obey the new PDF_findfont() semantics
(bind/java/hello.java).
- Perl:
- Fixed a typo (1 should be -1) in the font error handling line (hello.pl).
- C:
- Moved hello.c and pdfclock.c to a separate directory bind/c.
- A bug in the configure.in script prevented the test rules for the C
and C++ bindings from being executed.
- The C hello example didn't obey the new/open_file semantics
(bind/c/hello.c).
- C++:
- Renamed the bind/c++ directory to bind/cpp in order to avoid problems
with some older build environments (Makefile.in, PDFlib.dsw, configure.in).
- Reworks the C++ binding in order to make it work with the Watcom compiler:
- Don't use namespaces
- Special string handling, including conversion to chars.
- Adds a macro to change the conversion of C++ string to C chars since
Watcom doesn't support the ANSI conforming c_str() method.
- Removes the page loop and the sleep() call which had inadvertently
been left over.
- A bug in the configure.in script prevented the test rules for the C
and C++ bindings from being executed.
- Changed the PDF constructor in order to allow for client-supplied
error and memory management routines, and adds default NULL values for
these.
Documentation:
- Switches to version 7 of the Aladdin Free Public License, and includes
the license text as PDF (doc/license.pdf).
- Includes brief API documentation files for the SWIG-generated language
bindings (bind/*/*.doc).
- Includes the updated and reworked edition of the PDFlib manual
(doc/PDFlib.pdf).
V1.90 (June 2, 1999)
====================
New Features:
- Makes PDFlib thread-safe by removing the remaining few writable globals.
- Use magic numbers for image file formats (imagepdf.c)
- Supports Unix PostScript Resource files (*.upr) for describing the AFM
and font file names, and an environment variable pointing to the resource
file.
- User-defined document information field (in addition to Title, Author, etc.)
- Unicode-enables bookmarks, text annotations, and document info entries
(p_hyper.c, p_annots.c, p_text.c).
- Changed the encoding vectors according to PDF 1.3. The most relevant
change is the inclusion of /Euro in WinAnsi and PDFDoc encodings
(ansi_e.h, pdfdoc_e.h)
- File attachment, launch, link, weblink and text annotations (p_annots.c).
- Add file type and creator on the Mac (p_basic.c).
- Nested bookmarks (p_hyper.c).
- Changes the API name of the bookmark function from PDF_add_outline to
the more intuitive PDF_add_bookmark (p_hyper.c)
- Removes the limits on number of pages, page contents, and number of objects
and introduced dynamic reallocation (p_hyper.c, p_basic.c, p_annots.c).
- Generates a PDF-1.3 header (Acrobat 4 files). According to the PDF spec
this should work OK also for older viewers as long as no PDF 1.3
specific feature is used in the PDF file.
- Introduces Zlib compression for images and file attachments.
- Completely reworked the font handling. Font metrics caching now avoids
many AFM lookups, which dramatically speeds up PDFlib (up to a factor of 20!).
- Implemented in-core font metrics data. This completely eliminates the
need for external AFM files. Using the supplied utility compile_metrics
arbitrary metrics files can be compiled into the PDFlib source code.
- Adjusted the page size validation to Acrobat 4's larger limits (p_basic.c).
- New functions to query current font name and size (p_font.c)
- Introduced version numbers for the shared library and versioning schemes
for the scripting API (except Python)
- Eliminated all enums at the API level and replaced them with string
arguments.
- Eliminated the individual PDF_close_[TIFF|GIF|JPEG|CCITT|memory_image]
since PDF_close_image handles it all.
- User-adjustable debug level.
- Introduced PDF_new(), PDF_new2(), and PDF_delete, as well as PDF_open_file()
and PDF_close_file() and PDF_open_fp() and PDF_close_fp().
- Made the page size parameters float in order to accomodate PDF 1.3.
Bindings:
- Largely improved the Perl, Tcl, and Python bindings.
- Introduced the Java binding via JNI (bind/java).
- Introduced a C++ wrapper class for PDFlib (bind/cpp).
- Introduced versioning if the language supports it (currently
Perl and Tcl; the Java binding uses transparent shared library versioning).
- Binds the TIFFlib and zlib libraries into the shared library for
the PDFlib scripting bindings, thereby making the TIFF and compression
features available to all SWIG bindings.
- Improved the SWIG-generated documentation for the scripting APIs.
- Introduced language-specific exception handling as offered by SWIG.
Exception handling for Java is done outside of SWIG.
- Explicitly sets the "C" locale in order to avoid the Java VM messing up
our decimal separators by setting a bad locale.
- Introduced a Visual Basic binding with a specialized DLL and a type
library.
Other:
- Restructured the distribution directory tree.
- Streamlined the API for better scripting support.
- Added a file which documents changes to the API.
- Introduced versioning also at the API level and in the shared object naming.
- Changed the error handler interface to a fixed string, as opposed to a
variable number of arguments.
- Introduced error/exception classes which replace the former
error types, and are passed through to the scripting API.
- Reworks and cuts down the AFM parser, and makes it re-entrant.
- Installs NULL error and warning handlers in TIFFlib in order to
avoid messages from opening corrupt TIFF files. The caller will be
notified via the return code.
- Introduced "const" for all char * arguments in the API.
V1.0 (February 1999) (not publicly released)
============================================
No new featues, only bug fixes and improved platform support.
Platform support:
- Changed all library clients so that main() is declared with return
type int.
- Many casts and other minor changes in order to get rid of
MS Visual C++ 6.0 warnings (*.c, *.h).
- Included project and workspace files for MS Visual C++ 6.0 in the fileset
(PDFlib.dsp, PDFlib.dsw).
- Removed Watcom makefile from the fileset (makefile.wat).
- Switch to autoconf support (configure, configure.in, Makefile.in)
- Added Mac build support and file type/creator entries (p_basic.c)
Bug fixes:
- Extended close routine (p_gif.c, p_jpeg.c)
- Page height and width were exchanged in the interface of PDF_begin_page()
as well as in the manual. Funnily enough, the MediaBox was also written
with both in the wrong order, thereby correcting things. However, the
demo clients used the parameters in the intended order. This fix only
clarifies the meaning of width and height, but doesn't change the
behavior of clients.
- PDF output file is no longer closed in the library in order to
be consistent with the opening in the client. This INCOMPATIBLE
change means that all library clients now must close the PDF output
file themselves!
- Fixed a core dump bug in the TIFF handler (p_tiff.c)
- Fixes bug where a font could get written to the PDF with wrong
encoding information.
V0.7b2 (August 1998) (only for a single customer)
=================================================
New features:
- Added CCITT support for passing through G3 or G4 compressed
bitmap data (p_ccitt.c, pdf.h).
- Changes to the image interface (p_ccitt.c, p_jpeg.c, p_tiff.c,
p_gif.c, pdf.h)
Bug fixes:
- Changed the get_2bytes macro to a function since the macro
didn't guarantee the evaluation order, which lead to problems
when analyzing JPEGs on BeOS (p_jpeg.c).
- Added a check for Acrobat-compatible page size (1"-45", or
72pt-3240pt) in PDF_begin_page(). This is necessary to work around
restrictions in Adobe's Acrobat implementation (p_basic.c).
Minor enhancements:
- Several makefile cleanups (makefile.gcc).
V0.6 (08 July 1998)
===================
New features:
- Added SWIG support, as suggested and basically implemented by
Rainer Schaaf (Rainer.Schaaf@T-Online.de). SWIG support allows us
to use PDFlib routines from Tcl, Perl, and Python.
(makefile, pdflib.i, pdftcl_wrap.c pdfperl_wrap.c, pdfpython_wrap.c,
pdflib.pm).
- New directory structure: BINDINGS directory contains subdirectory
for several PDFlib language bindings. Currently these are
C, CGI, Perl, Tcl, Python (yes, I know that CGI is not a language).
- Included scripting samples (BINDINGS/*/pdfclock.[pl|tcl|py],
BINDINGS/*/hello.[pl|tcl|py]).
- Added new function PDF_setpolydash, suggested and implemented
by Evgeny Stambulchik <fnevgeny@plasma-gate.weizmann.ac.il>
(p_gstate.c, pdf.h).
Bug fixes and minor enhancements:
- Fix trivial (but fatal) free/fclose bug (p_font.c)
- Slightly change syntax of pdfgraph sample program: fill and
stroke is denoted by 'F' instead of 'B' (pdfgraph.c)
- Shorten the version string (pdf.h)
- Add cast (p_basic.c)
- Conditionally typedef bool because of conflicts in VC++ (pdf.h and p_port.h)
- Add cast (p_font.c)
- Delete old BOOL typedef (pdf.h)
- Renamed function parseFile to pdf_parseFile in order to avoid name
clashes with other software packages. This change was requested
by Evgeny Stambulchik for the xmgr package. This package uses T1lib
which also includes a copy of Adobe's AFM parser. (afmparse.c,
afmparse.h, p_font.c).
- Fixed typo in the Goethe demo text (pdfdemo.c).
- Adjusted demo data to new setrgbcolor interface (test/graphdata).
- Add PDF_HAS_BOOL define. However, it doesn't really fix the multiple
boolean define/typedef/enum problem (p_port.h).
- Removed const from PDF_info struct members. This change is related
to SWIG support, although the necessity of the change is not yet
fully understood (pdf.h).
- Enhances the AFM parser to recognize AFM files according to the AFM 4.1
specification, especially the "CharWidth" keyword.
V0.5 (25 February 98)
=====================
Portability aids, bug fixes and other improvements from several contributors:
- JPEG images could be closed multiply (p_jpeg.c)
- Introduce Mac and Win32 porting defs (p_port.h)
- Use define for path separator which is needed for the Mac's ":"
(p_port.h, p_font.h)
- Rename structure member private to private_data for C++ compatibility
(pdf.h, p_font.c, p_gif.c, p_jpeg.c, p_tiff.c)
- NeXT portability: include libc.h (imagepdf.c, pdfclock.c, pdfgraph.c,
text2pdf.c)
- Don't use malloc.h (afmparse.c)
- Change variable handling in make build process (makefile)
- Fix bug in octal character representation (p_text.c)
- Introduce word and character spacing functions (p_text.c)
- Fix subtle bug in font embedding: fonts with additional data after
the zeros portion were not properly embedded (p_font.c)
Environment bindings:
- Introduces BINDINGS directory which will collect several language and
environment bindings for PDFlib.
- Sample CGI script for the PDFclock example (BINDINGS/CGI/clock.cgi)
Several bugfixes, due to Detlev Droege's comments after
testing with his PDFviewer:
- Avoid empty /Filter arrays for uncompressed binary images (p_image.c).
- Change erroneous number of color components in demo page (pdfdemo.c).
- Implement consistency check for color components vs. color space
(p_image.c)
- Write binary magic number for all files (ASCII and binary) (p_basic.c).
- Change "Producer" to "Creator" in sample application (hello.c).
- AFM handler crashed in case the AFM parser gave up on certain AFMs (p_font.c).
- AFM parser didn't correctly handle newer version 4.0 AFMs (afmparse.c).
- Use AFM 4.0 key "StdVW" for a more accurate /StemV in font descriptor
(p_font.c).
- API CHANGE: Change RGB parameters from byte to float since
gray values are float parameters too (p_color.c).
V0.4 (8 September 97)
=====================
First public release.
- Generating multiple PDFs with embedded images resulted in wrong
XObject numbers for the second and following PDFs. Use image_number
from the PDF structure instead of a static variable.
(p_image.c, p_basic.c)
- Makefile for Watcom C 10.6 included in the distribution, support
Windows build (makefile.wat).