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:
Text File  |  2001-07-04  |  117.0 KB  |  3,092 lines  |  [TEXT/ttxt]

  1. V4.0.1 (May 18, 2001)
  2. =====================
  3.  
  4. Bug fixes and enhancements
  5. ==========================
  6.  
  7. - Removed the time-bomb feature of the beta versions which accidentally
  8.   was still present in the release version of PDFlib 4.0.0 (p_basic.c).
  9.  
  10. - PDF_show_boxed() erroneously returned the value 1 if the text completely
  11.   fit in the box, and the last character was a newline (p_text.c).
  12.  
  13. - Fixed a bug in the image mask handling which had some interaction with
  14.   the total number of images, and the fact whether or not images had
  15.   been closed and therefore image handles reused (p_image.c).
  16.  
  17. - Non-interlaced PNG images were erroneously rejected when used as a
  18.   mask (p_image.c).
  19.  
  20. - Individual strips of separate multi-strip TIFF images could get mixed
  21.   up under certain circumstances when the first image had already been
  22.   closed before placing subsequent images (p_image.c, p_image.h, p_intern.h,
  23.   p_basic.c).
  24.  
  25. - The values of ascender and descender were wrong for TrueType fonts since
  26.   we picked tab_hhea->ascender instead of tab_OS_2->sTypoAscender
  27.   (p_truetype.c).
  28.  
  29. - The scope check in PDF_stringwidth2() was too strict (p_text.c).
  30.  
  31. - /FontName was garbled on EBCDIC platforms, but it's unused anyway (p_font.c).
  32.  
  33. - Due to a bug in pdf_make_quoted_name() quoted characters in spot color names
  34.   could appear with wrong hex codes (p_util.c).
  35.  
  36. - Creating and deleting a PDFlib object without any documents created
  37.   resulted in a wrong exception (p_stream.c)
  38.  
  39. - Implements host encoding support for AS/400 and S/390 (p_util.c, p_font.c,
  40.   p_intern.h)
  41.  
  42. - Using a CID font caused a crash due to inappropriately freeing static strings
  43.   (p_cid.h)
  44.  
  45. - EBCDIC and CID encoding were rejected in PDF_show_boxed() even when no box
  46.   justification was requested (width=0 and height=0) (p_text.c).
  47.  
  48.  
  49. Build process and platform support
  50. ==================================
  51.  
  52. - Minor modifications for AIX compatibility (configure.in, tiff/tiff.h).
  53.  
  54. - AS/400 fine-tuning (p_config.h, several *.c).
  55.  
  56. - Fixed MVS-related macros (p_config.h)
  57.  
  58. - Removed unnecessary PHP make targets which caused an error (Makefile.in,
  59.   configure.in)
  60.  
  61.  
  62. Bindings
  63. ========
  64.  
  65. - C:
  66.   - Replaced the deprecated function setrgbcolor() with PDF_setcolor()
  67.     in the pdfclock sample.
  68.  
  69. - C++:
  70.   - Replaced the deprecated function setrgbcolor() with PDF_setcolor()
  71.     in the pdfclock sample.
  72.  
  73. - Java:
  74.   - Replaced the deprecated function setrgbcolor() with PDF_setcolor()
  75.     in the pdfclock sample.
  76.  
  77.   - A few mainframe-related fixes in the wrapper code (pdflib_java.c).
  78.  
  79.   - Clear pending exceptions if any of the JNI functions in the initialization
  80.     fails since JNI doesn't allow more than one pending exception.
  81.     (pdflib_java.c).
  82.  
  83.   - Makes the private functions PDF_new() and PDF_delete() in the PDFlib
  84.     Java object synchronized (pdflib.java).
  85.  
  86.   - Modified the internal version of the Java wrapper for use on the
  87.     AS/400 (pdflib_java.c).
  88.  
  89. - Perl:
  90.   - Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
  91.     in the pdfclock sample.
  92.  
  93. - PHP:
  94.   - Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
  95.     in the pdfclock sample.
  96.  
  97.   - A required image handle conversion was missing in the wrapper code for
  98.     PDF_open_image_file(), resulting in erroneous error messages when
  99.     trying to mask images (pdf.c).
  100.  
  101. - Python:
  102.   - Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
  103.     in the pdfclock sample.
  104.  
  105. - Tcl:
  106.   - Replaced the deprecated function PDF_setrgbcolor() with PDF_setcolor().
  107.     in the pdfclock sample.
  108.  
  109. - RPG
  110.   - Introduced a new binding for ILE-RPG on the AS/400 (bind/rpg/*).
  111.  
  112.  
  113. V4.0.0 (April 18, 2001)
  114. =======================
  115.  
  116. Bug fixes and enhancements
  117. ==========================
  118.  
  119. - Implements a check in PDF_delete() in order to make sure that the caller
  120.   acutally fetched the last chunk of PDF data via PDF_get_buffer()
  121.   (p_intern.h, p_basic.c, p_stream.c).
  122.  
  123. - Several modifications in the TrueType module (p_truetype.c):
  124.   - Allow TrueType symbol fonts (such as Webdings and Wingdings) to be used
  125.     with "builtin" encoding.
  126.  
  127.   - When font warnings are enabled (default) issue a concise error message
  128.     when a TrueType font file can't be opened or read, or is empty.
  129.  
  130.   - The TrueType module didn't always correctly distinguish between
  131.     exception and error return when a problem with a font was detected.
  132.  
  133. - Fine-tuned the trace debug facility (several *.c).
  134.  
  135. - Optimize the underline/overline/strikeout functions for empty text
  136.   strings (p_text.c).
  137.  
  138. - PDF_continue_text2() didn't correctly deal with a NULL text argument
  139.   under certain conditions, and failed to enter a text block and set
  140.   the text parameters (p_text.c).
  141.  
  142. - Throw an exception in PDF_show_boxed() if the current font uses CID
  143.   or EBCDIC encoding (p_text.c).
  144.   
  145. - Change the scope back to object if fopen() fails in PDF_open_file().
  146.   This guards against clients which fail to check the return value of
  147.   PDF_open_file() (p_basic.c).
  148.  
  149. - PDF_open_image() didn't set the use_raw flag for JPEG- and CCITT-
  150.   compressed images, resulting in bad output filters (p_image.c).
  151.  
  152. - Implements hooks for fetching encoding definitions from the host system
  153.   (p_font.c, p_util.c).
  154.  
  155. - Modifies the error handling machinery so that the error handler is never
  156.   called with a NULL PDF pointer, even when the initial PDF allocation in
  157.   PDF_new2() goes wrong. This way error handlers installed by the client
  158.   are guaranteed to have access to thread- or object-specific data in all
  159.   cases (p_basic.c).
  160.  
  161.  
  162. Build process and platform support
  163. ==================================
  164.  
  165. - Adjusts more language bindings to Mac OS X (see below).
  166.  
  167. - Disable the PHP binding if an external library was configured (configure.in).
  168.  
  169. - Moves an inherited LDFLAGS variable to the front of EXTERNALLIBS in order
  170.   to make external -L paths work (configure.in).
  171.  
  172. - Installs the pdflib-config script to make it more useful (Makefile.in).
  173.  
  174. - Extends the pdflib-config script to include auxiliary information such
  175.   as PDFlib's install path, binding information, PDI existence, and a summary
  176.   (pdflib-config.in).
  177.  
  178. - AS/400 portability mods and support for more compile-time code pages
  179.   (p_stream.c, p_config.h).
  180.  
  181. - More MVS portability fixes (p_config.h tiff/port.h).
  182.  
  183. - Change the libtool version number to 2:0:1 in order to somehow fix the bug
  184.   in 3.03 which incorrectly increased the age entry (configure.in).
  185.  
  186.  
  187. Bindings
  188. ========
  189.  
  190. - Perl:
  191.   - Always call PDF_delete() in the error handler since the PDF pointer is now
  192.     guaranteed to be different from NULL (pdflib_pl.c).
  193.  
  194.   - Removed -lm for $PERLLINK on HP-UX (configure.in).
  195.  
  196. - PHP:
  197.   - Cleans up the configure machinery which no longer must check for the
  198.     presence of any auxiliary library (config.m4).
  199.  
  200. - Python:
  201.   - Always call PDF_delete() in the error handler since the PDF pointer is now
  202.     guaranteed to be different from NULL (pdflib_py.c).
  203.  
  204.   - Introduces a hack for renaming the Python wrapper library on Mac OS X from
  205.     libpdflib_py.dylib to pdflib_py.so(!), which apparently is what Python
  206.     expects (Makefile.in).
  207.  
  208. - Tcl:
  209.   - Removed the pkgIndex.tcl Makefile target and rule because we no longer
  210.     must build the index file dynamically (Makefile.in).
  211.  
  212.   - Introduces a hack for renaming the Tcl wrapper library on Mac OS X from
  213.     libpdflib_tcl.dylib to pdflib_tcl.dylib (Makefile.in).
  214.  
  215.  
  216.  
  217. V4.0.0beta3 quick fix (April 9, 2001)
  218. =====================================
  219.  
  220. Bug fixes and enhancements
  221. ==========================
  222.  
  223. - Add /Matrix and /FormType entries to the form xobjects dictionary.
  224.   Although these are not required according to the PDF reference (new edition),
  225.   they _are_ required according to the PDF reference (old edition) and -- more
  226.   importantly -- by several PDF consumers such as Ghostscript, some
  227.   Adobe RIPs, and the PostScript output of Acrobat 4.0 (but not 4.05).
  228.   (p_template.c, pdi.c).
  229.  
  230.  
  231.  
  232. V4.0.0beta3 (April 5, 2001)
  233. ===========================
  234.  
  235. Bug fixes and enhancements
  236. ==========================
  237.  
  238. - Consistently use the Windows API name for TrueType fonts, regardless of
  239.   whether they have been read from file or retrieved from the host system
  240.   (p_truetype.c).
  241.  
  242. - TrueType symbol fonts couldn't be used (p_truetype.c).
  243.  
  244. - Implements support for flate-compressed TIFF images (p_tiff.c, tiff/*.c).
  245.  
  246. - Start a new text block when a font set if we are not currently in a text
  247.   block. This seems to be required by some Adobe RIPs and some third-party
  248.   PDF consumers, although explicitly allowed in the PDF reference (p_font.c).
  249.  
  250. - Throws an exception when the PDF document is empty (p_basic.c).
  251.  
  252. - Fixed a memory overwrite in XObjects handling (p_image.c).
  253.  
  254. - Fixed several memory leaks in the PNG module, and dropped support
  255.   for libpng versions older than 0.88 (p_png.c).
  256.  
  257. - Changes the PNG handler so that we can process simple PNG images even
  258.   without libpng attached (p_png.c).
  259.  
  260. - Resources were dropped between documents, meaning that for example
  261.   fonts had to be configured again and again for multiple output documents
  262.   with the same PDFlib instance (p_basic.c).
  263.  
  264. - Reworked parameter handling, and introduced a new table for important
  265.   parameter properties such as the scope (p_params.c, p_params.h).
  266.  
  267. - Updated the utility for converting font metrics to a C header file
  268.   (util/compile_metrics.c).
  269.  
  270. - Regenerated the built-in metrics for the core fonts with the following
  271.   changes (p_metrics.h):
  272.   - Uses the new Adobe AFMs as input which have minor changes.
  273.   - Correctly use the width of the space character for all undefined
  274.     characters instead of the fixed value 250.
  275.   - Uses the current encoding definitions, which had a few updates.
  276.   - Generate more tense output.
  277.  
  278. - Modified the getopt() stuff for easier building the demo clients on
  279.   Windows (clients/*.c).
  280.  
  281. - Fixed a memory leak in the GIF reader when the requested file couldn't
  282.   be opened (p_gif.c).
  283.   
  284. - Fixed memory leaks in the font engine, related to TrueType fonts and
  285.   the builtin core fonts (p_font.c, p_truetype.c).
  286.  
  287. - The default for floating point output accuracy (3) was too small,
  288.   as evidenced by the pdfclock example. Increased to 4 (p_basic.c).
  289.  
  290. - Fixed a nasty bug in pdf_compress_init(): due to missing initialization
  291.   importing PDF pages on an otherwise empty page could result in a crash
  292.   on some platforms (p_stream.c).
  293.  
  294.  
  295. Build process and platform support
  296. ==================================
  297.  
  298. - Changes a few details for better MVS support.
  299.  
  300. - Updates the Mac project files including support for the language
  301.   bindings (*.mcp).
  302.  
  303. - Updated the project files for Borland C++ Builder (*.brp, *.bpf).
  304.  
  305. - Consolidated the predefined encodings into a single header file
  306.   (p_encoding.h).
  307.  
  308. - Improved portability in code and build process for a number of Unix
  309.   platforms.
  310.  
  311. - Replaced the GIF test image with a new one (test/machine.gif).
  312.  
  313. - Statically links all C samples and demo programs (*/Makefile.in,
  314.   configure.in).
  315.  
  316.  
  317. Bindings
  318. ========
  319.  
  320. - C:
  321.   - Changes all clients to return 0 from the main program (*.c).
  322.  
  323.   - Runs the tests without libtool since we link statically (Makefile.in).
  324.  
  325. - C++:
  326.   - Adds typedefs to support the notion that all functions which are
  327.     passed to PDFlib must be pure C (as opposed to C++) functions (pdflib.h,
  328.     pdflib.hpp, pdflib.cpp).
  329.  
  330.   - Runs the tests without libtool since we link statically (Makefile.in).
  331.  
  332.   - Drops support for the Watcom compiler (pdflib.hpp, pdflib.cpp).
  333.  
  334.   - Changes namespace handling for non-gcc compilers (configure.in).
  335.  
  336.   - Adds casts to pacify the Sun compiler (image.cpp, personalize.cpp).
  337.  
  338. - Java:
  339.   - Adds a hack for Mac OS X to help the test and install process run even
  340.     though OS X has its own idea of JNI library naming conventions
  341.     (Makefile.in).
  342.  
  343. - Perl:
  344.   - Runs the tests without libtool since we supply -I options (Makefile.in).
  345.  
  346.   - Adds -lm (or equivalent) to the list of libraries against which the
  347.     Perl wrapper is linked. This is required, for example, for some builds
  348.     of Perl on Solaris (configure.in).
  349.  
  350. - PHP:
  351.   - Fixed a crash which was caused by a typo in the PDI memory functions.
  352.  
  353.   - Adds documentation on the PHP/PDFlib build process (readme.txt).
  354.  
  355. - Python:
  356.   - Fixes a systematic bug in all wrappers for the new 4.0 functions
  357.     (pdflib_py.c, pdflib/pdflib.i).
  358.  
  359.   - Adds PDI examples (personalize.py, quickreference.py).
  360.  
  361. - Tcl:
  362.   - Renames the Tcl/PDFlib wrapper library on the Mac to pdflib_tcl.shlb,
  363.     which is the name returned by Tcl's [info sharedlibextension] command
  364.     (*.mcp).
  365.  
  366.  
  367. V4.0.0 beta2 (March 23, 2001)
  368. =============================
  369.  
  370. Bug fixes and enhancements
  371. ==========================
  372.  
  373. - Removes all attempts to "repair" the file if API calls are incomplete,
  374.   or in bad order. This greatly simplifies cleanup in case of errors.
  375.  
  376. - Fully implements a scoping system which enforces the scoping rules
  377.   documented in the manual. This may break clients which do not adhere
  378.   to the scoping rules, but got away with the old implementation,
  379.   potentially producing bad PDF output (pdflib/*.c, p_intern.h).
  380.  
  381. - The "imagewidth" and "imageheight" parameters are now supported for
  382.   templates, too (p_template.c).
  383.  
  384. - Implements custom memory handlers for libpng and tifflib (png/pngmem.c,
  385.   pdflib/p_png.c, pdflib/p_tiff.c).
  386.  
  387. - Relaxed the encoding check for AFM files since so many AFM files
  388.   out there are just plain wrong (mostly those generated by Fontographer
  389.   (p_afm.c).
  390.  
  391. - Improves the Unicode bookmark samples so that they work correctly on
  392.   EBCDIC platforms (pdftest.c).
  393.  
  394. - Implements pdf_vsprintf() which does the "right thing" for all kinds
  395.   of formatted PDF output. In addition, we finally get rid of cursed NLS
  396.   (pdflib/*.c, pdi/*.c).
  397.  
  398. - Moved the PDI dummy functions to p_template.c, and removed p_pdi.c from
  399.   the distribution fileset.
  400.  
  401. - Delays resource cleanup until PDF_delete() (instead of PDF_close()) in
  402.   order to keep configuration information across PDF output documents
  403.   (p_basic.c).
  404.  
  405. - Implements a real tree structure for the /Pages tree instead of a linear
  406.   array. This greatly improves Acrobat's performance when navigating
  407.   _very_ large documents (p_basic.c, p_intern.h).
  408.  
  409. - Fixes a problem related to TrueType font names which resulted in
  410.   bad font cache misses due to internal name mismatches. We cured this
  411.   by storing the PostScript name of a TrueType font separately (name
  412.   table entry 6. The fullName field is used for this since fullName was
  413.   unused anyway (p_font.h, p_font.c, p_truetype.c, p_afm.c, p_pfm.c,
  414.   p_metrics.h, util/compile_metrics.c).
  415.  
  416. - pdflib.upr was loaded to early. This especially affected host fonts
  417.   where no upr file is required, but an exception was thrown nevertheless
  418.   (p_util.c).
  419.  
  420. - Added "CharacterSet" to the list of recognized AFM keywords (p_afm.c).
  421.  
  422. - Modifies the TrueType parser to gracefully deal with Unicode-based
  423.   Mac fonts, although these are not yet supported (p_truetype.c).
  424.  
  425. - Replaces the core 14 AFM files with newer versions which cover the
  426.   ExtendedRoman character set (315 instead of 229 glyphs), and are therefore
  427.   better suited for PDFlib's powerful encoding machinery (fonts/*.afm).
  428.  
  429. - Changed the accuracy of imagewidth and imageheight from int to float
  430.   to account for imported PDF pages and templates (p_image.h, p_tiff.c,
  431.   p_ccitt.c, p_jpeg.c, p_gif.c, p_image.c, p_template.c).
  432.  
  433.  
  434. Build process and platform support
  435. ==================================
  436.  
  437. - Supports local (uninstalled) static versions of the auxiliary libraries
  438.   via the LDFLAGS environment variable (configure.in).
  439.  
  440. - A variety of portability fixes in the auxiliary libraries (tiff/*,
  441.   png/*, flate/*) plus a few more in PDFlib (pdflib/*).
  442.  
  443. - Modifies the MSVC++ project files for the new library structure (*.dsw,
  444.   *.dsp).
  445.  
  446. - Brings the CodeWarrior project file for Mac up to date (PDFlib.mcp).
  447.  
  448. - Several bug fixes and improvements in the configure machinery
  449.   (configure.in, pdflib-config.in, */Makefile.in).
  450.  
  451.  
  452. Bindings
  453. ========
  454.  
  455. Java:
  456.   - show_boxed didn't correctly retrieve its text argument as a
  457.     Unicode string, resulting in wrong output for non-Latin-1 characters
  458.     (pdflib_java.c).
  459.  
  460.   - stringwidth() didn't retrieve its text argument as a Unicode string
  461.     (pdflib_java.c).
  462.  
  463. Tcl:
  464.   - Fully implements the use of Tcl's stub feature which allows us to
  465.     use a single library with different Tcl versions (pdflib_tcl.c).
  466.  
  467.   - Modifies the index file so that it no longer requires the library
  468.     name and the list of function names (pkgIndex.tcl).
  469.  
  470.   - PDF_show_boxed didn't correctly retrieve its text argument as a
  471.     Unicode string, resulting in wrong output for non-ASCII characters
  472.     (pdflib_tcl.c).
  473.  
  474.   - PDF_stringwidth() didn't retrieve its text argument as a Unicode string
  475.     (pdflib_tcl.c).
  476.  
  477.  
  478. V4.0.0 beta1 (March 02, 2001)
  479. =============================
  480.  
  481. New features
  482. ============
  483.  
  484. - Implements support for the pattern color space (p_pattern.c, p_intern.h,
  485.   p_basic.c, pdflib.h).
  486.  
  487. - Adds support for spot color (p_color.c, p_intern.h, pdflib.h).
  488.  
  489. - Adds a hook for attaching the PDF import library PDI (p_pdi.c).
  490.  
  491. - Adds Unicode handling for TrueType and PostScript fonts (p_unicode.c,
  492.   p_font.c, p_truetype.c).
  493.  
  494. - Implements new parameters:
  495.   major/minor/revision/version
  496.   pdi
  497.   pdiwarning
  498.   CropBox/llx/lly/urx/ury
  499.   BleedBox/llx/lly/urx/ury
  500.   TrimBox/llx/lly/urx/ury
  501.   ArtBox/llx/lly/urx/ury
  502.  
  503.  
  504. Bug fixes and enhancements
  505. ==========================
  506.  
  507. - Major restructuring in order to better localize data types and
  508.   related functions (most *.c and *.h).
  509.  
  510. - Fixed a bug in the MacRoman encoding table: guilsinglleft and guilsinglright
  511.   had a letter missing in their name. Since we never write MacRomanEncoding
  512.   explicitly, the characters were available, but their widths were retrieved
  513.   wrongly from an AFM file (e_macroman.h).
  514.  
  515. - Added the missing Euro glyph to the cp1250 encoding table (cp1250.enc).
  516.  
  517.  
  518. Build process and platform support
  519. ==================================
  520.  
  521. - Changes the library file name suffix for Mac OS X server (Rhapsody)
  522.   from .so to .dylib (config/ltconfig).
  523.  
  524. - Integrated zlib into the PDFlib distribution, configure, and make process,
  525.   including a libtool-based Makefile. Similarly for parts of libpng and
  526.   libtiff (configure.in, */Makefile.in, tiff/*, png/*, flate/*).
  527.  
  528. - The search for Python's shared lib path could result in multi-line
  529.   output under certain circumstances. We work around this with more
  530.   sophisticated filtering of Python's sys.path, contributed by a user
  531.   (configure.in).
  532.  
  533.  
  534. Distribution
  535. ============
  536.  
  537. - Adds the Lucidux Sans PostScript font as a sample (fonts/lcdxsr.*).
  538.  
  539. - Adds code page definitions for all ISO 8859 flavors and Windows 125X
  540.   code pages (fonts/*.cpg).
  541.  
  542. - Adds a PDI demo client in C (pdfimpose.c), and the quick reference
  543.   and personalize demos for all supported language bindings.
  544.  
  545. - Adds a few user-contributed improvements to the image client (pdfimage.c).
  546.  
  547. - Removes config/pdflib.m4 since it is no longer required.
  548.  
  549.  
  550. Bindings
  551. ========
  552.  
  553. PHP:
  554.   - Adds a supported language binding for PHP (bind/php/*).
  555.  
  556. Java:
  557.   - Introduces PDF_VOLATILE in order to prevent scores of compiler
  558.     warnings when building the wrapper (pdflib_java.c).
  559.  
  560. Perl:
  561.   - Introduces PDF_VOLATILE in order to prevent scores of compiler
  562.     warnings when building the wrapper (pdflib_pl.c).
  563.  
  564. Python:
  565.   - Introduces PDF_VOLATILE in order to prevent scores of compiler
  566.     warnings when building the wrapper (pdflib_py.c).
  567.  
  568. Tcl:
  569.   - Implements an initialization function to make the PDFlib extension
  570.     work with safe builds of the Tcl interpreter (pdflib_tcl.c).
  571.  
  572.   - Introduces PDF_VOLATILE in order to prevent scores of compiler
  573.     warnings when building the wrapper (pdflib_tcl.c).
  574.  
  575.  
  576. V3.5.0 (February 01, 2001)
  577. ==========================
  578.  
  579. This version has only been released to a few customers.
  580.  
  581.  
  582. New features
  583. ============
  584.  
  585. - Makes the CMYK functions supported API members (p_color.c).
  586.  
  587. - Makes PDF_arcn() a supported API function (p_draw.c).
  588.  
  589. - Makes PDF_add_thumbnail() a supported API function (p_draw.c).
  590.  
  591. - Implements the template feature (p_image.c, p_template.c, p_intern.h,
  592.   p_basic.c, p_text.c, pdflib.h, Makefile.in).
  593.  
  594. - Implements TrueType font support (p_font.c, p_afm.c, p_pfm.c, p_font.h,
  595.   p_util.c, p_basic.c, p_truetype.c, p_truetype.h, p_intern.h, p_cid.h,
  596.   p_metrics.h, Makefile.in).
  597.  
  598.  
  599. Bug fixes and enhancements
  600. ==========================
  601.  
  602. - PDF_open_mem() didn't work due to a typo (p_basic.c).
  603.  
  604. - PDF_set_parameter(p, "flush", "none") didn't work due to a typo (p_basic.c).
  605.  
  606.  
  607. Build process, distribution, and platform support
  608. =================================================
  609.  
  610. - Improvements for Mac OS X:
  611.   - Makes libtool generate shared libraries (.dylib) on Mac OS X (ltconfig,
  612.     ltmain.sh).
  613.  
  614.  
  615. Distribution
  616. ============
  617.  
  618. - Introduces the new major.minor.revision version numbering scheme
  619.   (many files).
  620.  
  621.  
  622. Bindings
  623. ========
  624.  
  625. Java:
  626.   - Makes the Java wrapper compatible with Mac OS X (pdflib_java.c).
  627.  
  628.  
  629. Tcl:
  630.   - Configure now finds the Tcl header on Mac OS X (configure.in).
  631.  
  632.  
  633. V3.03 (December 22, 2000)
  634. =========================
  635.  
  636. Bug fixes and enhancements
  637. ==========================
  638.  
  639. - Contrary to the documentation, a == sequence in the UPR file didn't
  640.   guarantee absolute file names (no directory prefix applied) if a
  641.   prefix has been set using PDF_set_parameter(). This especially affected
  642.   the ActiveX edition where the wrapper always set a prefix, and
  643.   absolute resource names couldn't effecitvely be used. Similarly,
  644.   the "==" syntax now works with when resources are set dynamically via
  645.   PDF_set_parameter(). (p_util.c, p_basic.c).
  646.  
  647. - Makes the JPEG reader more robust against damaged files (p_jpeg.c).
  648.  
  649. - Implements an option in the image converter for printing details
  650.   for damaged image files (clients/pdfimage.c).
  651.  
  652. - Implements PDF_get_value() for the following parameters:
  653.   leading, textrise, horizscaling, textrendering, charspacing, wordspacing.
  654.   Implements PDF_get_parameter() for the following parameters:
  655.   overline, underline, strikeout.
  656.  
  657. - Reworks implementation and documentation of PDF_arc(), and fine-tunes
  658.   several other graphics functions in the process (p_draw.c):
  659.   - Re-implements the algorithm for cutting down arcs into smaller
  660.     segments. This fixes a number of subtle bugs with certain parameter
  661.     combinations, and introduces clearer documentation for all cases,
  662.     including degenerate ones.
  663.  
  664.   - Defines the magic arc variable for the PDF_circle() algorithm
  665.     with 8 instead of 4 decimal places in order to increase the
  666.     accuracy (p_draw.c).
  667.  
  668.   - Introduces clear semantics for the behaviour of PDF_arc() and
  669.     other functions when a current point is available, and when no
  670.     current point has previously been set.
  671.  
  672.   - Introduces a (currently unsupported) PDF_arcn() function for
  673.     drawing arcs in clockwise direction.
  674.  
  675. - Removes the clearing loop for debug flags in PDF_new2() since the
  676.   memset() for the PDF structure clears those anyway (p_basic.c).
  677.  
  678. - Fixes subtle bugs in the text handling (p_text.c):
  679.   - The combination of word or character spacing != 0 and underline/
  680.     overline/strikeout text resulted in wrong text positioning.
  681.  
  682.   - After PDF_show_boxed() the call PDF_get_value("texty",0) returned
  683.     a vertical position which was one line too high under the same
  684.     circumstances as above.
  685.  
  686. - Allows the external and internal data types for floating point
  687.   calculations to be redefined via a #define. This is intended for
  688.   applications which require improved accuracy, and not supported in the
  689.   general case due to platform and binary compatibility issues (pdflib.h).
  690.  
  691. - Implements a check to make sure that PDF_save() and PDF_restore() calls
  692.   are balanced at the end of a page (p_basic.).
  693.  
  694. - Removed the SWIG preprocessor conditionals since we don't use SWIG
  695.   any more (pdflib.h).
  696.  
  697. - Fixes a bug in PDFlib's object machinery, related to PDF page object
  698.   numbers. Fortunately, the bug occurred only under very rare and subtle
  699.   circumstances, but was severe nevertheless because it resulted in
  700.   damaged PDF output, and erroneous "allocated but not used" messages
  701.   (p_basic.c).
  702.  
  703. - Changes the output accuracy of floating point numbers from four to
  704.   six decimal places. This slightly affects output file size, but was
  705.   necessary to defeat some accuracy problems. For example, stitching
  706.   individual stripes of striped TIFF images could lead to visual
  707.   artifacts in Acrobat (p_util.c).
  708.  
  709. - Corrected a typo in the error message for bad page sizes with Acrobat
  710.   4 compatibility (p_basic.c).
  711.  
  712. - Implements support for setting the document's base URI (p_intern.h,
  713.   p_basic.c).
  714.  
  715. - Changes the PNG error handling in order to make it source- and binary-
  716.   compatible with libpng 1.08. and 1.1 (p_png.c).
  717.  
  718. - Fixes two problems in PDF_show_boxed() (p_text.c):
  719.   - Certain forced line breaks could cause a single character to disappear.
  720.   - Forced line breaks could cause the preceding line to be ragged even
  721.     in "justify" or "fulljustify" mode.
  722.  
  723. - Improves TIFF handling:
  724.   - Does no longer throw an exception if the imagewarning parameter is
  725.     set to true, and the requested image number in a multi-page TIFF can
  726.     not be retrieved (p_tiff.c).
  727.  
  728.   - Moves an increment operator outside a function call because the
  729.     variable has been used as function parameter twice. This is not
  730.     portable because the order of parameter evaluation is platform-
  731.     dependent. The Compaq True64 compiler correctly spotted this (p_tiff.c).
  732.  
  733.   - Rejects TIFF images with a color depth other than 1, 2, 4, or 8 bits
  734.     per sample since other values are not supported by PDF (p_tiff.c).
  735.  
  736.   - Changed the parameter handling for CCITT G3-compressed TIFF images,
  737.     preventing "Read less image data than expected" messages in Acrobat
  738.     (p_tiff.c).
  739.  
  740.   - Failure of the TIFF library to read an image file could result in a
  741.     crash (p_tiff.c).
  742.  
  743. - Made the AFM parser stricter in checking the 'StartCharMetrics' entry
  744.   against the actual number of character entries in the file. This
  745.   makes PDFlib more robust in case of bad AFMs, but may result in
  746.   AFMs being rejected which previously have been accepted (p_afm.c).
  747.  
  748. - Implements support for an arbitrary number of user-defined document
  749.   information fields (p_hyper.c, p_intern.h).
  750.  
  751. - The allowed range in the encoding parser was wrong, and must be 0-255
  752.   instead of 1-256 (p_util.c).
  753.  
  754. - Changed two entries in the Latin 2 encoding file since Adobe fonts
  755.   use the character names T/tcommaaccent instead of T/tcedilla
  756.   (fonts/iso8859-2.enc).
  757.  
  758. - Adds unsupported code for generating the Crop, Bleed, Trim, and
  759.   Art boxes in addition to the MediaBox. Later these will be adjustable
  760.   by the client (p_intern.h, p_basic.c).
  761.  
  762. - Prevents multiple PDF_open_*() calls without a matching PDF_close()
  763.   (p_basic.c).
  764.  
  765. - Referenced images were lacking an endobj token at the end of their
  766.   (empty) data section (p_image.c).
  767.  
  768. - Prevents the use of flush points from language bindings other than
  769.   C or C++ (p_basic.c).
  770.  
  771. - Two format strings for error messages were wrong in PDF_get_parameter()
  772.   (p_basic.c).
  773.  
  774. - Issue a NonfatalError when the obsolete function PDF_endpath() is
  775.   called (p_draw.c).
  776.  
  777. - Calling PDF_get_parameter(p, "resy", image) with an invalid image
  778.   parameter resulted in a crash. Ironically, the crash occurred due to
  779.   a malformed argument when the error message was formatted (p_basic.c).
  780.  
  781. - The test program accidentally set the embedding parameter in several
  782.   samples to 1 instead of 0 (pdftest.c).
  783.  
  784. - Implements the "fontwarning" parameter. The default value is "true";
  785.   setting it to "false" makes PDF_findfont() return -1 instead of throwing
  786.   an exception (p_basic.c, p_font.c, p_util.c, p_intern.h).
  787.  
  788. - Using PDF_findfont() before a document has been opened now results
  789.   in a RuntimeError (p_font.c).
  790.  
  791. - Implements a thumbnail hook for a customer. However, this hook is
  792.   not available in the general version, and not yet supported in 
  793.   language bindings other than C (p_image.c).
  794.  
  795. - Allows the base 14 fonts to be embedded (p_fonts.c).
  796.  
  797. - Documents and implements the fact that /Producer and /CreationDate
  798.   are not allowed as user-defined info keys (p_hyper.c).
  799.  
  800. - Ensures that PDF_setfont() and PDF_stringwidth()/PDF_stringwidth2()
  801.   cannot be called outside of page descriptions (p_text.c, p_font.c).
  802.  
  803. - Safeguards against internal attempts at malloc()'ing 0 bytes (p_basic.c).
  804.  
  805. - Fixes a number of EBCDIC-related bugs:
  806.   - The description and author fields in PDF_attach_file() haven't been
  807.     properly converted to PDFDocEncoding (p_annots.c).
  808.  
  809.   - PFA font files were treated wrongly (p_font.c).
  810.  
  811.   - PFM metrics file handling didn't work (p_pfm.c).
  812.  
  813.   - The "ebcdic" value of the encoding enum was wrong. This resulted in the
  814.     compiled-in metrics not being found on native EBCDIC platforms
  815.     (p_intern.h).
  816.  
  817.   - The debug array in the PDF struct was too small for use with
  818.     control characters from the EBCDIC character set (p_intern.h).
  819.  
  820.   - The test for compilation on EBCDIC platforms didn't work reliably
  821.     (p_config.h).
  822.  
  823.   - Introduces a flavor of the poem text where German special characters
  824.     are encoded for EBCDIC (pdftest.c).
  825.  
  826.   - The Unicode sample for document info entries was defined too ASCII-
  827.     centric in the demo program, and produced bad results (pdftest.c).
  828.  
  829. - Fixes a typo in the unsupported CMYK functions (p_color.c).
  830.  
  831. - Fixes the compile_metrics utility which was broken (util/compile_metrics.c).
  832.  
  833. - Font metrics read in from a PFM file caused a memory leak. The function
  834.   pdf_cleanup_font_struct() now works with all types of fonts, and is
  835.   also called for fonts read in from PFM files (p_font.c, p_afm.c, p_intern.h).
  836.  
  837.  
  838. Build process, distribution, and platform support
  839. =================================================
  840.  
  841. - Fixes a few configure buglets, and adds a new option (configure.in):
  842.   - The --disable-cxx and --enable-cxx=no options didn't work;
  843.  
  844.   - The --disable-shared-pdflib and --enable-shared-pdflib=no options
  845.     didn't work;
  846.  
  847.   - Implements --enable-profile.
  848.  
  849. - Modifies "make install" in the pdflib subdirectory to do different
  850.   things with the static vs. shared library (pdflib/Makefile.in).
  851.  
  852. - Added an encoding file for Windows code page 1250 (central european)
  853.   (fonts/cp1250.enc, fonts/pdflib.upr), and changes T/tcedilla to
  854.   T/tcommaaccent in order to match Adobe conventions (fonts/iso8859-2.enc).
  855.  
  856. - Enhancements for MacOS X server/Rhapsody 5.6/Darwin (configure.in).
  857.   Set with_gnu_ld=yes which is required for GNU libtool (not to be
  858.   confused with Apple's libtool).
  859.  
  860. - S/390 enhancements:
  861.   - Adds a new branch for shared library/DLL options on the S/390 in
  862.     the libtool database (ltconfig).
  863.  
  864.   - Patches the libtool input for EBCDIC compatibility, and moves the
  865.     source file names in compiler commands to the end for c89 (ltmain.sh).
  866.  
  867.   - Introduces a dedicated distribution kit for S/390, which has all
  868.     text files converted to EBCDIC already (Makefile.in).
  869.  
  870.   - Uses compress instead of gzip for the S/390 distribution (Makefile.in).
  871.  
  872.   - Removes the PDF_PLATFORM since it is now supplied by the configure
  873.     script (p_config.h).
  874.  
  875.   - Adds -DOS390 to the compiler options if appropriate, and sets the CC
  876.     and LD variables (configure.in).
  877.  
  878.   - Changes a test for OS/2 in order to not catch S/390 (pdflib.h).
  879.  
  880.   - Introduces a compile-time switch to distinguish between Unix System
  881.     Services and MVS on the S/390 (p_config.h, p_util.c).
  882.  
  883. - Installing the static C library didn't work due to a typo
  884.   (pdflib/Makefile.in).
  885.  
  886.  
  887. Bindings
  888. ========
  889.  
  890. - Added a call to PDF_close_image() in the image samples for all language
  891.   bindings (bind/*/image.*).
  892.  
  893. - C++:
  894.   - Implements unsupported wrapper functions for the CMYK functions
  895.     (pdflib.hpp, pdflib.cpp).
  896.  
  897. - Java:
  898.   - Adds information on building the Java wrapper on S/390 (readme.txt).
  899.  
  900.   - Adds information about Apple WebObjects (readme.txt).
  901.  
  902.   - Adds information about J2EE and Apache JServ deployment (readme.txt).
  903.  
  904.   - Adds the JNI header path for MacOS X server (configure.in).
  905.  
  906.   - Adds the JNI header path for S/390 (configure.in).
  907.  
  908.   - Searches $JAVAINCLUDE/mvs for machine-dependent JNI headers (configure.in).
  909.  
  910.   - Makes the Java wrapper EBCDIC-safe, and implements changes required
  911.     for the JNI on S/390 (pdflib_java.c).
  912.  
  913. - Perl:
  914.   - Searches for Perl 5.7.0 (configure.in).
  915.  
  916.   - Sets the standard output to binary mode in the CGI sample
  917.     (pdfclock.pl.cgi).
  918.  
  919. - Python:
  920.   - Includes an "oldpython" configuration to build the PDFlib extension
  921.     for Python < 2.0 on Windows (Python.dsp). PDFlib binaries for Python
  922.     1.x and 2.0 are included in the Windows binary distribution.
  923.  
  924.   - Updates the configure script for Python 2.0 (configure.in).
  925.  
  926. - Tcl:
  927.   - Searches for Tcl 8.4 (configure.in).
  928.  
  929.  
  930. Documentation
  931. =============
  932.  
  933. - Splits the manual in an ActiveX edition and another one for all
  934.   other language bindings (doc/PDFlib-manual.pdf).
  935.  
  936. - Improved the form fields in the PDFlib order form (PDFlib-purchase-order.pdf).
  937.  
  938. - Documents a workaround for problems when viewing the PDFlib purchase
  939.   order form with Acrobat Reader on Unix/Linux (doc/readme_unix.txt).
  940.  
  941. - Adds ColdFusion examples and documentation to the ActiveX edition.
  942.  
  943.  
  944.  
  945. V3.02 (August 22, 2000)
  946. =======================
  947.  
  948.  
  949. Bug fixes and enhancements
  950. ==========================
  951.  
  952. - Added state checks to the text functions (p_text.c).
  953.  
  954. - Refined the error handling in PDF_open_image (p_basic.c, p_image.c).
  955.  
  956. - Deactivated the default prefix entry in the UPR file because it could
  957.   cause confusion with the ActiveX edition (pdflib.upr).
  958.  
  959. - Multi-strip TIFF images didn't work correctly when placed with a scaling
  960.   factor != 1 (p_image.c).
  961.  
  962. - Implements a macro which aids in overcoming differences in libpng
  963.   versions when it comes to accessing the setjmp buffer (p_png.c).
  964.  
  965. - Fine-tuned the OS/2 test in p_config.h.
  966.  
  967. - Allow negative box width and height in PDF_show_boxed() (p_text.c).
  968.  
  969. - Added the debug version of the C runtime library to the debug configuration
  970.   of the MSVC test and pdflib projects (test/test.dsp, pdflib/pdflib.dsp).
  971.  
  972. - Under certain circumstances the GIF reader didn't work correctly due to
  973.   missing variable initialization (p_gif.c).
  974.  
  975. - pdftest.c couldn't be compiled in strict ANSI mode by some compilers due to
  976.   two misplaced statements (which actually only serve as warning preventers)
  977.   (pdftest.c).
  978.  
  979. - Added an #if conditional because the Intel version of the Metrowerks compiler
  980.   doesn't have setmode() (p_basic.c).
  981.  
  982. - PDF_open_fp() resulted in a crash or PDFlib exception because the file pointer
  983.   got overwritten due to wrong initialization order (p_basic.c).
  984.  
  985.  
  986. Build process, distribution, and platform support
  987. =================================================
  988.  
  989. - Adds more AS/400 relevant information (doc/readme_ebcdic.txt).
  990.  
  991. - Includes the files in the fonts directory in the binary distributions.
  992.  
  993. - Extended the CodeWarrior project file for dual use on both Mac and
  994.   Windows, and updated to CodeWarrior Pro 5 (PDFlib.mcp).
  995.  
  996. - Fine-tuned support for S/390 (p_config.h, p_util.c).
  997.  
  998. - Removed an obsolete file (pdflib/makefile.bcc).
  999.  
  1000.  
  1001. Bindings
  1002. ========
  1003.  
  1004. - C:
  1005.   - PDF_delete() was missing from two C samples (hello.c, image.c) and
  1006.     a demo client (clients/text2pdf.c);
  1007.  
  1008. - Java:
  1009.   - No longer calls PDF_delete() in the Java exception generating mechanism
  1010.     since this may lead to multiple calls due to interference with PDFlib's
  1011.     finalize() method. This should fix long-standing problems with
  1012.     exceptions in some Java environments, especially Servlet engines
  1013.     (pdflib_java.c).
  1014.  
  1015.   - Adds a classFinalize() method (pdflib.java).
  1016.  
  1017.   - Adds throws clauses to all PDFlib Java and native methods. This change
  1018.     required the addition of an import statement (pdflib.java).
  1019.  
  1020.   - Adds throws clauses to all examples.
  1021.  
  1022.   - Renames the Java servlet example to PDFlibServlet.java.
  1023.  
  1024.   - Adds notes on using PDFlib with IBM WebSphere Application server
  1025.     and Allaire JRun (bind/java/readme.txt).
  1026.  
  1027.  
  1028. Documentation
  1029. =============
  1030.  
  1031. - Marks PDF_endpath() as deprecated (pdflib.h).
  1032.  
  1033. - Replaced the order form with an interactive version
  1034.   (doc/PDFlib-purchase-order.pdf).
  1035.  
  1036.  
  1037. V3.01 (July 1, 2000)
  1038. =====================
  1039.  
  1040. New features and API
  1041. ====================
  1042.  
  1043. This release is binary-compatible to 3.0, but adds a few new features
  1044. which are accessible through additional parameters to existing functions:
  1045.  
  1046. - Implements the "fontencoding" parameter for retrieving the encoding of the
  1047.   current font (p_basic.c, p_font.c).
  1048.  
  1049. - Implements "blind" mode in PDF_show_boxed() in order to check whether or not a
  1050.   string fits in a given box (p_text.c).
  1051.  
  1052. - Adds support for multipage TIFF images via the "page" parameter
  1053.   of PDF_open_image_file() (p_tiff.c).
  1054.  
  1055. - Implements pass-through mode for a variety of TIFF compression schemes.
  1056.   Compressed image data is no longer decompressed and recompressed, resulting
  1057.   in much faster TIFF procecessing. Correctly dealing with multi-strip images
  1058.   required rewriting parts of the image machinery (p_tiff.c, p_image.c,
  1059.   p_intern.h).
  1060.  
  1061. - Adds support for CMYK TIFF images (p_tiff.c).
  1062.  
  1063. - Implements pass-through mode in the GIF handler. This results in much faster
  1064.   GIF processing, but unfortunately restricts the number of supported GIF flavors
  1065.   to 8-bit, non-interlaced. As a side effect, this decreases the memory footprint
  1066.   of each PDF instance by more than 64 KB (p_gif.c, p_intern.h).
  1067.  
  1068. - Implements the "openmode" parameter for setting the initial
  1069.   display of bookmarks, thumbnails, or fullscreen mode (p_intern.h,
  1070.   p_basic.c, p_hyper.c).
  1071.  
  1072. - Implements the "bookmarkdest" parameter which allows changing the
  1073.   destination view of individual bookmarks (p_intern.h, p_hyper.c,
  1074.   p_basic.c).
  1075.  
  1076. - Implements the "imagewarning" parameter which allows the client to get more
  1077.   detailed information about why PDF_open_image_file() or PDF_open_CCITT() failed
  1078.   (p_basic.c, p_jpeg.c, p_gif.c, p_tiff.c, p_png.c, p_ccitt.c).
  1079.  
  1080.  
  1081. Bug fixes and enhancements
  1082. ==========================
  1083.  
  1084. - Outputs \r and \n in strings with a preceding backslash which seems to be
  1085.   required for proper handling of linebreaks in annotations (p_text.c).
  1086.  
  1087. - Eliminate the exception caused by unknown category entries in the resource
  1088.   files.
  1089.   This behavior caused unnecessary exception when UPR files were created with the
  1090.   makepsres utility (p_util.c).
  1091.  
  1092. - Implements an unsupported "memory32" mode for 32-bit aligned memory images in
  1093.   PDF_open_image() (p_image.c).
  1094.  
  1095. - Negative horizontal scaling was taken into account for the underline/overline/
  1096.   strikeout distance from the baseline including its sign, which is wrong
  1097.   (p_text.c).
  1098.  
  1099. - Increased several of the initial allocation chunk sizes since we saved 64K by
  1100.   the rewrite of the GIF module (p_intern.h).
  1101.  
  1102. - Uses pdf_end_path() more efficiently in PDF_endpath() (p_draw.c).
  1103.  
  1104. - After an image was rejected the next image could suffer from left-over
  1105.   information from the rejected image since proper initialization was missing
  1106.   (p_image.c).
  1107.  
  1108. - Allows the compression level to be changed within a page description
  1109.   (p_basic.c).
  1110.  
  1111. - Removed the warning about page sizes which are incompatible to Acrobat 3
  1112.   which was issued by default when a page was too large or too small. Now
  1113.   a RuntimeError is generated only in Acrobat 3 compatibility mode (p_basic.c).
  1114.  
  1115. - PDF_close() closed the file handle even if it was provided by the client
  1116.   through PDF_open_fp() which is a bad attitude towards clients (p_basic.c).
  1117.  
  1118. - PDF_open_mem() was broken: it provoked a wrong error message due to missing
  1119.   initialization (p_basic.).
  1120.  
  1121. - Removed a number of obsolete functions which were no longer supported in
  1122.   PDFlib 3.0 but still available (p_jpeg.c, p_gif.c, p_tiff.c, p_gstate.c,
  1123.   p_text.c, p_hyper.c, pdflib.h, p_intern.h, p_basic.c, 
  1124.   bind/[perl|tcl|python]/pdflib_*.c).
  1125.  
  1126. - PDF_add_note interprets an empty icon parameter equivalent to a NULL value
  1127.   (p_annots.c).
  1128.  
  1129. - Setting the transition parameter to an empty string is now equivalent to
  1130.   a NULL string value, and resets the transition to default (p_hyper.c).
  1131.  
  1132. - Replaces the GIF test image with a non-interlaced version (test/pdflib.gif).
  1133.  
  1134. - Eliminates a superfluous moveto in PDF_arc() when the current point and the
  1135.   starting point of the arc coincide. The redundant moveto broke subsequent
  1136.   closepath and fill behaviors (p_draw.c).
  1137.  
  1138. - Changed several hex characters in strings to octal notation (pdftest.c).
  1139.  
  1140. - Added a few casts to satisfy C++ compilers (p_font.c, p_pfm.c).
  1141.  
  1142. - Re-implements PDF_set_text_matrix(), which is currently neither documented in
  1143.   the manual nor supported (p_text.c, pdflib.h).
  1144.  
  1145. - Adds the "nativeunicode" parameter to Unicode-aware language wrappers in order
  1146.   to disable native Unicode processing. The default value is false (p_basic.c).
  1147.  
  1148. - The "defined" preprocessor instruction was missing for the __BORLANDC__
  1149.   identifier (p_config.h).
  1150.  
  1151. - Safeguards the interpretation of encoding and UPR files on Unix from
  1152.   Windows-style lineends (p_util.c).
  1153.  
  1154. - An infinite loop could result when trying to attach a non-existent
  1155.   file with PDF_attach_file (p_basic.c).
  1156.  
  1157. - The return type of PDF_get_buffer() was missing a const qualifier
  1158.   (pdflib.h, p_basic.c).
  1159.  
  1160. - Separates the generation of a multi-threaded test program from the
  1161.   WIN32 environment in order to simplify building non-threaded tests
  1162.   with non-MS compilers (test/pdftest.c).
  1163.  
  1164. - Removes several warnings about redundant variable assignments which
  1165.   were uncovered by the Borland compiler (p_afm.c, p_basic.c, p_draw.c,
  1166.   p_filter.c, p_font.c, p_jpeg.c, p_pfm.c, p_util.c, test/pdftest.c).
  1167.  
  1168. - PDF_get_value() could crash when called with bad parameters. Ironically,
  1169.   the crash was not caused by the bad parameters but by a bug in the
  1170.   error message complaining about the bad parameters (p_basic.c).
  1171.  
  1172. - PDF_setfont() and PDF_stringwidth2() now accept negative font sizes.
  1173.   The horizontal scaling factor may now also be negative.
  1174.   The underline/overline/strikeout functions use the absolute value
  1175.   of the calculated line width to ensure that the line width will be
  1176.   positive (p_font.c, p_text.c).
  1177.  
  1178. - Changed the name of the "byte" typedef to "pdf_byte" (p_intern.h, many *.c).
  1179.  
  1180. - Changed the default encoding in text2pdf.c from "winansi" to "host",
  1181.   and adds a command line option for the text encoding (pdftest.c).
  1182.  
  1183. - The formula for calculating Bezier control points for the arc
  1184.   approximation gave wrong results due to a missing cast (!) in the
  1185.   C expression, resulting in ugly circle segments for certain parameter
  1186.   combinations (p_draw.c).
  1187.  
  1188. - The vertical start position of the text line could be reset to 0 if graphics
  1189.   operators were issued between the PDF_show_xy and PDF_continue_text()
  1190.   calls (p_text.c).
  1191.  
  1192. - Text output could be positioned one line too high if the character
  1193.   or word spacing was set != 0 because the leading value was not
  1194.   set correctly in PDF_show() and PDF_show_xy(). This bug also affected
  1195.   the horizontal positioning of PDF_show_boxed() (p_text.c).
  1196.  
  1197. - PDF_continue_text now honors empty strings, i.e., moves to the start
  1198.   of the next line if the supplied string is empty (p_text.c).
  1199.  
  1200. - The ISO 8859-2 encoding file had typos in the Zacute and Racute
  1201.   entries (iso8859-2.enc).
  1202.  
  1203. - CMYK JPEG images resulted in corrupt PDF output due to a typo (p_image.c).
  1204.  
  1205. - Fixed a non-portable construct involving the increment operator which
  1206.   resulted in wrong code when optimizing on True64 Unix (test/pdftest.c).
  1207.  
  1208.  
  1209. Build process, distribution, and platform support
  1210. =================================================
  1211.  
  1212. - Introduced a new configuration "no auxiliary libs" for MSVC for building
  1213.   PDFlib without any auxiliary library present (*.dsp).
  1214.  
  1215. - Changes the sample projects for MSVC++ from pdfclock to hello because this
  1216.   is better suited as the first example (c.dsp, cpp.dsp).
  1217.  
  1218. - Makes the math library linker option (usually -lm) configurable via an option.
  1219.   This is only rarely required. The option is empty on MacOS X/Darwin
  1220.   (configure.in).
  1221.  
  1222. - On Windows, switches to static versions of libpng, tifflib, and libz, and
  1223.   renamed libpng_static.lib to libpng.lib (*.dsp).
  1224.  
  1225. - Adds support files for Borland C++ Builder 5.0 (*.bpf, *.bpr).
  1226.  
  1227. - Adds -pthreads to the compiler options on OSF1 (configure.in).
  1228.  
  1229. - Libtool output was sent to /dev/null in the bind Makefiles, which is
  1230.   a bad idea, and was changed (bind/*/Makefile.in).
  1231.  
  1232. - By default the C++ binding is no longer enabled, since few people seem to
  1233.   actually use it and inconsistent handling of the standard C++ library causes
  1234.   frequent configuration trouble on several systems. It can be enabled with the
  1235.   --enable-cxx configure option (configure.in).
  1236.  
  1237. - Changed the name of the C++ configure option from --with-cxx to the more
  1238.   appropriate --enable-cxx (configure.in).
  1239.  
  1240. - Removes -ljpeg and -lz from the TIFFlib tests in the configure script, since
  1241.   these are't always required for libtiff, and missing additional libraries may
  1242.   cause linker error messages on some platforms if not installed. Platforms
  1243.   which require auxiliary libraries for TIFFlib can configure those with the
  1244.   new --with-tiffauxlib option (configure.in).
  1245.  
  1246. - Changes the shared library mechanism in order to avoid problems with
  1247.   multiple dependent shared libs on platforms which don't support inter-
  1248.   library dependencies, or when the user doesn't have root privilege for
  1249.   installing the PDFlib shared library, for example on an ISP's server
  1250.   (configure.in, pdflib-config.in, all Makefile.in):
  1251.  
  1252.   - PDFlib is built as a libtool convenience library by default.
  1253.  
  1254.   - C/C++ language clients which prefer a shared PDFlib can request this via
  1255.     the --enable-shared-pdflib configure option. Other language bindings
  1256.     will not be available when this option is used.
  1257.  
  1258.   - Using non-installed versions of the auxiliary libraries now works as
  1259.     expected, but requires them to be built as static libs. Problems may
  1260.     arise if a local library directory contains a shared version of some
  1261.     auxiliary lib. The configure script will warn about this situation.
  1262.  
  1263.   - The PDFlib library will only be installed if it was built as a shared
  1264.     object. "make install" will install pdflib.h always, however.
  1265.  
  1266.   - All language wrapper libraries are still shared, but pull in the PDFlib core
  1267.     into the respective shared library.
  1268.  
  1269. - Removes the dependencies from the client Makefile (clients/Makefile.in, configure.in).
  1270.  
  1271. - The client and util Makefiles didn't use the configure-supplied macro for the
  1272.    name of the PDFlib core library (clients/Makefile.in, util/Makefile.in).
  1273.  
  1274. - Switches to libtool 1.3.5 (config/*).
  1275.  
  1276. - Removed all space characters after the -I compiler options since some
  1277.   compilers don't like this (configure.in).
  1278.   
  1279. - Includes an encoding definition file for ISO 8859-9/Turkish, also
  1280.   known as Latin Alphabet No 5 (!) with additional character entries
  1281.   for Windows codepage 1254, and includes a corresponding
  1282.   entry in the UPR file (fonts/iso8859-9.enc, fonts/pdflib.upr).
  1283.  
  1284. - Removes an obsolete file (test/graphdata).
  1285.  
  1286. - The "clean" target didn't check whether or not a certain language
  1287.   binding actually had been built, resulting in errors for a global
  1288.   "make clean" (configure.in, Makefile.in).
  1289.  
  1290. - Sets the LANG variable to empty string before calling the date
  1291.   command. Otherwise %p depends on the LANG setting, and may not
  1292.   work (Makefile.in).
  1293.  
  1294. - Adds the list of dependent libraries (PDFLIBLINK) when linking the
  1295.   PDFlib shared library via libtool. Some platforms such as AIX require
  1296.   the names of all dependent libraries to be coded into the shared library
  1297.   file (pdflib/Makefile.in).
  1298.  
  1299. - Fixed a number of EBCDIC-related bugs:
  1300.   - Bookmarks and annotation text didn't get converted to ASCII (p_hyper.c).
  1301.   - User-defined document information field names got converted to
  1302.     ASCII just one time too often, resulting in bad output (p_hyper.c).
  1303.   - The open mode for fopen() must be set to binary ("rb" and "wb"),
  1304.     otherwise PDF output will be screwed up, and images don't work
  1305.     (p_config.h).
  1306.  
  1307. - Removed all occurrences of "-lc" in configure.in.
  1308.  
  1309. - When searching for the TIFF library configure didn't check the lib
  1310.   subdirectory of any directory supplied via the --with-tifflib= option,
  1311.   contrary to the search applied for zlib and libpng, and the TIFFlib
  1312.   header files (configure.in).
  1313.  
  1314. - Implements config/pdflib.m4 for use with the configure process of other
  1315.   packages which need to test for the availability of PDFlib.
  1316.  
  1317. - Includes pdflib-config as an aid in configuring other packages which
  1318.   want to use PDFlib (configure.in, pdflib-config.in).
  1319.  
  1320. - Fixed a typo in the SUFFIXES line which adversely affected some
  1321.   non-GNU makes (pdflib/Makefile.in).
  1322.   
  1323. - Added a precompiler test for the EMX compiler on OS/2 (p_config.h).
  1324.  
  1325.  
  1326. Bindings
  1327. ========
  1328.  
  1329. - C:
  1330.   - Includes an image sample (image.c).
  1331.  
  1332.   - The improved libtool scheme revealed a bug in the ordering of
  1333.     object files in the Makefile (Makefile.in).
  1334.  
  1335. - C++:
  1336.   - Changed the name of the preprocessor define BROKEN_BOOL to PDF_BROKEN_BOOL
  1337.     (pdflib.hpp, pdflib.cpp).
  1338.  
  1339.   - Changed the C++ test files to return 0 (hello.cpp, image.cpp, pdfclock.cpp).
  1340.  
  1341.   - Added several casts to properly deal with the size method of C++
  1342.     strings (pdflib.cpp).
  1343.  
  1344.   - get_parameter() was accidentally missing from the wrapper code
  1345.     (pdflib.hpp, pdflib.cpp).
  1346.  
  1347.   - Adjusted the return type of PDF_get_buffer() (pdflib.hpp, pdflib.cpp).
  1348.  
  1349.   - Includes an image sample (image.cpp).
  1350.  
  1351.   - The improved libtool scheme revealed a bug in the ordering of
  1352.     objects in the Makefile (Makefile.in).
  1353.  
  1354.   - Changed the preprocessor conditionals for name space handling (pdflib.hpp).
  1355.  
  1356.   - Separates out the name of the standard C++ library, and sets it from
  1357.     the configure script. Determining whether it is required is however
  1358.     not yet finally implemented (configure.in, Makefile.in).
  1359.  
  1360. - Java:
  1361.   - Adds /jdk1.2.[123] to the list of directories to be searched for the Java
  1362.     header files for the benefit of Cygwin users (configure.in).
  1363.  
  1364.   - Adds /usr/local/java and /usr/local/java/alpha to the list of
  1365.     directories to be searched for the Java header files (configure.in).
  1366.  
  1367.   - Implements the "nativeunicode" parameter (pdflib_java.c).
  1368.  
  1369.   - Includes a servlet sample (hello_servlet.java).
  1370.  
  1371.   - Makes the exception handling in the Java wrapper thread-safe, which was
  1372.     the last step to a completely thread-safe Java binding (pdflib_java.c).
  1373.  
  1374.   - Adds some notes on using PDFLib with Borland/Inprise JBuilder (readme.txt).
  1375.  
  1376.   - The error message for a bad PDFlib version used only a single significant
  1377.     digit (pdflib_java.c).
  1378.  
  1379.   - PDF_concat() had accidentally been declared public instead of private
  1380.     (pdflib.java).
  1381.  
  1382.   - Includes an image sample (image.java).
  1383.  
  1384.   - Implements several changes which are necessary for the AS/400 JNI
  1385.     implementation where jlong is a struct (pdflib_java.c):
  1386.  
  1387.     - Removes an unneccesary jlong initializer in the wrapper code of
  1388.       PDF_new().
  1389.  
  1390.     - Casts NULL to jbyteArray in the wrapper of PDF_get_buffer().
  1391.  
  1392.     - Adds a cast to the (jbyte *) argument of ReleaseByteArrayElements().
  1393.  
  1394.     - Conditionally uses a JNI-supplied macro for the assignment of
  1395.       jlong to long.
  1396.  
  1397.   - Made changes to the configure script in order to support the Kaffe
  1398.     VM which doesn't use the common jni_md.h in its JNI implementation
  1399.     (configure.in).
  1400.  
  1401.   - Relaxed javadoc generation since Kaffe doesn't have a javadoc
  1402.     implementation (Makefile.in).
  1403.  
  1404.   - The Unicode converter didn't report back the correct string length
  1405.     if the string was empty (pdflib_java.c).
  1406.  
  1407.   - libtool versioning information was missing (Makefile.in).
  1408.  
  1409. - Perl:
  1410.   - Links the Perl wrapper against the Perl library on AIX, Cygwin, and
  1411.     OSF/1 (configure.in).
  1412.  
  1413.   - Removed a number of obsolete functions which were no longer supported in
  1414.     PDFlib 3.0 but still available (see doc/compatibility.txt for details).
  1415.  
  1416.   - PDF_concat still didn't work due to a glitch in the module file and a
  1417.     missing newXS entry (pdflib_pl.pm, pdflib_pl.c).
  1418.  
  1419.   - Adds a CGI variant of the pdfclock sample (pdfclock.pl.cgi).
  1420.  
  1421.   - Adjusted the return type of PDF_get_buffer() (pdflib_perl.c).
  1422.  
  1423.   - Includes an image sample (image.pl).
  1424.  
  1425.   - Cleaned up a few of the many warnings produced by the SWIG-generated
  1426.     wrapper code (pdflib_pl.c).
  1427.  
  1428.   - Implements a number of changes to make the wrapper compatible with
  1429.     Perl 5.6, mostly required by the discontinued use of PERL_OBJECT in
  1430.     the ActivePerl build:
  1431.  
  1432.     - Introduced another configuration called "oldperl" for building the
  1433.       wrapper for older ActivePerl versions (perl.dsp).
  1434.  
  1435.     - Added the XS macro to the export declaration of boot_pdflib_pl
  1436.       (pdflib_pl.c).
  1437.  
  1438.     - Searches for perl5.6.0 in the configure script (configure.in).
  1439.  
  1440.     - Changed the include and lib paths for Perl 5.6.0 on Windows (Perl.dsp).
  1441.  
  1442.     - Changed the include path in the VC project file to the Perl/lib/CORE
  1443.       directory (Perl.dsp).
  1444.  
  1445.     - Removed the /Tp option in the VC project file (no longer use C++ mode).
  1446.       (Perl.dsp).
  1447.  
  1448.     - Removed the PERL_OBJECT #define on Windows (pdflib_pl.c).
  1449.  
  1450.     - Changed all occurrences of CPerl to CPerlObj, and removed the respective
  1451.       macro definition (pdflib_pl.c).
  1452.  
  1453.     - Changed a preprocessor directive to make the wrapper code compatible
  1454.       with Perl 5.6 on Unix (pdflib_pl.c).
  1455.  
  1456.   - libtool versioning information was missing (Makefile.in).
  1457.  
  1458. - Python:
  1459.   - Includes an image sample (image.py).
  1460.  
  1461.   - Changed the include and lib paths for Python 1.5.2 on Windows (Python.dsp).
  1462.  
  1463.   - Removed some dead code from the wrapper code (pdflib_py.c).
  1464.  
  1465.   - "make test" tried to make a hard link to a symbolic link, which
  1466.     doesn't work on all platforms (bind/python/Makefile.in).
  1467.  
  1468.   - libtool versioning information was missing (Makefile.in).
  1469.  
  1470. - Tcl:
  1471.   - Implements the "nativeunicode" parameter (pdflib_tcl.c).
  1472.  
  1473.   - Removed a number of obsolete functions which were no longer supported in
  1474.     PDFlib 3.0 but still available (see doc/compatibility.txt for details).
  1475.  
  1476.   - Makes the exception handling in the Tcl wrapper thread-safe, which was
  1477.     the last step to a completely thread-safe Tcl binding (pdflib_tcl.c).
  1478.  
  1479.   - Adjusted the return type of PDF_get_buffer() (pdflib_tcl.c).
  1480.  
  1481.   - Includes an image sample (image.tcl).
  1482.  
  1483.   - Changed the include and lib paths for Tcl 8.3.1 on Windows (Tcl.dsp).
  1484.  
  1485.   - The wrapper now requires Tcl 8.2 or higher.
  1486.  
  1487.   - If appropriate, calls Tcl_InitStubs() for Tcl Stubs support
  1488.     (pdflib_tcl.c).
  1489.  
  1490.   - Queries the version number of the Tcl interpreter instead of
  1491.     relying on the static version number in the Tcl header used
  1492.     for compiling the wrapper (pdflib_tcl.c).
  1493.   
  1494.   - Added some preprocessor directives necessary for the mingw
  1495.     environment under Windows (pdflib_tcl.c).
  1496.  
  1497.   - Removed the DllMain function from the wrapper since it wasn't actually
  1498.     required but could cause trouble with some wrong precompiler settings
  1499.     (pdflib_tcl.c).
  1500.  
  1501.   - PDF_get_value and PDF_set_value were not properly reported to the
  1502.     Tcl interpreter, and were therefore unavailable (pdflib_tcl.c).
  1503.  
  1504.   - The Unicode converter didn't report back the correct string length
  1505.     if the string was empty (pdflib_tcl.c).
  1506.  
  1507.  
  1508. Documentation
  1509. =============
  1510.  
  1511. - Adds many clarifications to the manual, as well as some basic text and
  1512.   graphics handling algorithms (PDFlib-manual.pdf).
  1513.  
  1514. - Includes a PDF with point grid measures for common page sizes (grid.pdf).
  1515.  
  1516. - Updated the Web locations of the png and zlib libraries (readme.txt,
  1517.   PDFlib-manual.pdf).
  1518.  
  1519. - Added some information on forcing a certain compiler, or certain compiler
  1520.   flags (doc/readme_unix.txt).
  1521.  
  1522. - Updated the PDFlib license (PDFlib-license.pdf).
  1523.  
  1524. - Included the PDFlib order form (PDFlib-purchase-order.pdf).
  1525.  
  1526.  
  1527. V3.0 (March 1, 2000)
  1528. ====================
  1529.  
  1530. New features and API
  1531. ====================
  1532.  
  1533. - Implements the "invert" parameter for PDF_open_image() in order to
  1534.   work around problems with certain 1-bit TIFF images (p_tiff.c).
  1535.  
  1536. - Implements ascender, descender, and capheight parameters for get_value()
  1537.   (p_basic.c).
  1538.  
  1539.  
  1540. Bug fixes and enhancements
  1541. ==========================
  1542.  
  1543. - Fixed a bad memory leak for all TIFFs which couldn't be handled
  1544.   in pass-through mode (p_tiff.c).
  1545.  
  1546. - Track the text position even if the supplied string is NULL or
  1547.   empty (p_text.c).
  1548.  
  1549. - PDFlib attempted to load the UPR resource file too early, even if
  1550.   the resource query could have been satisfied with dynamically loaded
  1551.   resources (p_util.c).
  1552.  
  1553. - Empty resource file names (e.g. produced by an empty, but existing
  1554.   environment variable) were not handled correctly (p_util.c).
  1555.  
  1556. - The y position calculations for PDF_show, PDF_show_xy, and
  1557.   PDF_continue_text were wrong for nonzero word spacing values.
  1558.   This also affected PDF_show_boxed (p_text.c).
  1559.  
  1560. - Re-enabled the #ifdef'ed /EncodedByteAlign code (p_tiff.c).
  1561.  
  1562. - Change the cleanup_...() functions in order to make them multiply
  1563.   callable. This was not the case for certain rare situations when an
  1564.   exception occured during cleanup (p_annots.c, p_basic.c, p_font.c,
  1565.   p_hyper.c, p_util.c, p_image.c).
  1566.  
  1567. - The handling of font files with DOS line ends was broken on Unix
  1568.   systems (p_font.c).
  1569.  
  1570. - The error machinery didn't recognize a certain recursive error situation
  1571.   related to the handling of corrupt font files (p_basic.c).
  1572.  
  1573. - The font machinery now treats the AFM entry "StandardEncoding" like
  1574.   "AdobeStandardEncoding" since some AFMs use the former (wrong)
  1575.   variation (p_font.c).
  1576.  
  1577. - The UPR resource names didn't work in PDF_set_parameter() due to
  1578.   a typo (p_basic.c).
  1579.  
  1580. - CCITT-compressed TIFFs with multiple strips haven't been handled 
  1581.   properly, and resulted in corrupt output. As a quick fix we revert
  1582.   to uncompressing and recompressing with Flate (p_tiff.c).
  1583.  
  1584. - The PDF properties sheet in Windows explorer doesn't work when the
  1585.   Info dictionary keys are not followed by space characters. (This
  1586.   should be considered an Acrobat bug!) We therefore removed this
  1587.   optimization in order to work around this misfeature (p_hyper.c).
  1588.  
  1589. - PDF_stringwidth2() didn't take the length argument into account (p_text.c).
  1590.  
  1591.  
  1592. Build process, distribution, and platform support
  1593. =================================================
  1594.  
  1595. - configure improvements (configure.in):
  1596.   - configure failed to include -I in the include paths for the auxiliary libs.
  1597.   - configure failed to accept library paths supplied on the command line.
  1598.   - Unified the handling of the -I option for the various language
  1599.     include directories.
  1600.   - Adds -lm to the libpng tests.
  1601.   - The --disable-shared option didn't work.
  1602.  
  1603. - Changed the install target so that it creates the install directories
  1604.   for library and header files if they don't exist. This was a problem
  1605.   especially on RedHat systems where /usr/local/include doesn't exist
  1606.   (pdflib/Makefile.in).
  1607.  
  1608. - Removed the FORCE: target in the main Makefile (Makefile.in).
  1609.  
  1610. - Added some preprocessor lines for Cygwin support (p_config.h, p_basic.c).
  1611.  
  1612. - Switched to a static version of the PNG library due to problems with
  1613.   libpng.dll when used with static C runtime (*.dsp).
  1614.  
  1615.  
  1616. Bindings
  1617. ========
  1618.  
  1619. - Java:
  1620.   - get_value didn't work because of a missing comment terminator (pdflib.java).
  1621.  
  1622.   - An exception in get_parameter could result in an access violation in
  1623.     Windows due to a bug in the wrapper code (pdflib_java.c).
  1624.  
  1625.   - Relaxed the compiler setting "strict ANSI" in the CodeWarrior project
  1626.     for the Java binding on the Mac, since the Apple-supplied Java
  1627.     headers for MRJ 2.2 do no longer compile in strict mode (pdflib.mcp).
  1628.  
  1629. - Perl:
  1630.   - PDF_concat didn't work due to a glitch in pdflib_pm.pl.
  1631.  
  1632. - Python:
  1633.   - PDF_open_image_file() was missing from the set of registered functions,
  1634.     and was therefore unavailable (pdflib_py.c).
  1635.  
  1636. - Tcl:
  1637.   - Changed the Windows project file for Tcl 8.3 paths (tcl.dsp).
  1638.  
  1639.   - The Tcl install target didn't check whether the install directory
  1640.     already existed (Makefile.in).
  1641.  
  1642.  
  1643. Documentation
  1644. =============
  1645.  
  1646. - Switched to version 8 of the Aladdin license (aladdin-license.txt).
  1647.  
  1648.  
  1649. V2.30 (February 15, 2000)
  1650. =========================
  1651.  
  1652. New features and API
  1653. ====================
  1654.  
  1655. - Implements the ignoremask parameter for PDF_open_image_file() to
  1656.   allow the user to disable PDFlib's automatic transparency support.
  1657.  
  1658. - Reactivates the disabled PDF_open_mem/writeproc interface for installing
  1659.   a callback to fetch the PDF data (p_basic.c, p_annots.c, p_image.c,
  1660.   p_font.c, p_stream.c, pdflib.h, p_intern.h).
  1661.  
  1662. - Removes PDF_set_text_matrix() which has bad interactions with
  1663.   internal functions and properties of PDF, and doesn't offer any
  1664.   advantage to the client (p_text.c).
  1665.  
  1666. - Path segment functions no longer reset the text position and matrix
  1667.   (p_text.c).
  1668.  
  1669. - Implements PDF_get_value() and PDF_set_value() which (along with
  1670.   PDF_set_parameter()) replace the following functions (p_basic.c):
  1671.  
  1672.   get_font
  1673.   get_fontsize
  1674.   get_image_height
  1675.   get_image_width
  1676.  
  1677.   set_fillrule
  1678.   set_leading
  1679.   set_text_rise
  1680.   set_horiz_scaling
  1681.   set_text_rendering
  1682.   set_char_spacing
  1683.   set_word_spacing
  1684.   set_duration
  1685.   set_transition
  1686.  
  1687.   In bindings other than Java and ActiveX these are still available, however.
  1688.  
  1689. - Interprets the image resolution in the image converter client, and
  1690.   adjusts both page size and scaling factors accordingly (pdfimage.c).
  1691.  
  1692. - Reads the resolution or aspect ratio values from all image formats
  1693.   which support it, and passes the values to the client (p_jpeg.c, p_png.c,
  1694.   p_tiff.c, p_gif.c);
  1695.  
  1696. - Implements and documents PDF_concat() (p_gstate.c).
  1697.  
  1698. - Makes the default zoom factor (open action for the first page) user-
  1699.   settable through PDF_set_parameter() (p_basic.c).
  1700.  
  1701.  
  1702. Bug fixes and enhancements
  1703. ==========================
  1704.  
  1705. - PDF_delete() didn't PDF_close() if called from the error handler (p_basic.c).
  1706.  
  1707. - PDF_arc() didn't handle movetos correctly (p_draw.c).
  1708.  
  1709. - Due to a subtle bug in the exception handling machinery non-fatal
  1710.   errors could cause recursive errors (p_basic.c).
  1711.  
  1712. - PDF_show_boxed() didn't fully justify the second but last line under
  1713.   certain circumstances, and didn't get forced newlines right
  1714.   sometimes (p_text.c).
  1715.  
  1716. - PDF_show_boxed() didn't take the text matrix into account correctly
  1717.   (p_text.c).
  1718.  
  1719. - End the text object if the text render mode is set to one of the
  1720.   clipping modes (p_text.c).
  1721.  
  1722. - Added an endpath operator to the clip operators to save the client from
  1723.   doing so (p_draw.c).
  1724.  
  1725. - PDF_open_image() didn't check for a valid params pointer for one-
  1726.   component images (p_image.c).
  1727.  
  1728. - Non-fatal errors could result in corrupt output due to a glitch
  1729.   in the error handling machinery (p_basic.c).
  1730.  
  1731. - Implements data pass-through for CCITT-compressed TIFF images. This
  1732.   decreases the PDF output, and accelerates image processing (p_tiff.c,
  1733.   p_image.c, p_intern.h).
  1734.  
  1735. - Changed the key of the duration setting from /D to /Dur. The former
  1736.   is only correct within a transition dictionary (p_basic.c).
  1737.  
  1738. - Implements a complete text and graphics state tracking machinery,
  1739.   including save/restore (p_intern.h, p_gstate.c, p_draw.c, p_text.c,
  1740.   p_basic.c).
  1741.  
  1742. - Disallows the use of the null character in user-defined encodings
  1743.   (p_util.c), and documents the fact.
  1744.  
  1745. - Implemented a stricter state checking machinery for switching
  1746.   between path objects, text objects, image objects, and the general
  1747.   page description state (p_text.c, p_draw.c, p_gstate.c, p_image.c,
  1748.   p_intern.h).
  1749.  
  1750. - The parameter checks in the text output functions were too strict,
  1751.   and erroneously rejected strings starting with a character code < 256
  1752.   in Unicode mode (p_text.c).
  1753.  
  1754. - Removed several remains of an obsolete filename in comments
  1755.   and a project file (p_intern.h, pdflib_static.dsp).
  1756.  
  1757. - Checks for a degenerate matrix in PDF_set_text_matrix() (p_text.c).
  1758.  
  1759. - Renamed pdf_concat() to pdf_concat_raw() (p_gstate.c).
  1760.  
  1761. - Simplifies the old and new stringwidth/show/show_xy/continue_text
  1762.   functions pairs such that the old simply relay to the new functions.
  1763.   A zero length parameter for the new functions is interpreted to
  1764.   mean C-style text (p_text.c).
  1765.  
  1766. - Fixes the underline/overline/strikeout handling (p_text.c).
  1767.  
  1768. - Made the prefix parameter public (p_basic.c.).
  1769.  
  1770. - Relaxed the handling of metrics files where the font name has been
  1771.   changed, and doesn't match the user-supplied font name (p_afm.c,
  1772.   p_pfm.c).
  1773.  
  1774. - The AFM and PFM modules threw NonfatalErrors even in severe cases
  1775.   (p_afm.c, p_pfm.c).
  1776.  
  1777. - Added an omitted pdf_begin_text() call which resulted in bad PostScript
  1778.   output when the PDF was printed (p_text.c, p_font.c, p_intern.h).
  1779.  
  1780. - An erroneous byte was output in the header section (p_basic.c).
  1781.  
  1782.  
  1783. Build process, distribution, and platform support
  1784. =================================================
  1785.  
  1786. - Puts double quotes around all variables used in test statements
  1787.   in the configure script. This will make the script more resistant
  1788.   against test complaining when a variable happens to be empty (configure.in).
  1789.  
  1790. - Moves the test for EBCDIC from configure to p_config.h.
  1791.  
  1792. - Switches the language bindings on Windows to static C runtime
  1793.   libraries in order to avoid the dreaded problems with multiple
  1794.   versions of msvcrt.dll (*.dsp).
  1795.  
  1796. - Added solaris as a subdirectory name in looking for jni_md.h, since
  1797.   it doesn't seem to be picked up via $ac_md_system (configure.in).
  1798.  
  1799. - Added -lm -lc at a few places in order to help configure find the
  1800.   auxiliary libraries (configure.in).
  1801.  
  1802. - Changed the handling of the PDF magic number to protect it from
  1803.   EBCDIC compilers (p_basic.c).
  1804.  
  1805. - Introduces a binary distribution for Windows, generated with a
  1806.   JScript program run in Windows Script Host (shell programming a la
  1807.   Microsoft, oh my...).
  1808.  
  1809. - Added "-ljpeg" to TIFFLIBLINK (configure.in).
  1810.  
  1811. - Added "-lz -lm" to the TIFF library check (configure.in).
  1812.  
  1813.  
  1814. Bindings
  1815. ========
  1816.  
  1817. - C++:
  1818.   - The C++ Makefile failed to set the CXX variable correctly (Makefile.in).
  1819.  
  1820.   - Implemented concat() (pdflib.hpp, pdflib.cpp).
  1821.  
  1822.   - show_boxed() didn't return a value (pdflib.cpp).
  1823.  
  1824. - Java:
  1825.   - Reworked and fixed the exception handling (pdflib_java.c).
  1826.  
  1827.   - Changed the string extraction routines so that they handle empty
  1828.     strings gracefully (pdflib_java.c).
  1829.  
  1830.   - Implemented concat() (pdflib_java.c, pdflib.java).
  1831.  
  1832.   - Calls java and javadoc after compiling the Windows DLL (Java.dsp).
  1833.  
  1834. - Perl:
  1835.   - Removed the export-dynamic option for libtool (Makefile.in).
  1836.  
  1837.   - Implemented PDF_concat() (pdflib_pl.c, pdflib_pl.pm).
  1838.  
  1839. - Python:
  1840.   - Removed the export-dynamic option for libtool (Makefile.in).
  1841.  
  1842.   - Implemented PDF_concat() (pdflib_py.c).
  1843.  
  1844. - Tcl:
  1845.   - PDF_open_image_file() was missing from the set of exported functions
  1846.     in the wrapper code (pdflib_tcl.c).
  1847.  
  1848.   - Conditionally compiles the wrapper in order to avoid the use of
  1849.     binary strings when compiling against Tcl 8.0 (pdflib_tcl.c).
  1850.  
  1851.   - Implemented PDF_concat() (pdflib_tcl.c, pkgIndex.tcl).
  1852.  
  1853.  
  1854. Documentation
  1855. =============
  1856.  
  1857. - Documents the libtool library versioning scheme (readme_unix.txt).
  1858.  
  1859.  
  1860.  
  1861. V2.20 (January 24, 2000)
  1862. =========================
  1863.  
  1864. New features and API
  1865. ====================
  1866.  
  1867. - Implements PDF_concat(), currently only for the C binding
  1868.   (pdflib.h, p_gstate.c).
  1869.  
  1870. - Implements PDF_show_boxed(), the basis of which has been contributed
  1871.   by Leonard Rosenthol (pdflib.h, p_text.c, bind/*/*.c, pdflib_pl.pm,
  1872.   pkgIndex.tcl, pdflib.hpp, pdflib.cpp, pdflib.java).
  1873.  
  1874. - Implements overline and strikethrough text, as suggested and contributed
  1875.   by Leonard Rosenthol. API, implementation and behavior parallel underlined
  1876.   text (p_intern.h, p_basic.c, p_text.c).
  1877.  
  1878. - Implements PDF_get_buffer() for fetching the PDF output from memory
  1879.   for all language bindings.
  1880.  
  1881.  
  1882. Bug fixes and enhancements
  1883. ==========================
  1884.  
  1885. - Fixed three bugs in the AS/400 codepage conversion table (p_stream.c).
  1886.  
  1887. - Fixed a bug in the EBCDIC-safe handling of document info entries
  1888.   (p_hyper.c).
  1889.  
  1890. - #ifdef'ed all code for dealing with the now obsolete flush parameter.
  1891.  
  1892. - pdf_ebcdic2ascii() didn't return the correct string. Changed the caller
  1893.   such that the return isn't needed anyway (p_stream.c).
  1894.  
  1895. - The binary PDF magic number was inadvertently written using pdf_puts()
  1896.   instead of pdf_write() which is wrong on EBCDIC machines (p_basic.c).
  1897.  
  1898. - The debug and nodebug parameters are no longer documented nor supported.
  1899.   Nonfatal exceptions can be suppressed with the new warning parameter
  1900.   (p_basic.c).
  1901.  
  1902. - Changes the error handling and memory management such that one pair of
  1903.   PDF_new()/PDF_delete() can accomodate multiple pairs of PDF_open_*()/
  1904.   PDF_close() without leaking memory (p_stream.c, p_basic.c).
  1905.  
  1906. - Fixed a possible crash under rare circumstances, related to an
  1907.   exception being thrown when no real work has been done (p_stream.c).
  1908.  
  1909. - Changes the underline/overline/strikeout calculations such that the
  1910.   width of the line is no longer taken into account for calculating
  1911.   the distance from the baseline (p_text.c).
  1912.  
  1913. - Fixes problems related to setting the current text position via
  1914.   PDF_set_text_matrix() and PDF_set_text_position() (p_text.c).
  1915.  
  1916. - Removes the transition settings from all clock samples since these
  1917.   may significantly slow down PDF the screen presentation, especially
  1918.   when served via the Web (bind/pdfclock.*).
  1919.  
  1920. - Removes the dynamic TIFFlib attachment on Windows, and directly
  1921.   links to TIFFlib. The TIFFlib DLL will also be included in the
  1922.   binary distributions (p_basic.c, p_tiff.c, p_intern.h).
  1923.  
  1924. - Changes the TIFF code to use the PDFlib-supplied malloc/free
  1925.   routines instead of the TIFFlib-supplied ones. This makes the code
  1926.   for attaching the TIFFlib Windows DLL at runtime compatible with
  1927.   the generally available DLL (p_tiff.c, p_basic.c, p_intern.h).
  1928.  
  1929. - Changes PDF_findfont() such that an exception is raised when the
  1930.   requested font can't be set, instead of returning -1 (p_font.c,
  1931.   bind/*/hello.*, test/pdftest.c).
  1932.  
  1933. - An error message had a wrong printf format (p_state.c).
  1934.  
  1935. - Accepts the image file type parameter of PDF_open_image_file() in
  1936.   both lower and upper case, although this will not be documented
  1937.   (p_image.c).
  1938.  
  1939. - Removed the optimization which tried to keep track of redundant
  1940.   font changes (p_font.c).
  1941.  
  1942. - "builtin" encodings no longer worked after the great encoding rehaul,
  1943.   but required only a simple fix (p_font.c).
  1944.  
  1945. - Implements a safeguard against recursive I/O errors which may occur
  1946.   in rare situations when flushing the output raises an exception while
  1947.   being called from the exception handler already (p_intern.h, p_basic.c,
  1948.   p_stream.c).
  1949.  
  1950. - The stream machinery didn't get initialized in PDF_open_fp(), resulting
  1951.   in an infinite recursion (well, a finite one...) when opening a PDF
  1952.   with a preexisting FILE pointer (p_basic.c).
  1953.  
  1954. - Changes several places where #includes had filenames in "..." instead
  1955.   of <...>, resulting in bad dependencies in the Makefiles (pdflib/p_intern.h,
  1956.   util/compile_metrics.c, pdflib_pl.c, pdflib_py.c, pdflib_tcl.c).
  1957.  
  1958. - The compile_metrics utility was not yet adapted to the new encoding
  1959.   include file logic (util/compile_metrics.c).
  1960.  
  1961.  
  1962. Build process, distribution, and platform support
  1963. =================================================
  1964.  
  1965. - Under Windows switched all language bindings other than C and C++
  1966.   from a DLL to a static PDFlib library (bind/*/*.dsp).
  1967.  
  1968. - Improves and simplifies the searching mechanism for Perl, Tcl, Python,
  1969.   and Java in configure (configure.in).
  1970.  
  1971. - Simplifies and streamlines the configure code for detecting the
  1972.   TIFF, Zlib, and PNG libraries (configure.in).
  1973.  
  1974. - Switches to libtool 1.3.4, and back to 1.3.c due to problems with
  1975.   the former (config/*).
  1976.  
  1977. - Fixes many glitches in the configure and build machinery.
  1978.  
  1979. - Makes the name of the core PDFlib library file configurable via
  1980.   the --with-libname configure option in order to work around a name
  1981.   clash on Digital Unix 4. The bindings are set up such that changing
  1982.   the core library name is transparent to the language binding
  1983.   (configure.in, all Makefile.in).
  1984.  
  1985. - Includes an encoding file for ISO 8859-15 in the distribution
  1986.   (fonts/iso8859-15.enc), and changed the Latin 2 encoding file name
  1987.   (fonts/iso8859-2.enc).
  1988.  
  1989. - Changed the ordering of libpng and zlib when linking programs against
  1990.   PDFlib since older linkers require this ordering (Makefile.in).
  1991.  
  1992. - Moved the .PHONY targets in the Makefiles below the all target for
  1993.   combatibility with non-GNU makes.
  1994.  
  1995. - Implements a suitable mechanism for patching the version number into
  1996.   numerous source files, and splits it from the distribution (version.pl).
  1997.  
  1998. - Fixes a number of Makefile bugs which resulted in wrong dependencies
  1999.   (*/Makefile.in).
  2000.  
  2001.  
  2002. Bindings
  2003. ========
  2004.  
  2005. - C++:
  2006.   - Changes the data parameter of open_image() from String to const char *
  2007.     which is more appropriate (pdflib.hpp, pdflib.cpp).
  2008.  
  2009. - Java:
  2010.   - Implements Unicode support for page descriptions (pdflib_java.c).
  2011.  
  2012.   - Changes the data parameter of open_image() from String to byte[]
  2013.     which is more appropriate (pdflib.java, pdflib_java.c).
  2014.  
  2015.   - Correctly implements setpolydash() (pdflib_java.c).
  2016.  
  2017.   - Includes javadoc comments and Makefile targets for generating Java
  2018.     documentation in HTML (pdflib.java, Makefile.in).
  2019.     
  2020.   - Implements package support for PDFlib, and generates a .jar file
  2021.     (*.java, *.c, Makefile.in).
  2022.  
  2023.   - Changes the version mechanism for the Java wrapper to use version
  2024.     number querying instead of matching version numbers in the name of
  2025.     the wrapper library (pdflib_java.c, Makefile.in, Java.dsp, pdflib.h).
  2026.  
  2027. - Perl:
  2028.   - Correctly implements PDF_setpolydash() (pdflib_pl.c).
  2029.  
  2030. - Python:
  2031.   - Correctly implements setpolydash() (pdflib_py.c).
  2032.  
  2033. - Tcl:
  2034.   - Implements Unicode support for page descriptions (pdflib_tcl.c).
  2035.  
  2036.   - Searches for tclsh8.3 in configure (configure.in).
  2037.  
  2038.   - Correctly implements PDF_open_image() (pdflib_tcl.c).
  2039.  
  2040.   - Correctly implements PDF_setpolydash() (pdflib_tcl.c).
  2041.  
  2042.   - Changed all occurrences of atol() in the wrapper code to Tcl_GetInt()
  2043.     or Tcl_GetLongFromObj() with appropriate error handling (pdflib_tcl.c).
  2044.  
  2045.   - Implemented suitable conditionals to allow for compiling the Tcl
  2046.     wrapper with different versions of Tcl. This was necessary because of
  2047.     the Unicode support which is only available in Tcl 8.2 (pdflib_tcl.c).
  2048.  
  2049.  
  2050. Documentation
  2051. =============
  2052.  
  2053. - Addes a description of the PDFlib commercial license to the distribution
  2054.   (PDFlib-license.pdf).
  2055.  
  2056. - Introduces javadoc comments.
  2057.  
  2058.  
  2059. V2.10 (December 13, 1999)
  2060. =========================
  2061.  
  2062. New features and API
  2063. ====================
  2064.  
  2065. - Makes the page dimensions adjustable after starting a page, using
  2066.   PDF_set_parameter (p_basic.c).
  2067.  
  2068. - Made a variety of changes to make PDFlib work when compiled on
  2069.   EBCDIC-based systems (most *.c, p_intern.h).
  2070.  
  2071. - Made the Zlib compression level configurable (p_basic.c, p_stream.c).
  2072.  
  2073. - Switched to in-core PDF generation through the new pdf_streams
  2074.   interface. This also allows us to compress page content streams
  2075.   and to simplify handling of compressed data streams (all *.c, p_intern.h).
  2076.  
  2077. - Implements transparency support (masking by position or color) (p_gif.c,
  2078.   p_png.c, p_image.c, p_intern.h).
  2079.  
  2080. - Implements a PNG handler (p_png.c, pdflib.h, p_intern.h).
  2081.  
  2082. - Font handling:
  2083.  
  2084.   - Implemented support for null characters in text strings for all
  2085.     language bindings (p_text.c, bind/*/*.c).
  2086.  
  2087.   - Implemented support for CID fonts and CMap encodings (p_font.c, p_cid.h).
  2088.  
  2089.   - Implemented underlined text (except for CID fonts) (p_text.c).
  2090.  
  2091.   - Implements support for user-defined encodings, and includes
  2092.     a sample encoding file (p_fonts.c, fonts/pdflib.upr, fonts/latin-2.enc).
  2093.  
  2094.   - Implements EBCDIC encoding (p_font.c, e_ebcdic.h, p_intern.h,
  2095.     p_metrics.h, util/compile_metrics.c).
  2096.  
  2097.   - Implements support for PFB PostScript font files (p_font.c).
  2098.  
  2099.   - Implements support for PFM PostScript font metrics files (p_pfm.c).
  2100.  
  2101. - Updates to the AFM parser (p_afmparse.c, p_afmparse.h):
  2102.  
  2103.   - The FONTBBOX is read as float which is required by the 4.1 spec.
  2104.  
  2105.   - Recognizes Multiple Master fonts by FamilyName ending in " MM".
  2106.  
  2107.   - Allows the WEIGHT entry to contain more than one word.
  2108.  
  2109. - Implements limited Multiple Master handling for an in-house
  2110.   application (p_font.c):
  2111.  
  2112.   - As in PostScript, MM handling is transparent at the API level. All
  2113.     MM handling is done by extracting the parameters from the font name.
  2114.  
  2115.   - All instances of an MM font are required to have the same metrics
  2116.     (i.e., no support for /Width axis).
  2117.  
  2118.   - The required AFM file is that for the master.
  2119.  
  2120. - Implements PDF_skew() in order to provide for a full set of coordinate
  2121.   transformation functions (p_gstate.c).
  2122.  
  2123. - Reactivates ASCII85 encoding which lay dormant in previous releases
  2124.   (p_intern.h, p_filter.c).
  2125.  
  2126.  
  2127. Bug fixes and enhancements
  2128. ==========================
  2129.  
  2130. - Fixed a bug where PDF_moveto() wouldn't set the text position
  2131.   correctly (p_text.c).
  2132.  
  2133. - Corrects a small glitch where pdf_float() would return the
  2134.   correct result string, but fails to use the supplied buffer (p_util.c).
  2135.  
  2136. - Makes the PDF compatibility user-settable (again). The reasoning
  2137.   behind this is not obvious, and discussed in the manual. If the
  2138.   compatibility level is set to PDF 1.2, asking PDFlib to generate
  2139.   any Acrobat 4 feature will result in a RuntimeError (*.c).
  2140.  
  2141. - Adds a little PostScript utility for finding all glyph names in
  2142.   a font (fonts/print_glyphs.ps).
  2143.  
  2144. - Implements support for dynamically loading TIFFlib at
  2145.   runtime (p_basic.c, p_tiff.c, p_intern.h).
  2146.  
  2147. - Removed all references to PDFDocEncoding since it isn't required
  2148.   for hypertext elements, and can't be used for text fonts (e_pdfdoc.h).
  2149.  
  2150. - PDF_arc() implicitly moves to the beginning of the arc segment in
  2151.   order to avoid unwanted connecting lines from the current point to
  2152.   the beginning of the arc segment (p_draw.c).
  2153.  
  2154. - All public PDFlib functions perform a simple sanity check on their
  2155.   p argument before accessing any structure member. This reduces the
  2156.   chances for a crash due to client-supplied NULL or rogue pointers (*.c).
  2157.  
  2158. - Include the names of the language binding and the platform in the
  2159.   /Producer entry (p_basic.c, p_intern.h, p_hyper.c, bind/*/*.c).
  2160.  
  2161. - Added the width of the Euro character to the supplied internal and
  2162.   external metrics tables (*.afm, p_metrics.h).
  2163.  
  2164. - Replaced the AFM files with newer versions, and used the additional
  2165.   data in the internal metrics tables. The kerning information
  2166.   has been stripped for size and performance reasons (fonts/*.afm).
  2167.  
  2168. - When user-requested encoding and font-supplied encoding didn't match,
  2169.   PDFlib could try to reencode Symbol fonts with not adequate encodings
  2170.   (like Symbol with Winansi) -- despite issuing a warning message
  2171.   (p_font.c).
  2172.  
  2173. - PDF_stringwidth() now takes the text state parameters into account,
  2174.   and protects itself from empty strings (p_text.c).
  2175.  
  2176. - Removed the pdf_begin_text() calls in all functions that set the
  2177.   text state (p_font.c, p_text.c).
  2178.  
  2179. - Do not set the leading parameter in PDF_setfont() since it may
  2180.   override a leading value set by the user (p_font.c).
  2181.  
  2182. - Changed the name of the pseudo encoding vector from "default" to
  2183.   "host" (p_font.c, most bind/*/hello.*).
  2184.  
  2185. - Checks the scale parameter of PDF_set_horiz_scaling() to be positive
  2186.   (p_text.c).
  2187.  
  2188. - Write the colormap for an image also in compressed or ASCII format
  2189.   if requested (was previously the case only for the actual image
  2190.   data, but not the colormap) (p_image.c).
  2191.  
  2192. - The 'w' debug parameter for enabling or disabling warning messages
  2193.   was erroneously implemented as 'e' instead. Now it works according
  2194.   to the documentation (p_basic.c).
  2195.  
  2196. - Adds (void) casts to several fputc() and fputs() calls.
  2197.  
  2198. - Changes the PDF output to avoid unnecessary blanks aside self-delimiting
  2199.   tokens in many places (most *.c).
  2200.  
  2201. - Checks current font and font size in PDF_setfont() in order to eliminate
  2202.   redundant setting. This requires initializing the current font to an
  2203.   invalid value of -1 in PDF_begin_page() (p_font.c, p_basic.c).
  2204.  
  2205. - Image handling:
  2206.  
  2207.   - When the error handler popped in for memory images with bad length it
  2208.     would try to free not yet allocated memory. We guard against this by
  2209.     prematurely setting the image file name to NULL (p_image.c).
  2210.  
  2211.   - The parameter checking code in PDF_open_image() and the documentation
  2212.     didn't account for images with other than 8 bits per component
  2213.     (p_image.c).
  2214.  
  2215.   - The test for the length of the image data in memory for PDF_open_image()
  2216.     could still be wrong when bpc was smaller than 8 (p_image.c).
  2217.  
  2218.   - GIF images with a local colormap ended up with a colormap with all
  2219.     black entries in the PDF because the local colormap was read when the
  2220.     (wrong) global colormap was already written to the PDF (p_image.c).
  2221.  
  2222.   - Detect and correctly handle transparent colormap entries in GIF
  2223.     images (p_image.c, p_gif.c, p_intern.h).
  2224.  
  2225. - Changes the PATHSEP definition for VMS and moves HAVE_GETOPT to the
  2226.   top of the include file (p_config.h).
  2227.  
  2228. - The pdfgraph.c and pdfimage.c sample clients incorrectly advertised
  2229.   a binary option in their usage messages although the option is no longer
  2230.   available.
  2231.  
  2232. - Check the parameters of PDF_scale() for zero values (p_gstate.c).
  2233.  
  2234. - Introduce parenthesis in a set of critical macro definitions (p_gif.c).
  2235.  
  2236. - Changed the text2pdf client to PDF_findfont/PDF_setfont instead of
  2237.   the obsolete PDF_set_font().
  2238.  
  2239. - Unified the names of the encoding files to e_*.h (formerly *_e.h).
  2240.  
  2241. - Removed the obsolete compatibility function PDF_set_font (p_font.c,
  2242.   pdflib.h, bind/*/*.c, bind/perl/*.pm).
  2243.  
  2244.  
  2245. Build process, distribution, and platform support
  2246. =================================================
  2247.  
  2248. - Removed the sample CGI script (bind/cgi).
  2249.  
  2250. - Removed the pdfgraph demo program (clients directory).
  2251.  
  2252. - Removed the optional getopt module (util directory, Makefile.in).
  2253.  
  2254. - Adds support for the DJGPP compiler (p_config.h).
  2255.  
  2256. - Adds support for libtool in order to cleanly deal with the gazillion
  2257.   kinds of shared library support (configure.in, Makefile.in, test/Makefile.in,
  2258.   pdflib/Makefile.in).
  2259.  
  2260. - Introduces the new config directory for libtool and installation support
  2261.   scripts.
  2262.  
  2263. - Added the ANSI option for native HP compilers (configure.in).
  2264.  
  2265. - Properly implements all configure switches for disabling the language
  2266.   bindings (configure.in).
  2267.  
  2268. - Starts adding support for OS/2 and VMS systems.
  2269.  
  2270. - Adds support for EBCDIC-based systems, including source code changes
  2271.   and an EBCDIC test in the configure script (configure.in).
  2272.  
  2273.  
  2274. Bindings
  2275. ========
  2276.  
  2277. - SWIG:
  2278.   - No longer automatically generates the wrapper file with SWIG due to
  2279.     the necessary amount of manual changes in the wrapper files
  2280.     (bind/*/Makefile.in).
  2281.  
  2282. - C:
  2283.   - The arguments to PDF_begin_page() were incorrectly cast to the wrong
  2284.     type instead of float. Incidentally, a particular compiler incorrectly
  2285.     produced zero values, thereby disclosing the bug in the source code by
  2286.     a compiler bug (pdfclock.c).
  2287.  
  2288. - C++:
  2289.   - Implements support for strings containing null characters.
  2290.  
  2291.   - Added PDF_shutdown() to the PDF destructor (pdflib.cpp).
  2292.  
  2293.   - PDF_close_image() was missing from the C++ interface due to an
  2294.     oversight (pdflib.hpp, pdflib.cpp).
  2295.  
  2296.   - Added -lstdc++ to the Makefile.
  2297.  
  2298. - Java:
  2299.   - On Windows separates the wrapper DLL from the PDFlib core DLL.
  2300.  
  2301.   - Implements support for strings containing null characters.
  2302.  
  2303.   - configure now looks in an additional subdirectory for the machine-
  2304.     dependent JNI include file. Formerly it used $MACHDEP only, but
  2305.     on some systems the subdirectory doesn't use the system version number
  2306.     (configure.in).
  2307.  
  2308.   - Rewrote the wrapper code so that it does the right thing with Unicode
  2309.     strings (pdflib_java.c).
  2310.  
  2311.   - Switched to a more object-oriented notation, and dropped the PDF_
  2312.     prefix from the names of the PDFlib Java methods (pdflib_java.c, *.java).
  2313.  
  2314. - Perl:
  2315.   - On Windows separates the wrapper DLL from the PDFlib core DLL.
  2316.  
  2317.   - Removed the unused and unsupported Makefile.PL.
  2318.  
  2319.   - Implements support for strings containing null characters.
  2320.  
  2321.   - Removed PDF_boot() and PDF_shutdown() which have accidentally been
  2322.     included in the wrapper code (pdflib_pl.c, pdflib.pm).
  2323.  
  2324.   - Integrated wrapper code changes in order to make the PDFlib wrapper
  2325.     compatible to versions of Perl newer thant 5.005_54 (pdflib_pl.c).
  2326.  
  2327.   - Added an export list to the pdflib Perl module. This makes it easier
  2328.     to use our module along with other modules. Clients need no longer
  2329.     write "package pdflib" at the beginning since all functions are
  2330.     exported (pdflib.pm, hello.pl, pdfclock.pl).
  2331.  
  2332. - Python:
  2333.   - On Windows separates the wrapper DLL from the PDFlib core DLL.
  2334.  
  2335.   - Due to a necessary change in the name of the library, script must
  2336.     now use "from pdflib_py import *" (instead of "pdflib").
  2337.  
  2338.   - Implements support for strings containing null characters.
  2339.  
  2340.   - Removed PDF_boot() and PDF_shutdown() which have accidentally been
  2341.     included in the wrapper code (pdflib_py.c).
  2342.  
  2343.   - Searches for the lib-dynload directory where to install the shared
  2344.     library for Python (configure.in).
  2345.  
  2346. - Tcl:
  2347.   - On Windows separates the wrapper DLL from the PDFlib core DLL.
  2348.  
  2349.   - Changed the name of the wrapper library from pdflib.so to pdflib_tcl.so
  2350.     (pkgIndex.tcl).
  2351.  
  2352.   - Rewrote the wrapper code so that it does the right thing with Unicode
  2353.     strings (pdflib_tcl.c).
  2354.  
  2355.   - Implements support for strings containing null characters.
  2356.  
  2357.   - Tcl 8.0 is now required because of the support for binary strings
  2358.     (configure.in).
  2359.  
  2360.   - Removed PDF_boot() and PDF_shutdown() which have accidentally been
  2361.     included in the wrapper code (pdflib_tcl.c, pkgIndex.tcl).
  2362.  
  2363. - Visual Basic:
  2364.   - Removed the Visual Basic binding since VB is much better covered by the
  2365.     new PDFlib ActiveX control (bind/vb/*).
  2366.  
  2367.  
  2368. Documentation
  2369. =============
  2370.  
  2371. - Added platform-specific readme files (doc/readme_<platform>.txt).
  2372.  
  2373. - Added an appendix dealing with shared libraries to the manual.
  2374.  
  2375. - Removed the redundant list of configure options from doc/install.txt.
  2376.  
  2377. - Changed all occurrences of PDFlib's WWW address to www.pdflib.com.
  2378.  
  2379.  
  2380. V2.01 (August 3, 1999)
  2381. =====================
  2382.  
  2383. New features and API
  2384. ====================
  2385.  
  2386. - Extends the JPEG reader to allow for progressive JPEG images which are
  2387.   supported in PDF 1.3/Acrobat 4 (p_jpeg.c).
  2388. - Applies a workaround for Photoshop-generated CMYK JPEG images. The
  2389.   algorithm is taken from my jpeg2ps utility: detect the Adobe marker,
  2390.   and write a suitable /Decode array to invert the 4 color planes (p_image.c).
  2391. - Introduces the concept of a "default" encoding which evaluates to
  2392.   macroman or winansi according to the current platform. This facilitates
  2393.   writing identical test programs for all platforms. All samples except
  2394.   those for Visual Basic (which is Windows-only) have been adjusted to use 
  2395.   the default encoding.
  2396. - Streamlines the image file interface in several ways: (pdflib.h, p_intern.h,
  2397.   p_image.c, p_gif.c, p_tiff.c, p_jpeg.c, p_ccitt.c, p_basic.c,
  2398.   bind/vb/pdflib_vb.idl, bind/vb/pdflib_vb.def, clients/pdfimage.c,
  2399.   bind/cpp/pdflib.[h|c]pp, test/pdftest.c).
  2400.   - Removes PDF_place_inline_image() since it doesn't seem to bring any
  2401.     real advantage to PDFlib clients.
  2402.   - Removes PDF_put_image() since the image data is "parked" in the ouput
  2403.     immediately on PDF_open_*(). The /Name key is no longer in Xobjects
  2404.     since it was only required by PDF 1.0.
  2405.   - Removes PDF_execute_image(). Instead, PDF_place_image() can now be
  2406.     called multiple times for re-using image data.
  2407.   - Consolidates all pdf_close_*() functions in PDF_close_image. All
  2408.     image-specific stuff is now done at the end of PDF_open_*().
  2409.   - PDF_open_*() (along with the newly implied pdf_put_image()) is now 
  2410.     allowed outside of page descriptions. This requires pdf_put_image()
  2411.     to do a pdf_begin_contents_section() in some cases.
  2412. - Adds several symbolic names for new destination zoom values in 
  2413.   PDF_add_pdflink() and PDF_add_locallink() (p_annots.c).
  2414. - Added an undocumented hook for placing existing images as thumbnail
  2415.   for the current page. This is for a specialized application and is
  2416.   not supported at the scripting layer (p_image.c, p_image.c, p_intern.h).
  2417. - Changed PDF_open_memory_image() to PDF_open_image(). This makes memory
  2418.   images accessible from the scripting languages, and adds support for
  2419.   file and url references as placeholders for the actual image data
  2420.   (pdflib.h, p_image.h, p_intern.h, bind/vb/pdflib_vb.idl, bind/cpp/pdflib.hpp, 
  2421.   bind/cpp/pdflib.cpp).
  2422.  
  2423.  
  2424. Bug fixes and enhancements
  2425. ==========================
  2426.  
  2427. - A static resource configuration file (pdflib.upr) was always opened
  2428.   when the client dynamically added resources. We skipped the file open
  2429.   step since it's well reasonable to work with dynamic configuration
  2430.   exclusively (p_util.c).
  2431. - Fixes a crash due to an uninitialized member of the PDF struct
  2432.   (resourcefile_loaded). The bug showed up when trying to use non-standard
  2433.   fonts (p_basic.c).
  2434. - Added a number of casts to avoid assignments to variables which are
  2435.   never used. This basically affected the contents of comment and notice
  2436.   lines in AFM files, which are not being used (p_afmparse.c).
  2437. - Merged the metrics files for macroman and winansi core metrics
  2438.   (p_metrics_win.h, p_metrics_mac.h) to a single file (p_metrics.h,
  2439.   p_font.c, Makefile.in, pdflib/Makefile.in, PDFlib.hqx, *.dsp)
  2440. - Makes DLLMain only visible when PDFLIB_EXPORTS is defined (p_basic.c).
  2441. - Changed the default page transition duration to 0 in order to avoid
  2442.   unnecessarily writing the duration key to all page dictionaries (p_hyper.c).
  2443. - Changes to example path prefix in pdflib.upr to make it clearer that
  2444.   the upr file has to be adjusted before it can be used (fonts/pdflib.upr).
  2445. - The debug flags didn't work due to a typo (p_basic.c).
  2446. - Debug flag 'u' (don't unlink PDF file on error) was implemented the wrong
  2447.   way, and didn't match the documentation (p_basic.c).
  2448. - Improves the memory management by avoiding "semi-allocated" aggregated
  2449.   objects. This involves subtle changes around the realloc() calls,
  2450.   and cleaner initialization of the reallocated data. The benefit of this
  2451.   shows up in memory-out situations when the error handler pops in and tries
  2452.   to free memory blocks which are not completely initialized. This may
  2453.   especially happen in multi-threaded environments (p_intern.h, p_basic.c,
  2454.   p_font.c, p_images.c, p_hyper.c).
  2455. - Fixes some inconsistencies related to link border style, color, and
  2456.   destination zoom (p_annots.c).
  2457. - Removed the beveled, inset, and underlined link border styles since they
  2458.   don't work as advertised in the PDF specification (p_annots.c, pdftest.c).
  2459. - Improves the handling of XObject resources: formerly all Xobjects used
  2460.   in the document up to the current page had been placed in the page's
  2461.   resource list, potentially cluttering up the print stream generated for
  2462.   the PDF. Now we only list the XObjects which are actually used on the
  2463.   current page. This change will not affect Acrobat's viewing behavior.
  2464. - The bpc and components values of TIFF image weren't always properly
  2465.   reported by TIFFlib. We improved this by using TIFFGetFieldDefaulted()
  2466.   instead of TIFFGetField() for retrieving these (p_tiff.c).
  2467.  
  2468.  
  2469. Build process, distribution, and platform support
  2470. =================================================
  2471.  
  2472. - Several improvements in the configure machinery (configure.in, Makefile.in):
  2473.   - Added a --without-cxx option to the configure script in order to make
  2474.     life easier on systems where the C++ is not correctly recognized.
  2475.   - The include and lib paths for perl/zlib/tifflib shown with 
  2476.     "configure --help" had some differences from the actual spelling of 
  2477.     the supported options.
  2478.   - Included a number of changes to the configure script required to make
  2479.     the shared library versioning work on NetBSD systems.
  2480.   - The --with-perlincl option for configure didn't work.
  2481.   - Added a number of conditionals for the Cygwin environment.
  2482.   - Always puts the version number in the file names of the shared and
  2483.     static PDFlib libraries. Previously the static library ended up without
  2484.     a version number in its name, possibly leading to mismatches with later
  2485.     versions.
  2486.   - Introduces configure variables for the names of the shared and static
  2487.     libraries. This allows us to easily build the "other" library (as opposed
  2488.     to the one specified when configure was run) as well.
  2489. - Removes the -g option from all Makefiles (pdflib/Makefile.in,
  2490.   clients/Makefile.in, util/Makefile.in, bind/c/Makefile.in,
  2491.   bind/cpp/Makefile.in, test/Makefile.in)
  2492. - The util Makefile is no longer called by default since the utility programs
  2493.   are currently not needed by ordinary library users (Makefile.in).
  2494. - Notes that the util Makefile needs an installed PDFlib library
  2495.   (util/Makefile.in).
  2496. - Assorted changes suggested for supporting the Cygwin32 development
  2497.   environment. These involved several Makefile.in files, configure.in, and
  2498.   C source modules which make use of getopt(). Most of the changes enhanced
  2499.   the configuration machinery for other systems, too.
  2500. - Removes the install targets for the C and C++ bindings in the main
  2501.   Makefile since those targets weren't used anyway (Makefile.in).
  2502. - Changes the $@.$(OBJ) construct in all Makefiles to the actual name of
  2503.   the object (we don't want to use $< since it doesn't work everywhere)
  2504.   (*/Makefile.in, bind/Makefile.in).
  2505. - Removed a leftover text file (util/readme.txt).
  2506. - Cleaned up the configuration information in the MSVC project files.
  2507.   Most projects now only support a "Release" configuration; only pdflib
  2508.   and test have "Debug" configurations, too (pdflib.dsp, bind/*/*.dsp).
  2509. - Includes a separate project for building PDFlib as a static library
  2510.   with MSVC.
  2511. - Better supports the Mac distribution (Makefile.in):
  2512.   - Changes the CodeWarrior project file name suffix from the odd mu
  2513.     character to the more Unix-friendly .mcp. Since the project file
  2514.     doesn't contain a resource fork, there's no need to use binhex (.hqx)
  2515.     encoding.
  2516.   - Convert the lineends in all relevant text files to the Mac convention.
  2517.   - Implements a procedure for setting the correct file types for all
  2518.     relevant files (uses a utility program on the Mac).
  2519.   - Makes a self-extracting distribution fileset for the Mac.
  2520.   - Changes the Mac build of the shared library to link static C runtime
  2521.     libraries (instead of the previously used DLLs). This avoids the need
  2522.     for certain Metrowerks libraries at runtime (PDFlib.hqx).
  2523.   - Expands the Macintosh project file with support for the Java/MRJ, Python,
  2524.     Perl, and Tcl bindings.
  2525.  
  2526.  
  2527. Bindings
  2528. ========
  2529.  
  2530. - C:
  2531.   - One of the test programs didn't check the return value of PDF_open()
  2532.     (pdfclock.c).
  2533.   - Corrected a typo in the clean target of the makefile (Makefile.in).
  2534.  
  2535. - C++
  2536.   - Changes the C++ wrapper such that setting the define BROKEN_STRINGS
  2537.     reverts from ANSI C++ string handling to plain old C char pointers.
  2538.     As it turned out, ANSI C++ strings are badly supported by many
  2539.     compilers. Besides, there was a typo in the old construct (pdflib.hpp,
  2540.     pdflib.cpp).
  2541.  
  2542. - All SWIG bindings
  2543.   - Introduces export pragma for exporting PDFlib routines for the SWIG
  2544.     bindings on the Mac (pdflib/pdflib.i, bind/*/pdflib_*.c)
  2545.  
  2546. - Java:
  2547.   - Makes the Java binding work with the Macintosh Runtime for Java (MRJ)
  2548.     2.1 (PDFlib.mcp).
  2549.   - The pdflib Java initialization sleeps some time if the shared library
  2550.     cannot be loaded. This is a benefit on systems where the Java console
  2551.     immediately disappears on exit.
  2552.   - The MSVC project file for the Java binding used file names with the
  2553.     path of a beta version for all source files (Java.dsp).
  2554.     
  2555. - Perl:
  2556.   - The DEFINES variable was missing in the definition of CFLAGS
  2557.     (bind/perl/Makefile.in).
  2558.   - Makes the Perl binding work on the Macintosh (PDFlib.mcp).
  2559.   - Includes a first version of a MakeMaker-compatible Perl script for
  2560.     generating a Makefile which more closely fits the Perl environment.
  2561.     The Perl-generated Makefile can be used instead of the configure-
  2562.     generated one in bind/perl. Note that the Perl script itself must be
  2563.     generated by the configure script.
  2564.   - Notes how to build the PDFlib Perl binding with recent versions of
  2565.     Perl, e.g. 5.005_57 (bind/perl/readme.txt).
  2566.  
  2567. - Python:
  2568.   - The DEFINES variable was missing in the definition of CFLAGS
  2569.     (bind/python/Makefile.in).
  2570.   - Makes the Python binding work on the Macintosh (PDFlib.mcp).
  2571.   - Makes the test programs exit cleanly in case of error (hello.py,
  2572.     pdfclock.py).
  2573.  
  2574. - Tcl:
  2575.   - The Tcl package index file didn't get updated properly due to
  2576.     the LD_LIBRARY_PATH variable not being properly exported
  2577.     (bind/tcl/Makefile.in).
  2578.   - Fixed a typo in the hello test program. Apparently it worked correctly
  2579.     anyway because of some particular circumstances and missing type
  2580.     checking in the SWIG-generated code (hello_tcl.pdf).
  2581.   - Makes the Tcl binding work on the Macintosh (PDFlib.mcp).
  2582.  
  2583. - Visual Basic:
  2584.   - The return value of all image open functions was erroneously declared
  2585.     void instead of int. We had to change the GUID after this correction,
  2586.     but the 2.01 API lost some image functions anyway (pdflib_vb.idl).
  2587.  
  2588.  
  2589. Documentation:
  2590. - Slightly expands the comments in pdflib.upr.
  2591. - Adds several clarifications and minor additions to the manual, and cuts
  2592.   down the size of the PDF manual by optimizing font and image handling.
  2593. - Adds information to the manual about configuring the shared libraries
  2594.   for scripting under Unix, Windows, and Mac.
  2595. - Adds descriptions of the few new features to the manual.
  2596. - Removes the bind/*/pdflib_*.doc text files since they don't add any
  2597.   real value to the big PDFlib manual which is supplied in PDF format.
  2598. - Brings the sections in pdflib.h in sync with the sections in the main
  2599.   manual (although the SWIG-generated doc files are no longer distributed).
  2600.  
  2601.  
  2602. V2.0 (June 30, 1999)
  2603. =====================
  2604.  
  2605. Bug fixes and enhancements:
  2606. - Implements a better scheme for making sure the ordering constraints
  2607.   for PDF page descriptions are obeyed while not bothering library
  2608.   clients with most of the details (p_gstate.c, p_draw.c, p_text.c).
  2609.   The remaining constraints are documented in the manual.
  2610.  
  2611.  
  2612. Build process, distribution, and platform support:
  2613. - Further tweaks the support for shared libraries on OpenStep 4 (configure.in).
  2614.  
  2615.  
  2616. Bindings:
  2617. - All bindings:
  2618.   - The shared libraries built for a specific language binding inadvertently
  2619.     referred to a hard-coded path to the actual PDFlib library (../../pdflib).
  2620.     In order to avoid this, the -L and -l options are used instead of
  2621.     supplying the relative name of the library file for linking the
  2622.     shared libraries or test programs (bind/*/Makefile.in, configure.in).
  2623.     This means LD_LIBRARY_PATH has to be set for testing.
  2624.  
  2625. - Java:
  2626.   - Removes the pointless import statement from the Java samples
  2627.     (hello.java, pdfclock.java).
  2628.  
  2629. - Tcl:
  2630.   - Added LD_LIBRARY_PATH when generating the Tcl package index file
  2631.     in order to find the PDFlib shared library (bind/tcl/Makefile.in).
  2632.  
  2633.  
  2634. Documentation:
  2635. - Explains more of the PDF graphics model, and documents the
  2636.   restrictions and interactions among graphics-related functions
  2637.   (doc/PDFlib.pdf).
  2638.  
  2639.  
  2640. V1.92 (June 27, 1999)
  2641. =====================
  2642.  
  2643. Bug fixes and enhancements:
  2644. - PDF_translate() erroneously used the same value for both coordinates
  2645.   (p_gstate.c).
  2646. - A subtle "unreachable code" warning was issued by the Watcom
  2647.   compiler, and he was right (p_util.c).
  2648. - Fixed a bug in the GIF code which caused a crash on the Mac due to
  2649.   an improper variable initialization. The bug had been introduced
  2650.   in the transition to thread-safe GIF handling in 1.91, and didn't
  2651.   affect other platforms.
  2652. - Cleaned up several places which look like empty statements within
  2653.   a conditional (p_gif.c).
  2654. - Slightly changes the PDF output. Although legal PDF, some properties
  2655.   caused problems with PDFviewer, a non-Adobe PDF viewer for OpenStep
  2656.   written by Detlev Droege:
  2657.   - Don't count the newline character into the /Length key of colormap
  2658.     objects because this leads to problems in the PostScript output
  2659.     generated from the PDF (p_image.c).
  2660.   - Don't compress inline images (p_image.c).
  2661. - A missing initialization caused a crash on Windows (p_hyper.c).
  2662.  
  2663.  
  2664. API:
  2665. - Implemented PDF_set_fillrule() for setting the area algorithm used
  2666.   by PDF_fill(), PDF_fill_stroke(), PDF_closepath_fill_stroke(), and
  2667.   PDF_clip() (pdflib.h, p_gstate.c, p_draw.c). This change was
  2668.   requested and implemented by Evgeny Stambulchik
  2669.   <fnevgeny@plasma-gate.weizmann.ac.il>.
  2670. - Allows for dynamic font configuration by adding all UPR categories
  2671.   to the list of supported parameters in PDF_set_parameter() (p_basic.c,
  2672.   p_util.c).
  2673.  
  2674.  
  2675. Build process, distribution, and platform support:
  2676. - Added some compiler-dependent conditionals in order to make the
  2677.   C++ binding work with non-ANSI compilers (bind/cpp/pdflib.hpp, pdflib.cpp).
  2678. - Improves compatibility with OpenStep 4.x:
  2679.   - Added an include file required for getopt (util/compile_metrics.c).
  2680.   - Enhanced configure for shared libraries on OpenStep 4.x (configure.in).
  2681.   - Don't build the C++ binding (configure.in).
  2682. - Removed the additional Makefiles for MS VC++ and the complete port
  2683.   subdirectory from the distribution (port/msvc/*).
  2684.  
  2685.  
  2686. Bindings:
  2687. - SWIG:
  2688.   - Made PDF_boot() and PDF_shutdown public in order to avoid problems
  2689.     with the SWIG wrapper files which may use them (pdflib.h).
  2690.   - Made the exception jump buffers for the SWIG bindings static which
  2691.     they should have been anyway (pdflib.i).
  2692.   - Adds the define PDFLIB_STATIC to the project files for the SWIG
  2693.     bindings on Windows because we don't want to export the core
  2694.     PDFlib  functions from the DLL in the SWIG case.
  2695.  
  2696. - Java:
  2697.   - Adds a MS VC++ project file for the Java binding (bind/java/Java.dsp).
  2698.  
  2699. - Tcl
  2700.   - Adds a MS VC++ project file for the Tcl binding (bind/tcl/Tcl.dsp).
  2701.  
  2702. - Perl
  2703.   - Adds a MS VC++ project file for the Perl binding (bind/perl/Perl.dsp).
  2704.   - Introduces patches and quirks to support PDFlib with ActivePerl on
  2705.     Win32. Although our configuration works for a certain software
  2706.     combination, all issues are documented (pdflib/pdflib.i, perl/readme.txt).
  2707.   - Changed the order in which Perl executable names are searched. The
  2708.     more likely name "perl" now is searched first (configure.in).
  2709.   - Don't map bool to char in the Perl module on NeXT, since the Perl
  2710.     include files contain special handling for bool which breaks with our
  2711.     usual defines (configure.in, bind/perl/Makefile.in).
  2712.  
  2713. - Python
  2714.   - Adds a MS VC++ project file for the Python binding (bind/python/Python.dsp).
  2715.  
  2716.  
  2717. Documentation:
  2718. - doc/compatibility.txt had some deprecated advice on the use of PDF_close().
  2719. - Added several clarifications and corrections to the manual.
  2720. - Adds a table of tested version numbers for the language bindings to the
  2721.   manual.
  2722. - Reduced the number of fonts used in the manual.
  2723. - Delivers the manual in PDF 1.2 format to avoid triggering a PostScript
  2724.   error when printing PDF 1.3 files with color images from Acrobat 3.
  2725. - Changed the page size format of the manual in order to cut down the
  2726.   total number of pages.
  2727.  
  2728.  
  2729. V1.91 (June 18, 1999)
  2730. =====================
  2731.  
  2732. Bug fixes and enhancements:
  2733. - Fixed a typo involving a printf %s format in an error message (p_font.c).
  2734. - Fixed two NULL pointer accesses for AFMs without a Weight entry
  2735.   (p_afmparse.c, p_font.c).
  2736. - Extends the AFM parser which was required for correctly processing certain
  2737.   non-Adobe AFM files (p_afmparse.c):
  2738.   - Added the new key "Characters" to the AFM parser. The value is ignored
  2739.     since it is duplicated in "StartCharMetrics".
  2740.   - Changes the handling of the "Version" key in AFMs such that arbitrary
  2741.     strings are allowed after the keyword, not only single tokens.
  2742.   - Changes the handling of the "Encoding" key in AFMs such that it is
  2743.     optional, not required (p_afmparse.c).
  2744. - Allow blank lines and comment lines in upr files (p_util.c).
  2745. - Removed the remaining non-const globals in the GIF module, thus making
  2746.   GIF processing thread-safe (p_gif.c, p_intern.h).
  2747. - Adds multithreading for Win32 to the test bed (test/pdftest.c). This
  2748.   nicely demonstrates PDFlib's thread-safety.
  2749. - Changes the debug configuration and output machinery to a more flexible
  2750.   system with control over individual debug facilities.
  2751. - Adds const to the PDF_set_font declaration and definition.
  2752. - Removed sys_errlist from makepsres in order to make it POSIX compliant.
  2753. - Added some cleanup code for places discovered with a purify session:
  2754.   - The resource handling machinery didn't close the handle to the
  2755.     resource file (p_util.c).
  2756.   - The client-provided resource file name wasn't freed (p_basic.c).
  2757.   - The base structure for ligatures in the AFM parser wasn't freed
  2758.     (p_afmparse.c).
  2759. - Changed the cleanup routines to make sure the output file is closed
  2760.   in case of error (p_basic.c).
  2761. - Two non-initalized members of the PDF struct caused a core dump at 
  2762.   clean-up time under rare circumstances (p_basic.c, p_image.c).
  2763. - Adjusted the output format of float values to the limits documented in
  2764.   the PDF spec (p_util.c).
  2765. - The annotation border style and color were not correctly initialized
  2766.   due to a typo (p_basic.c).
  2767. - The transition info didn't get properly initialized (p_hyper.c).
  2768.  
  2769. API:
  2770. - (Again) bundles PDF_close_file() and PDF_close_fp() to PDF_close() since
  2771.   clients should not be affected by the way in which the PDF had been
  2772.   opened.
  2773. - Slightly rearranged some functions to other C modules in order to
  2774.   make the API structure and manual clearer.
  2775. - Removed PDF_finalize() from the API and reworked PDF_delete() so
  2776.   that it may be used for cleanup in case of error.
  2777. - Changed the error handler's signature to include PDF * to make it
  2778.   easier for client-supplied handlers to do a PDF_delete(p) (p_basic.c,
  2779.   p_intern.h, pdflib.i).
  2780. - Changed the first argument of the memory management procedures back
  2781.   to PDF *, since the client can retrieve his own opaque pointer via
  2782.   PDF_get_opaque().
  2783.  
  2784.  
  2785. Build process, distribution, and platform support:
  2786. - Added several casts in order to pacify the CodeWarrior compiler.
  2787. - Added a Macintosh-encoded variant to the sample text in pdftest.c.
  2788. - The configure script set the TIFF include path even when no TIFF support
  2789.   was installed/found (configure.in).
  2790. - Adds the AFM files to the distribution (again), and moves pdflib.upr to
  2791.   the directory where the AFMs live (fonts/*.afm, fonts/*.upr).
  2792. - Adds a --with-debug option to the configure script which activates the
  2793.   debugging facilities, and implies building PDFlib as a static library.
  2794. - Adds a test for the JPEG library to the configure script since the
  2795.   JPEG library is needed by some versions of the TIFF library.
  2796. - Changes a couple of places for compilation with the Watcom compiler:
  2797.   - Maps the __WATCOMC__ #define to WIN32 (p_config.h).
  2798.   - Introduced a typedef for the first function argument of PDF_new2()
  2799.     since the Watcom compiler issues a dubious warning otherwise (pdflib.h).
  2800.   - Includes io.h for the unlink() declaration (p_basic.c).
  2801. - Changed the sample images included in the distribution (pdflib.gif,
  2802.   tm.g3, acroweb_j.tif)
  2803. - Removed the makepsres program from the distribution.
  2804. - Adds compiler optimize flags by adding $CFLAGS to $DEFINES (configure.in).
  2805.  
  2806.  
  2807. Bindings:
  2808. - All SWIG bindings:
  2809.   - The dist target in the main makefile called the version target, resulting
  2810.     in updated access times for the SWIG-generated wrapper files. This in
  2811.     turn resulted in SWIG being launched unnecessarily on the client system.
  2812.     We now simply touch the wrapper files before preparing the tar file.
  2813.  
  2814. - Java:
  2815.   - PDF_boot() and PDF_shutdown need not be available to the Java API
  2816.     since PDFlib booting is done automatically for the Java binding.
  2817.   - The hello example didn't obey the new PDF_findfont() semantics
  2818.     (bind/java/hello.java).
  2819.  
  2820. - Perl:
  2821.   - Fixed a typo (1 should be -1) in the font error handling line (hello.pl).
  2822.  
  2823. - C:
  2824.   - Moved hello.c and pdfclock.c to a separate directory bind/c.
  2825.   - A bug in the configure.in script prevented the test rules for the C
  2826.     and C++ bindings from being executed.
  2827.   - The C hello example didn't obey the new/open_file semantics
  2828.     (bind/c/hello.c).
  2829.  
  2830. - C++:
  2831.   - Renamed the bind/c++ directory to bind/cpp in order to avoid problems
  2832.     with some older build environments (Makefile.in, PDFlib.dsw, configure.in).
  2833.   - Reworks the C++ binding in order to make it work with the Watcom compiler:
  2834.     - Don't use namespaces
  2835.     - Special string handling, including conversion to chars.
  2836.     - Adds a macro to change the conversion of C++ string to C chars since
  2837.       Watcom doesn't support the ANSI conforming c_str() method.
  2838.     - Removes the page loop and the sleep() call which had inadvertently
  2839.       been left over.
  2840.   - A bug in the configure.in script prevented the test rules for the C
  2841.     and C++ bindings from being executed.
  2842.   - Changed the PDF constructor in order to allow for client-supplied
  2843.     error and memory management routines, and adds default NULL values for
  2844.     these.
  2845.  
  2846.  
  2847. Documentation:
  2848. - Switches to version 7 of the Aladdin Free Public License, and includes
  2849.   the license text as PDF (doc/license.pdf).
  2850. - Includes brief API documentation files for the SWIG-generated language
  2851.   bindings (bind/*/*.doc).
  2852. - Includes the updated and reworked edition of the PDFlib manual
  2853.   (doc/PDFlib.pdf).
  2854.  
  2855.  
  2856. V1.90 (June 2, 1999)
  2857. ====================
  2858.  
  2859. New Features:
  2860. - Makes PDFlib thread-safe by removing the remaining few writable globals.
  2861. - Use magic numbers for image file formats (imagepdf.c)
  2862. - Supports Unix PostScript Resource files (*.upr) for describing the AFM 
  2863.   and font file names, and an environment variable pointing to the resource
  2864.   file.
  2865. - User-defined document information field (in addition to Title, Author, etc.)
  2866. - Unicode-enables bookmarks, text annotations, and document info entries
  2867.   (p_hyper.c, p_annots.c, p_text.c).
  2868. - Changed the encoding vectors according to PDF 1.3. The most relevant
  2869.   change is the inclusion of /Euro in WinAnsi and PDFDoc encodings
  2870.   (ansi_e.h, pdfdoc_e.h)
  2871. - File attachment, launch, link, weblink and text annotations (p_annots.c).
  2872. - Add file type and creator on the Mac (p_basic.c).
  2873. - Nested bookmarks (p_hyper.c).
  2874. - Changes the API name of the bookmark function from PDF_add_outline to
  2875.   the more intuitive PDF_add_bookmark (p_hyper.c)
  2876. - Removes the limits on number of pages, page contents, and number of objects
  2877.   and introduced dynamic reallocation (p_hyper.c, p_basic.c, p_annots.c).
  2878. - Generates a PDF-1.3 header (Acrobat 4 files). According to the PDF spec
  2879.   this should work OK also for older viewers as long as no PDF 1.3
  2880.   specific feature is used in the PDF file.
  2881. - Introduces Zlib compression for images and file attachments.
  2882. - Completely reworked the font handling. Font metrics caching now avoids
  2883.   many AFM lookups, which dramatically speeds up PDFlib (up to a factor of 20!).
  2884. - Implemented in-core font metrics data. This completely eliminates the
  2885.   need for external AFM files. Using the supplied utility compile_metrics
  2886.   arbitrary metrics files can be compiled into the PDFlib source code.
  2887. - Adjusted the page size validation to Acrobat 4's larger limits (p_basic.c).
  2888. - New functions to query current font name and size (p_font.c)
  2889. - Introduced version numbers for the shared library and versioning schemes
  2890.   for the scripting API (except Python)
  2891. - Eliminated all enums at the API level and replaced them with string
  2892.   arguments.
  2893. - Eliminated the individual PDF_close_[TIFF|GIF|JPEG|CCITT|memory_image]
  2894.   since PDF_close_image handles it all.
  2895. - User-adjustable debug level.
  2896. - Introduced PDF_new(), PDF_new2(), and PDF_delete, as well as PDF_open_file()
  2897.   and PDF_close_file() and PDF_open_fp() and PDF_close_fp().
  2898. - Made the page size parameters float in order to accomodate PDF 1.3.
  2899.  
  2900.  
  2901. Bindings:
  2902. - Largely improved the Perl, Tcl, and Python bindings.
  2903. - Introduced the Java binding via JNI (bind/java).
  2904. - Introduced a C++ wrapper class for PDFlib (bind/cpp).
  2905. - Introduced versioning if the language supports it (currently
  2906.   Perl and Tcl; the Java binding uses transparent shared library versioning).
  2907. - Binds the TIFFlib and zlib libraries into the shared library for
  2908.   the PDFlib scripting bindings, thereby making the TIFF and compression
  2909.   features available to all SWIG bindings.
  2910. - Improved the SWIG-generated documentation for the scripting APIs.
  2911. - Introduced language-specific exception handling as offered by SWIG.
  2912.   Exception handling for Java is done outside of SWIG.
  2913. - Explicitly sets the "C" locale in order to avoid the Java VM messing up
  2914.   our decimal separators by setting a bad locale.
  2915. - Introduced a Visual Basic binding with a specialized DLL and a type
  2916.   library.
  2917.  
  2918.  
  2919. Other:
  2920.  
  2921. - Restructured the distribution directory tree.
  2922. - Streamlined the API for better scripting support.
  2923. - Added a file which documents changes to the API.
  2924. - Introduced versioning also at the API level and in the shared object naming.
  2925. - Changed the error handler interface to a fixed string, as opposed to a
  2926.   variable number of arguments.
  2927. - Introduced error/exception classes which replace the former
  2928.   error types, and are passed through to the scripting API.
  2929. - Reworks and cuts down the AFM parser, and makes it re-entrant.
  2930. - Installs NULL error and warning handlers in TIFFlib in order to
  2931.   avoid messages from opening corrupt TIFF files. The caller will be
  2932.   notified via the return code.
  2933. - Introduced "const" for all char * arguments in the API.
  2934.  
  2935.  
  2936. V1.0 (February 1999) (not publicly released)
  2937. ============================================
  2938.  
  2939. No new featues, only bug fixes and improved platform support.
  2940.  
  2941. Platform support:
  2942.  
  2943. - Changed all library clients so that main() is declared with return
  2944.   type int.
  2945. - Many casts and other minor changes in order to get rid of
  2946.   MS Visual C++ 6.0 warnings (*.c, *.h).
  2947. - Included project and workspace files for MS Visual C++ 6.0 in the fileset
  2948.   (PDFlib.dsp, PDFlib.dsw).
  2949. - Removed Watcom makefile from the fileset (makefile.wat).
  2950. - Switch to autoconf support (configure, configure.in, Makefile.in)
  2951. - Added Mac build support and file type/creator entries (p_basic.c)
  2952.  
  2953.  
  2954. Bug fixes:
  2955.  
  2956. - Extended close routine (p_gif.c, p_jpeg.c)
  2957. - Page height and width were exchanged in the interface of PDF_begin_page()
  2958.   as well as in the manual. Funnily enough, the MediaBox was also written
  2959.   with both in the wrong order, thereby correcting things. However, the
  2960.   demo clients used the parameters in the intended order. This fix only
  2961.   clarifies the meaning of width and height, but doesn't change the
  2962.   behavior of clients.
  2963. - PDF output file is no longer closed in the library in order to
  2964.   be consistent with the opening in the client. This INCOMPATIBLE
  2965.   change means that all library clients now must close the PDF output
  2966.   file themselves!
  2967. - Fixed a core dump bug in the TIFF handler (p_tiff.c)
  2968. - Fixes bug where a font could get written to the PDF with wrong
  2969.   encoding information.
  2970.  
  2971.  
  2972. V0.7b2 (August 1998) (only for a single customer)
  2973. =================================================
  2974.  
  2975. New features:
  2976.  
  2977. - Added CCITT support for passing through G3 or G4 compressed
  2978.   bitmap data (p_ccitt.c, pdf.h).
  2979. - Changes to the image interface (p_ccitt.c, p_jpeg.c, p_tiff.c,
  2980.   p_gif.c, pdf.h)
  2981.  
  2982. Bug fixes:
  2983.  
  2984. - Changed the get_2bytes macro to a function since the macro
  2985.   didn't guarantee the evaluation order, which lead to problems
  2986.   when analyzing JPEGs on BeOS (p_jpeg.c).
  2987. - Added a check for Acrobat-compatible page size (1"-45", or
  2988.   72pt-3240pt) in PDF_begin_page(). This is necessary to work around
  2989.   restrictions in Adobe's Acrobat implementation (p_basic.c).
  2990.  
  2991. Minor enhancements:
  2992.  
  2993. - Several makefile cleanups (makefile.gcc).
  2994.  
  2995.  
  2996. V0.6 (08 July 1998)
  2997. ===================
  2998.  
  2999. New features:
  3000.  
  3001. - Added SWIG support, as suggested and basically implemented by
  3002.   Rainer Schaaf (Rainer.Schaaf@T-Online.de). SWIG support allows us
  3003.   to use PDFlib routines from Tcl, Perl, and Python.
  3004.   (makefile, pdflib.i, pdftcl_wrap.c pdfperl_wrap.c, pdfpython_wrap.c,
  3005.   pdflib.pm).
  3006. - New directory structure: BINDINGS directory contains subdirectory
  3007.   for several PDFlib language bindings. Currently these are
  3008.   C, CGI, Perl, Tcl, Python (yes, I know that CGI is not a language).
  3009. - Included scripting samples (BINDINGS/*/pdfclock.[pl|tcl|py],
  3010.   BINDINGS/*/hello.[pl|tcl|py]).
  3011. - Added new function PDF_setpolydash, suggested and implemented
  3012.   by Evgeny Stambulchik <fnevgeny@plasma-gate.weizmann.ac.il>
  3013.   (p_gstate.c, pdf.h).
  3014.  
  3015. Bug fixes and minor enhancements:
  3016.  
  3017. - Fix trivial (but fatal) free/fclose bug (p_font.c)
  3018. - Slightly change syntax of pdfgraph sample program: fill and
  3019.   stroke is denoted by 'F' instead of 'B' (pdfgraph.c)
  3020. - Shorten the version string (pdf.h)
  3021. - Add cast (p_basic.c)
  3022. - Conditionally typedef bool because of conflicts in VC++ (pdf.h and p_port.h)
  3023. - Add cast (p_font.c)
  3024. - Delete old BOOL typedef (pdf.h)
  3025. - Renamed function parseFile to pdf_parseFile in order to avoid name
  3026.   clashes with other software packages. This change was requested
  3027.   by Evgeny Stambulchik for the xmgr package. This package uses T1lib
  3028.   which also includes a copy of Adobe's AFM parser. (afmparse.c,
  3029.   afmparse.h, p_font.c).
  3030. - Fixed typo in the Goethe demo text (pdfdemo.c).
  3031. - Adjusted demo data to new setrgbcolor interface (test/graphdata).
  3032. - Add PDF_HAS_BOOL define. However, it doesn't really fix the multiple 
  3033.   boolean define/typedef/enum problem (p_port.h).
  3034. - Removed const from PDF_info struct members. This change is related
  3035.   to SWIG support, although the necessity of the change is not yet
  3036.   fully understood (pdf.h).
  3037. - Enhances the AFM parser to recognize AFM files according to the AFM 4.1
  3038.   specification, especially the "CharWidth" keyword.
  3039.  
  3040.  
  3041. V0.5 (25 February 98)
  3042. =====================
  3043. Portability aids, bug fixes and other improvements from several contributors:
  3044.  
  3045. - JPEG images could be closed multiply (p_jpeg.c)
  3046. - Introduce Mac and Win32 porting defs (p_port.h)
  3047. - Use define for path separator which is needed for the Mac's ":"
  3048.   (p_port.h, p_font.h)
  3049. - Rename structure member private to private_data for C++ compatibility
  3050.   (pdf.h, p_font.c, p_gif.c, p_jpeg.c, p_tiff.c)
  3051. - NeXT portability: include libc.h (imagepdf.c, pdfclock.c, pdfgraph.c, 
  3052.   text2pdf.c)
  3053. - Don't use malloc.h (afmparse.c)
  3054. - Change variable handling in make build process (makefile)
  3055. - Fix bug in octal character representation (p_text.c)
  3056. - Introduce word and character spacing functions (p_text.c)
  3057. - Fix subtle bug in font embedding: fonts with additional data after
  3058.   the zeros portion were not properly embedded (p_font.c)
  3059.  
  3060. Environment bindings:
  3061. - Introduces BINDINGS directory which will collect several language and
  3062.   environment bindings for PDFlib.
  3063. - Sample CGI script for the PDFclock example (BINDINGS/CGI/clock.cgi)
  3064.  
  3065. Several bugfixes, due to Detlev Droege's comments after
  3066. testing with his PDFviewer:
  3067.  
  3068. - Avoid empty /Filter arrays for uncompressed binary images (p_image.c).
  3069. - Change erroneous number of color components in demo page (pdfdemo.c).
  3070. - Implement consistency check for color components vs. color space
  3071.   (p_image.c)
  3072. - Write binary magic number for all files (ASCII and binary) (p_basic.c).
  3073. - Change "Producer" to "Creator" in sample application (hello.c).
  3074. - AFM handler crashed in case the AFM parser gave up on certain AFMs (p_font.c).
  3075. - AFM parser didn't correctly handle newer version 4.0 AFMs (afmparse.c).
  3076. - Use AFM 4.0 key "StdVW" for a more accurate /StemV in font descriptor 
  3077.   (p_font.c).
  3078. - API CHANGE: Change RGB parameters from byte to float since
  3079.   gray values are float parameters too (p_color.c).
  3080.  
  3081.  
  3082. V0.4 (8 September 97)
  3083. =====================
  3084. First public release.
  3085.  
  3086. - Generating multiple PDFs with embedded images resulted in wrong
  3087.   XObject numbers for the second and following PDFs. Use image_number
  3088.   from the PDF structure instead of a static variable.
  3089.   (p_image.c, p_basic.c)
  3090. - Makefile for Watcom C 10.6 included in the distribution, support
  3091.   Windows build (makefile.wat).
  3092.