Mask chars passed to isdigit in goo/parseargs.c to avoid problems with
  signed chars.
Added more error checking to the CCITTFax decoder.
Fixed a bug (computing the MCU size) in the DCT decoder.
Change a test in the Splash stroke code to avoid x86 floating point
  weirdness.
Reorganized the decryption code to allow security handler plugins;
  removed the NO_DECRYPTION #ifdefs.
Added a plugin interface, initially just for security handlers.
Support color key masked images and explicitly masked images in PS
  output (Level 2 only).
When checking for aliases of the Base 14 fonts, ignore spaces in the
  specified font name.
Handle encrypted PDF files that are missing the file ID string.
Handle tiling patterns more efficiently in the PostScript output.
Rewrote the code that handles color spaces in PostScript output.
Fixed a bug in the Type 1C font parser - zero-length indexes (and
  zero-length names) weren't handled correctly.
Handle shaded fills more efficiently in the PostScript output.
Implement the remaining shading types (4-7).
Rearranged the Splash color modes.
Add the EarlyChange parameter to LZWStream when generating PostScript.
Check for zero values in line dash arrays in PSOutputDev.
Fixed an uninitialized variable in JArithmeticDecoder which was
  causing crashes.
Treat unknown CMap names as identity mappings (to match Adobe's
  behavior).
Fixed bugs in the XRef parser related to XRef streams in updated
  files.
Added a missing call to FT_Done_Glyph which was causing a memory leak.
  [Thanks to Dave Formanek.]
Fixed a bug in text copying that was causing the last word to be
  dropped on some pages.
Tweaked the image width/height computation in Splash::drawImage and
  Splash::fillImageMask to make striped images work better.
Ignore minus signs in the middle of numbers (to match Adobe's
  behavior).
Missing '%s' in format strings for dates in pdftotext '-htmlmeta'
  mode.
Change the TrueType code-to-GID mapping code so it looks at the
  standard name-to-Unicode mapping before the ToUnicode mapping
  defined in the font object.
Added a matteColor setting (command line option and X resource).
Tweaked the CMYK->RGB transform.
Fix some problems in tracking the character position (to match up with
  Adobe's highlight file format).
Handle moveto/closepath/stroke correctly.
Check for singular text matrices and font size of zero in PSOutputDev.
Clip PS output to the size of the page (avoiding any gibberish that
  lies outside the MediaBox, in the case where the MediaBox is smaller
  than the paper).
If the line dash element in an annotation's Border array is of an
  invalid type (i.e., not an array), don't draw the link at all (this
  matches Adobe's behavior).
Don't remap small caps and oldstyle glyphs in the name-to-Unicode
  table - it messes up TrueType font encodings.
Pdftoppm wasn't setting the paper color correctly in mono and gray
  modes (this only showed up on big-endian machines).
Missing NULL check was causing crashes when attempting to read non-PDF
  files that happened to contain the string '%PDF'.
Fixed a problem in the text extractor that was breaking up words.
Handle vertical text (CJK fonts) in PS output with TrueType fonts that
  are missing the vertical metrics tables.
Handle the case where a font object and the corresponding embedded
  font are different types.
Handle basic crypt filter functionality.
Added more value checking in the XRef parser, to avoid potential
  security problems.
Updated the CJK language support packages: replaced the
  displayCIDFontX references with displayCIDFontTT; added pointers to
  free TrueType fonts.
Added a missing error message when SplashOutputDev can't parse an
  embedded TrueType font file.
PDFCore and TextOutputDev now correctly handle searching for Unicode
  strings, including real Unicode case-folding.
Throw away tiling pattern fills that are completely outside the clip
  region.
The JPEG 2000 inverse reversible multiple component transform code was
  wrong.
Fixed some bugs in shading pattern fills: clipping was wrong, and
  background color was not implemented.
Added tool tips for the toolbar buttons.
Decrease the max depth of recursive patch mesh filling if the pattern
  has a large number of patches.
Highlight the find text whenever the find dialog is mapped.
Handle page boundary boxes with reversed coordinates.
Fixed a bug in the text extractor code that handles duplicated text.
Optimization work on SampledFunction::transform().
Use the CropBox instead of the MediaBox as the display region.
Dither for PseudoColor (8-bit) displays.
Fix a bug in DCTStream that was causing an infinite loop with
  corrupted DCT image data.
Fix a bug in the ToUnicode CMap parser.
Fix a bug in the text extractor - negative font sizes weren't being
  handled correctly.
Fix a bug in the text extractor - in certain cases, out-of-bounds text
  could cause crashes (generally only in damaged PDF files).
Fix a read-past-end-of-array bug in the JBIG2 decoder.
Fix a case where pdftops was generating lines longer than 255 chars.
Optimize redraws - don't regenerate the XImage every time redrawRect
  is called.
The ASCII85 decoder wasn't skipping whitespace properly.
Optimize text extraction: skip (non-inline) image setup entirely.
Added initial transparency support (stroke/fill alpha and blend mode).
Added support for the overprint setting in PostScript output.
Fixed various buffer overflow bugs.
Handle negative font sizes and horizontal scaling correctly - this
  affected PSOutputDev for all text operators, as well as the TJ
  operator for all OutputDevs.
Fixed a buffer overflow in the CCITTFax decoder.
Fixed an out-of-order entry in the list of font name aliases.
Fixed a backward loop in the PostScriptFunction code.
Treat a zero-length base URI the same way as a nonexistent base URI.
Add a divide-by-zero check in TextOutputDev (the problem was happening
  in cases of mixed horizontal and vertical text).
PSOutputDev wasn't rounding the page bounding box coordinates
  correctly.
Support the SOF1 marker in DCT (JPEG) image streams.
Minor changes to GlobalParams.h and JPXStream.h because some compilers
  don't like anonymous structs inside anonymous unions.
Xpdf now complains about a negative page number.
Changed GString::cmp and GString::cmpN to correctly handle '\0' chars
  in the middle of strings.
Fixed the radial shading code; corrected the handling of the 'extend'
  parameters.
Added the gmallocn and greallocn functions.
Fixed a bug in the TIFF image component predictor which shows up with
  components that are not 1 or 8 bits wide.
Optimized FlateStream::loadFixedCodes().
For non-embedded Base-14 fonts, don't use the ascent/descent/bbox
  values from the FontDescriptor - various PDF generators get them
  wrong.
Fixed a bug in the text extractor - words on the same line (especially
  in tables) were being split vertically onto multiple lines.
Automatically select the correct radio button ("print with command"
  vs. "print to file") in the print dialog.
Don't create the "open" and "save as" dialogs until needed - this
  avoids stat-ing every file in the directory at startup.
Changed the Big5 and Big5ascii encodings (in the traditional Chinese
  language support package) to include characters from the Unicode
  database (which aren't mentioned in the Adobe character collection
  documentation).
Added the '-pagecrop' switch to pdftops.
Tweaked the RGB->gray and CMYK->gray conversion functions to match the
  PDF spec.
The JPEG 2000 decoder wasn't correctly handling codeblocks split
  across multiple packets/layers.
Fixed a typecast that caused compile errors on 64-bit systems.
The CMap parser wasn't handling the 'cidchar' construct.
Handle the case in PSOutputDev where two font objects refer to the
  same embedded 16-bit TrueType font, but with different CIDToGIDMaps.
Changed the configure script to report more accurate warnings when
  it can't find X / Motif / FreeType.
Encryption with revision=2 always uses a 40-bit key, regardless of the
  specified Length value.
Yet another minor change to the TrueType font encoding deciphering
  algorithm.
Don't completely invalidate the Catalog if one (or more) of the page
  objects are bogus -- just skip over those pages.
Removed the workaround in pdftops for too-small Length2 values in Type
  1 fonts -- it was causing problems on various PostScript printers.
Started adding error checking to the JBIG2 decoder (this is nowhere
  near complete yet).
Extended the "unicodeToUnicode" config option to also apply to CID
  fonts.
Added the narrow Latin characters to the Adobe-Korea1.cidToUnicode
  file in the Korean language support package.
Fixed the code that handles page rotation in PSOutputDev.
When converting a Type 1C glyph to a Type 1 glyph, insert closepath
  operators as appropriate.
Check for a sane 'loca' table in TrueType fonts (FoFiTrueType::parse).
Fix PSOutputDev to correctly handle the case of an empty name in a
  font encoding.

3.02 (2007-feb-27)
------------------
Added anti-aliasing for vector graphics; added the vectorAntialias
  xpdfrc option; added the "-aaVector" switch to xpdf and pdftoppm.
Implemented stroke adjustment (always enabled by default, ignoring the
  SA parameter, to match Adobe's behavior), and added the strokeAdjust
  xpdfrc command.
Support PDF 1.6 and PDF 1.7.
Added support for AES decryption.
Added support for OpenType fonts (only tested with 8-bit CFF data so
  far).
Added user-configurable key/mouse bindings - the bind/unbind xpdfrc
  commands.
Cleaned up the full-screen mode code and added the ability to toggle
  it on the fly (the default key binding is alt-f).
Pdfimages with the -j option now writes JPEG files for 1-component
  (grayscale) DCT images, in addition to 3-component (RGB) images.
Fixed bugs in handling sampled (type 0) functions with 32-bit
  samples.
Fixed some things to support DeviceN color spaces with up to 32
  colorants.
Pdftops now constructs the %%Creator and %%Title DSC comments from the
  relevant information in the PDF Info dictionary.
Tweak the TrueType font encoding deciphering algorithm.
Added the "mapUnkownCharNames" xpdfrc option.
Fix a bug (that only showed up with certain window managers) in the
  intermediate resize event optimization.  [Thanks to Michael Rogers.]
Check for a broken/missing embedded font (this was causing xpdf to
  crash).
Added support for transfer functions in PostScript output.
Be a bit more tolerant of Link destinations that contain null values
  for positioning parameters.
Use ordered dot dithering instead of clustered dot dithering at 
  resolutions below 300 dpi (for monochrome output).
Fixed security holes (bounds checking issues) in several places.
Don't bother creating a SplashFont (allocating memory) for fonts that
  are only used for hidden text - this avoids problems with fonts of
  unreasonably large sizes.
Clipping in TextOutputDev was off for characters on the left edge of
  the page.
The scn and SCN operators weren't correctly handling colors with more
  than four components.
FoFiType1::writeEncoded wasn't always correctly finding the end of the
  encoding.
Use the ColorTransform parameter in the DCTDecode stream dictionary.
Type 3 fonts are allowed to have a bbox of [0 0 0 0], which means
  "unspecified" -- don't issue error messages in that case.
Perform the transform (to device space) in Splash instead of in
  SplashOutputDev -- this is needed to correctly handle round joins
  and caps on stroked paths.
PSOutputDev now rasterizes any pages that use transparency.
Limit the crop, bleed, trim, and art boxes to the edges of the media
  box (per the PDF spec).
Change GString to increase the allocation increment by powers of two.
Handle whitespace in hex strings in CMap files/streams.
Use strings instead of names for separation colorant names in
  PSOutputDev.
For explicitly masked images where the mask is higher resolution than
  the image, use the soft mask code.
Avoid problems with very large x-steps in the PostScript output for
  tiling pattern fills.
Avoid a divide-by-zero in stitching functions which have a subfunction
  with empty bounds.
Honor the "Hidden", "NoView", and "Print" flags on annotations.
Rewrote the pixel rendering code in Splash to use a single set of
  pixel pipeline functions.
Added support for transparency groups and soft masks.
Fixed the transparency blend functions to match the addendum published
  by Adobe.
Changed Splash/SplashBitmap to store alpha in a separate plane.
Setting the color space now selects the correct default color for that
  color space.
Remove the mutex lock from GlobalParams::getErrQuiet() to avoid a
  deadlock when parseCIDToUnicode() or parseUnicodeToUnicode() calls
  it from inside a locked section.
Added error checking (on the argument count) in the sc/SC/scn/SCN
  operators.
Skip over notdef glyphs in TrueType fonts (which sometimes get drawn
  as little boxes), to match Adobe's behavior.
Painting operations in a Separation color space with the "None"
  colorant or a DeviceN color space with all colorants set to "None"
  never mark the page.
Fixed an obscure bug in the JPX decoder - it wasn't reading the extra
  stuffing byte in the case where the last byte of a packet header was
  0xff.
Change the TrueType font parser (FoFiTrueType) to change the glyph
  count rather than report an error if the 'loca' table is too small.
Fixed a couple of bugs in the JBIG2 decoder.
Added stochastic clustered dot dithering.
Added the screenType, screenSize, screenDotRadius, screenGamma,
  screenBlackThreshold, and screenWhiteThreshold xpdfrc settings.
PSOutputDev now correctly handles invalid Type 3 charprocs which don't
  start with a d0 or d1 operator
FreeType 2.2.x support - get rid of the FT_INTERNAL_OBJECTS_H include,
  and add some 'const' declarations.
Handle PDFDocEncoding in Info dictionary strings.
Tweak the xref repair code - ignore whitespace at the start of lines
  when looking for objects.
Added the "-exec" switch to xpdf.
Removed the xpdf.viKeys X resource.
Changed the color key / explicit masked image code in PSOutputDev to
  generate better PS code, including a Level 3 option.
Tweaked the DEBUG_MEM code for performance.
Move the JBIG2 global stream reading code into reset() instead of the
  constructor - this way, pdftotext doesn't end up reading the global
  stream.
Added the "-preload" option to pdftops and the psPreload xpdfrc
  command.
Added the "zoom to selection" command (on the popup menu).
Fix a bug (in xpdf/pdftoppm/pdftops) with tiling patterns whose bbox
  size is different from their xStep/yStep.
Implemented stroke with pattern color spaces.
Following a link to a page whose CropBox was different from the
  MediaBox was resulting in an incorrect scroll position.
Parse truncated date strings from the Info dictionary correctly.
Change FoFiType1 to handle Type 1 fonts with two /Encoding keys.
Extend the PSOutputDev shaded fill code to handle DeviceCMYK shaded
  fills in level2sep and level3sep modes.
Detect infinite loops in the Page tree.
Optimized the ASCII85Encoder code.
Tweaked the text extractor to do a better job of lining up rows of
  text.
Leave images compressed (or re-compress them with RLE) in PostScript
  output when setting up images for forms and Type 3 fonts (or with
  -preload).
Extend FoFiType1 to handle Type 1 fonts with octal character codes in
  their encodings.
Use a custom string formatter to avoid problems with locale-based decimal
  formatting (commas instead of periods) in PS output.
Allow comments in PostScript-type functions.
Change the TrueType font parser (FoFiTrueType) to delete glyf table
  entries that are too short.

3.03 (2011-aug-15)
------------------
Added the "fixed pitch" text extraction mode.
Modified "pdftops -paper match" to handle PDF files with
  different-sized pages, i.e., it will now select the matching paper
  size on a page-by-page basis.
Add ability for pdftoppm to write to stdout.
Added the pdfdetach tool.
Implemented 256-bit AES decryption.
Commented out the t1lib section in the configure script -- t1lib has
  some potential security holes, and hasn't been updated in years.
Redesigned the font configuration xpdfrc commands: removed the
  displayFontT1, displayFontTT, displayNamedCIDFontT1,
  displayCIDFontT1, displayNamedCIDFontTT, displayCIDFontTT, psFont,
  psNamedFont16, and psFont16 commands; added the fontFile,
  fontFileCC, psResidentFont, psResidentFont16, and psResidentFontCC
  commands.
Switched from GPLv2 to dual v2/v3 licensing.
Performance: cache tiling patterns.
Implemented text fills with pattern color spaces.
Rewrote the image and image mask rendering code to be more accurate
  and faster.
Fixed a bug in PDFCore that could sometimes cause crashes at high zoom
  levels.
Implemented embedded CMap streams.
Added the 'setSelection' command.
Added the 'rotateCCW' and 'rotateCW' commands.
Added the 'psFontPassthrough' xpdfrc command.
Added the 'launchCommand' xpdfrc command.
Implemented alpha-type soft masks.
Added "Form: AcroForm|XFA|none" to pdfinfo output.
Added support for image masks filled with pattern color spaces.
Text search wasn't finding all occurrences of a string on rotated pages
  (i.e., pages where the primary rotation, as displayed, was not
  horizontal).
The text extractor now uses "ActualText" spans if they are present.
Modified PSOutputDev so it always check for transparency; if Splash is
  not available, it now prints a warning.
Handle the blending color space for soft masks.
Added the disableFreeTypeHinting xpdfrc option.
Added the psAlwaysRasterize xpdfrc option.
Added support for transfer functions in the rasterizer.
Optimized the JPEG 2000 decoder to use less memory.
Do fill adjustment (similar to stroke adjustment) on simple
  rectangular fills.
Added the antialiasPrinting xpdfrc setting.
Added '%i', '%j', and '%k' (mouse pointer page and position) to the
  available options for the 'run' command.
Links with the underlined border style were being drawn with the lines
  over, instead of under, the text.
Add #include <aconf.h> to XPDFTree.cc (to avoid problems with certain
  compilers).
Change XRef::fetch() to avoid infinite loops caused by odd damage to
  the xref table (e.g., where a stream object's "Length" value is an
  indirect reference that points to another stream object).
Minor fix in GString.cc to deal with an error in newer C++ compilers
  (pow() can take int or double args).
Handle embedded fonts which are declared with the wrong font type,
  including 8-bit fonts declared as CID fonts and vice versa; this
  was causing various problems, including crashes and invalid
  PostScript output.
In text extractor, don't drop horizontally overlapping words onto a
  separate line.
The numbers in the operand to the TJ operator should be multiplied by
  the current horizontal scaling parameter.
Fixed a bug in the Type 1C-to-Type 1 font converter -- need to escape
  strings in the font dictionary.
The zero-font-size check in PSOutputDev.cc was broken.
Fixes for the form field appearance regeneration code: handle Unicode
  strings (by downconverting to Latin1); check for "True" in addition
  to "Yes" as a button value.
Modify XPDFTree to limit the widget height to 32767 pixels -- this
  avoids crashes with very large outlines.
Modify FoFiType1 to handle PFB headers in Type 1 font files.
Allow image mask decode arrays to be [1.0 0.0] in addition to [1 0].
Tweak the form field appearance regeneration code.
PSOutputDev now sets up resources for DR dictionaries in forms (in
  case the form field appearances are regenerated).
For TrueType fonts which are marked symbolic, the cmaps should be
  ignored.
Change the handling of numeric characters in Unicode text output --
  they are now treated as left-to-right, which isn't strictly correct,
  but does result in correct visual formatting.
Modify FoFiTrueType to handle bogus loca table entries where the
  offset is past the end of the glyf table.
Fixed shading pattern fills to do clipping and background fills
  correctly.
Change the code that reads the page tree to be more flexible with
  regard to improperly constructed trees.
Changed the PostScript header comment from "Produced by xpdf/pdftops
  x.yy" to "XpdfVersion: x.yy" to make it (mostly) DSC-compliant.
Fixed PSOutputDev to handle page rotation correctly where the PDF page
  is rotated 90 or 270 degrees and the page width (before rotation) is
  greater than its height (and vice versa for 0 or 180 degrees).
Unbalanced save/restores inside form XObjects (which can be happen in
  damaged or incorrectly constructed PDF files) could cause crashes.
The CCITTFax decoder could go into an infinite loop on certain types
  of corrupt input.
Added the "drawAnnotations" xpdfrc command.
Added the "psUncompressPreloadedImages" xpdfrc command.
Escape newlines and other non-printable characters in the custom color
  DSC comments in PostScript output.
Added the tilingPatternFill and *ShadedFill functions to
  PreScanOutputDev to speed it up.
Too many elements in an image's Decode array should not be a fatal
  error.
Fixed a buffer overflow security hole in StreamPredictor.
Empty pages (zero-length content streams and null contents) were
  causing crashes in continuous view mode.
Handle line dash arrays that start with a zero element correctly.
PreScanOutputDev was not correctly detecting all transparency - in
  some places, it was looking only at the blending mode, and not at
  the opacity setting.
Force halftone screen size to be a power of 2.  This allows optimizing
  the halftoning code.
Fixed a bug in the JBIG2 MMR decoder (and also in the CCITTFax
  decoder) that was causing array references with negative indexes.
Fixed a bug in the transparency code that was causing memory overruns.
Fixed a 64-bit bug in the ASCII85 encoder.
The focusToPageNum was crashing in full-screen mode - it should simply
  do nothing.
Added '%p' (current page number) to the available options for the 'run'
  command.
Tweak the behavior with PDF files that have pages of different widths
  in continuous mode: scroll horizontally to avoid blank space on the
  left side (when changing pages via entering a page number or
  clicking on a link).
A closepath followed by a lineto should create a new subpath for the
  lineto.
Fixed a buffer overflow in the CCITTFax decoder.
Adobe Acrobat appears to ignore the flatness setting when rasterizing
  curves, so Xpdf now does the same.  (Oddly, Acrobat passes the
  flatness setting through to PostScript output, which ends up making
  the PS file look different from the PDF file - so Xpdf continues to
  pass flatness through to PS files, too.)
Pdfimages now ignores tiling pattern fills (for performance reasons).
Fixed a bug in PDFCore that could sometimes cause crashes at high zoom
  levels.
Use std::sort (with functors) in place of qsort (if available) - this
  can be significantly faster.
Hitting "close" while Xpdf is in full-screen mode (with only one file
  open) was crashing.
Tweak the TrueType font encoding deciphering algorithm.
Rewrote the CCITTFax decoder inner loop - this fixes a security hole.
Fixed two security holes (missing bounds checks) in the DCT decoder.
Do the correct zooming for "Fit" and "FitR" destinations.
Implement the rotation value in the form field appearance regeneration
  code.
When PSOutputDev rasterizes a page (because it contains transparency),
  the image is broken into stripes if it is above a size threshold.
Don't clip the other page boxes to the MediaBox at the intermediate
  (Pages) nodes; only do it at the leaf (Page) nodes - the other boxes
  can be specified before the MediaBox is specified.
Split several special cases off from Splash::pipeRun, for performance.
Add a sanity check for excessively large font sizes (which caused
  problems because Xpdf tried to allocate memory for a font cache).
Fixed a bug in the GfxCIDFont constructor involving reading the
  vertical metrics.
Rewrote the code that handles annotation transforms - it was not
  handling non-rectangular transforms correctly.
Tweak the Type 3 bbox code to allow some slack on the left/bottom
  edges, as well as the top/right edges.
Fixed a bug that was causing problems rendering Type 3 fonts to 1-bit
  monochrome output.
Handle the case where AES padding is invalid.
Changed XRef::getNumObjects to return the number of used entries,
  instead of the same value as returned by XRef::getSize().
Ignore bogus entries in the TrueType table directory instead of
  immediately giving up on the font.
Fixed a bug in the radial shading code that could cause divide-by-zero
  errors.
Tweaked the TrueType font fixup code to deal with an extra zero entry
  at the end of the loca table.
Increased font cache sizes to improve performance.
Tweaked the TrueType notdef kludge to skip the notdef glyph only if it
  was caused by a character for which a Unicode/MacRoman mapping could
  not be found.
Added another font size sanity check, this time for Type 3 glyphs.
Added initial support for optional content (layers) - no GUI yet.
For CID fonts that specify the 'Adobe-Identity' or 'Adobe-UCS'
  collection, use an identity mapping for char code-to-Unicode
  conversion.
Updated the error function to take a category argument, and to use
  GString::format instead of printf; added an error callback.
The PDF spec claims that names are limited to 127 chars, but Distiller
  8 will produce longer names, and Acrobat 8 will accept longer names
  -- Xpdf will now handle them, too.
Change the Catalog code so it doesn't load the entire page tree at
  startup (this only helps the command line tools - the viewer scans
  all of the pages at startup).
Clip opacity values to the range [0,1].
Handle glyph names of the form 'unixxxx' (similar to Ann, Axx, etc.).
Resolution of rasterized pages in PostScript output was not being
  computed correctly (resulting in overly large images).
Extend the mapUnknownCharNames config command to cover CID fonts.
Zero-length segments in the middle of stroked paths were not being
  handled correctly -- they should be completely ignored, except for
  the special case of a zero-length path with round line caps.
Various optimizations to the Splash rasterizer.
Allow "Identity" and "Default" as the transfer function in soft masks.
Tweaked the ToUnicode CMap parser to allow <00xx> char codes for 8-bit
  fonts.
TextPage::clear() was not clearing the lists of underlines and links.
Changed the CCITTFax decoder to correctly handle the interaction
  between the EndOfLine and EncodedByteAlign parameters.
Fixed a bug where xpdf wouldn't go to a destination specified on the
  command line, if continuous mode was enabled
  (xpdf -cont file.pdf +foo).
Fixed a bug in the FreeType interface code which was causing incorrect
  positioning/sizing of characters.
Tweaked the FreeType interface code - use 'light' hinting with Type 1
  fonts (because it generally looks better).
Tweak the Windows font searching code to handle "Black" fonts.
Fixed a bug in the PostScript-type function parser -- real numbers
  that start with a decimal point weren't being handled correctly.
Changed the way filled-and-stroked text is handled -- use Splash to do
  both the fill and the stroke (rather than using the font ending to
  do the fill and Splash to do the stroke); also turn off stroke
  adjustment when drawing stroked text.
Ignore generation numbers on compressed objects (to match Adobe's
  behavior).
Changed the PostScript PageSize policy from 3 to 6 (choose next
  largest paper size, don't rescale).
Check that the mask values for color key masked images are in range --
  both Ghostscript and Distiller choke on the PostScript if invalid
  mask colors are specified.
Fixed a bug in generic region decoding in the JBIG2 decoder.
Fixed the lexer to handle large real numbers correctly.
Pdftops wasn't correctly handling tiling patterns that use both fill
  and stroke operators.
Report an error if the Size array in a sampled function includes any
  zeros.
The PostScriptFunction.codeString field wasn't being initialized
  correctly.
Invalid object streams were not being handled correctly.
Check for loops in xref tables.
Handle the case where a content stream ends after the 'ID' operator
  which starts inline image data.
Check for invalid object streams (i.e., an object stream can't be
  inside another object stream.
Add a recursion limit to the object parser - this avoids stack
  overflows with various sorts of damaged PDF files.
Handle various parameter settings in the extended graphics state
  dictionary.
An invalid document outline (missing fields) could cause a crash.
Added an overprint preview mode (for CMYK output only).
Correctly handle FitH/BH/V/BV link destinations that contain null
  values for positioning parameters.
If the PDF file doesn't define a BaseURI, set one based on the
  location of the PDF file -- this allows relative links to be handled
  correctly.
Use ResusableStreamDecode when generating Level 3 PostScript for an
  explicitly masked image.
Tweak the Type 1 font parser to handle encodings with multiple
  characters on one line.
Invert subtractive color components before passing them to the
  blending function.
Fix an invalid array access in SplashOutputDev::setSoftMask() in CMYK
  mode.
A PS interpreter may attempt to read past the end of a preloaded
  image, so we need to check for that.
Fixed several overflow/uninit bugs in JBIG2Stream.
Fix the CCITTFax decoder to correctly find end-of-file (RTC/EOFB)
  markers when the EndOfLine parameter is false.
Don't limit the startxref offset to 10 digits - some PDF generators
  use extra leading zeros.
Use the "DV" (default value) field in text annotations if the "V"
  (value) field is missing.
Increase the number of digits printed for floating point numbers in
  PostScript output -- it was running into numerical accuracy problems
  on large pages.
Fixed integer overflow bugs in Catalog.cc and GfxFont.cc.
Zero-length tables in TrueType fonts should be treated as missing.
ToUnicode CMaps map char codes to Unicode; .cidToUnicode files map
  CIDs to Unicode -- ToUnicodeCMaps were being handled incorrectly.
Added the "psRasterResolution" and "psRasterMono" xpdfrc commands.
Added code to FoFiTrueType to check for entries in the table directory
  with bogus tags -- this handles the case where the number of tables
  given in the header is too high.
Negative shift values in the PostScript bitshift operator were being
  handled incorrectly.
GfxICCBasedColorSpace was not correctly bounds-checking the number of
  components.
Check SampledFunction input values for NaNs.
Fix a divide-by-zero when the page width or height is zero.
Fix a bug positioning text in PostScript output - if the last char in
  a string has an incorrect width in the PDF font object, that messes
  up the total string width, so we have to position individual chars.
In PostScript output, if CID font substitution fails, drop all text in
  that font.
Handle PDF files that set the stream/string decryption filters to
  Identity (i.e., no encryption).
Avoid passing a zero font size to FreeType.
Tweak raw mode in the text extractor to handle words on the same line
  drawn in the wrong order.
Pdftops was generating a singular transform matrix for annotations
  whose bounding boxes had zero width or height.
Handle embedded OpenType CFF fonts with CIDToGIDMaps.
Remove the old kludge from PSOutputDev that was converting char 32
  from ".notdef" to "space".
Allow CCITTFax images to be more than 32k pixels wide.
Modified the CMap parser to handle usecmap with Identity-H/V.
Added some parameter checking in the JPX decoder.
Added checks for infinite loops in PDF objects - for color spaces,
  functions, optional content, and outline items.  
Add support for mouse button bindings up to button 32 (old limit was
  7).
Fixed a bug in the decryption code for revision 3 with keyLength < 16
  -- the owner password was not being handled correctly.  [Thanks to
  Matthias Franz.]
Optimize SampledFunction: pull index computation code out of the
  transform function; cache the last transform.
Tweaked the font naming algorithm in PSOutputDev.
Treat mirrored (as opposed to rotated) text the same as upright text
  in pdftotext.
Fixed buffer overflows in Splash and SplashBitmap.
Check for bogus character codes (e.g., <ffffffff>) in ToUnicode CMaps.
The radial shading code (in both Gfx.cc and PSOutputDev.cc) was not
  computing the s bounds properly.
Drop empty subpaths in clip and fill (but not stroke) operations -
  this can significantly speed up clip performance in the weird case
  where a PDF file does "<x> <y> <w> <h> re <x> <y> m h W n".
Added code to FoFiTrueType to check for an invalid loca format field
  in the head table.
The axial shading code (in Gfx.cc, but not PSOutputDev.cc) was not
  computing the incremental polygon vertices correctly.
Set the character width in TextOutputDev to something sensible for
  vertical fonts.
Added basic support to the text extractor for vertical writing mode.
The non-interactive tools (pdftotext, pdftops) now free Page objects
  after using them, avoiding performance problems with pages that have
  huge resource dictionaries.
Check for line dash arrays like [0], and draw nothing at all (to match
  Acrobat's behavior).
Add a sanity check for the ascent/descent values in FontDescriptors.
Single-point paths with a line dash were causing a crash.
Correctly handle Level 3 PostScript output with masked images inside
  patterns.
Tweaked the xref repair code so that it runs if the catalog is messed
  up (in addition to running if the xref table is damaged).
If Indexed color space tables (streams or strings) are too small,
  reduce the max index instead of throwing away the color space.
Change the CMap parser to allocate memory only when it sees a mapping,
  not when it sees a 'codespacerange' declaration -- this avoids
  allocating huge amounts of memory for CMaps with large, unused
  codespaceranges.
In monochrome mode, treat lines with width <= 1 as hairlines (to match
  Acrobat's behavior).
Cache the last transform for PostScript-type functions.
Added the "-rawdates" option to pdfinfo.
Optimized ImageStream::getLine().
Fixed the Hue, Saturation, Color, and Luminosity blend functions to
  match Adobe's spec.
Fixed the non-isolated group compositing computation.
Skip extraneous unused data at the end of JBIG2 segments.
Change the algorithm that stroke/fill adjustment uses so that the
  edges of adjacent strokes/fills line up.
Do stroke adjustment on end caps when cap style is butt or projecting.
Fixed a security hole: Gfx.parser was not being initialized to NULL.
Fixed a security hole: integer bounds check in the Type 1 encoding
  parser in FoFiType1.cc.
If an embedded font object is invalid or non-existent, do font
  substitution (same as if there were no embedded font).
TextOutputDev was reusing an old font in the case where the font
  changed but the font size and character positioning stayed the same.
When starting a transparency group, copy the fill/stroke colors from
  the graphics state.
Tweaked the fixed-point code.
When a TrueType font is declared resident (with a psFont command),
  don't munge the encoding.
Look for URIs starting with "www." and treat them as absolute "http:"
  URIs, not as relative URIs (to match Adobe's behavior).
Added code to FoFiTrueType to check for a zero-entry cmap table.
Tweaked the font substitution code to do a better job of scaling the
  substituted font.
Require at least two splits in the axial shading color bisection.
Optimized JBIG2Stream::readGenericBitmap().
JPXStream wasn't correctly handling row padding for images with fewer
  than 8 bits per component.
Optimized the ToUnicode CMap parser.
Added a "whole words only" option to text searches.
Check for valid component parameters in the DCT decoder.
Implement embedding of external 16-bit fonts (without subsetting) in
  PostScript output.
Added the minLineWidth xpdfrc command.
Added warning messages for font substitutions.

3.04 (2014-may-28)
------------------
New text extractor.
Added the pdftohtml tool.
Added the pdftopng tool.
New trapezoid-based rasterizer core (for performance).
Generate appearance streams for Line, PolyLine, and Polygon
  annotations.
Added the closeWindowOrQuit command, and changed the default binding
  for ctrl-W from closeWindow to closeWindowOrQuit.
Implemented the new AES-256 mode (R=6, Acrobat X).
Add an object cache.
Added a small cache for object streams.
Modify PSOutputDev to use LZW compression instead of RLE, with a
  fallback to RLE if the "psLZW no" setting is given.
Pdfinfo now prints page rotation info.
Modified ImageOutputDev, used by pdfimages, to output the masks and
  soft masks used when drawing images.
Remove non-printable characters from error output, just in case they
  might cause problems for the terminal program.
Added initial support for Code3of9 bar codes in XFA forms.
Added the mapExtTrueTypeFontsViaUnicode xpdfrc command.
Apply stroke adjustment to rectangular images and clipping regions (in
  addition to strokes and fills).
Decode JPEG 2000 images at less than full resolution if the full res
  image isn't needed (i.e., if the raw image is higher resolution than
  the output). 
Implemented knockout groups.
Removed t1lib support.
Added support for images with 16-bit components.
Rewrote the Dict class to use a hash table; as a side effect, this
  handles dictionaries with multiple definitions for a key, which are
  in violation of the spec, but Acrobat appears to handle.
The transformed line width computation -- used to implement the
  minLineWidth setting, and the hairline threshold in monochrome mode --
  was incorrect.
Pdftops was not correctly handling the case where it couldn't find
  a 16-bit font -- this led to crashes and/or invalid PostScript.
A bug in FlateStream::getBlock() was causing problems with narrow
  images.
Use the correct _WIN32 define instead of WIN32.
Use copy-on-write for the clip path in SplashState (when doing gsave),
  for performance.
Added a Solaris-specific entry to the ghostscript font search path.
SplashState was initializing line width to 0 instead of 1.
Abort processing on a content stream after getting 500 errors
  (undefined operator, wrong number of args) -- this avoids very long
  processing time for malicious PDF files using bogus RLE encoded
  content streams.
Added the psUseCropBoxAsPage xpdfrc option; "pdftops -pagecrop" now
  sets psUseCropBoxAsPage; "pdftops -pagecrop -paper match" now uses
  the CropBox as the page size.
Re-architected the AcroForm support code into a separate AcroForm
  module.
Fixed the handling of overprinting/transparency interaction, using
  the CompatibleOverprint blend mode.
The TIFF predictor code for the 1-bit-per-pixel case was broken.
For triangle and patch mesh shadings (types 4-7) with color functions,
  interpolate the function parameter not the color.
Check the fontFile/fontDir commands before (instead of after) doing
  Base-14 substitution in PS output.
Correctly handle non-embedded TrueType fonts that have an Identity
  ToUnicode mapping (display and PS output were failing).
Added support for XFA form rendering, including an "enableXFA" xpdfrc
  setting.
Handle PFB Type 1 fonts when generating PostScript output.
Unwind any extraneous saved graphics state at the end of the page
  (before drawing annotations).
Added some integer overflow checks in the GString class.
Handle 16-bit components in JPEG 2000 images.
ActualText spans can end without a valid font, in which case
  TextPage::beginWord was crashing.
The Domain entry in function shadings wasn't being parsed correctly.
Fixed a bug in the JPEG decoder - successive approximation
  (progressive mode) coefficients weren't being handled correctly.
Added a better infinite loop test to the xref parser.
When generating PostScript, merge reused TrueType fonts (if their
  code-to-GID mappings are the same).
Tweak the Gouraud triangle shaded fill code to end the recursive
  splitting if the triangles get sufficiently small.
Do bilinear interpolation when upsampling images.
When skipping extraneous image data from an inline image, look for
  EI<whitespace> instead of just EI.
When writing to stdout on Windows, pdftoppm now sets the file mode to
  binary.  [Thanks to Robert Frunzke.]
Accept strings as well as names for the BaseFont entry in font
  objects.
Removed the TEXTOUT_WORD_LIST config option (with the new text
  extractor, this is always enabled).
Fixed a bug in the JBIG2 decoder (the TPGD context for template #3 in
  readGenericBitmap was incorrect).
Rewrote the PostScriptFunction code for performance.
Handle 8-bit OpenType CFF fonts that are missing required tables in
  the OpenType wrapper.
Handle tiling patterns with reversed coordinates in their bounding
  boxes.
Added support for 64-bit file offsets, i.e., PDF files larger than
  2GB.
Optimize the code that rasterizes pattern-filled image masks.
Added support for Mac OS X system fonts (Base-14 only).
The backdrop color in luminosity-type soft mask groups was not being
  handled correctly.
Modified behavior of "pdftops -paper match -duplex ..." - it will now
  duplex consecutive same-sized pages.
Tweak the handling of degenerate fills ('moveto lineto fill') to
  match Adobe.
Don't honor the OPM=1 setting with ICCBased CMYK color spaces.
Whole-word searches were treating certain punctuation (Unicode number
  separators and terminators) as part of the word, e.g., searching for
  "foo" would not match "foo,".
Use the TextString class everywhere it makes sense.
Removed the unnecessary segment sort in Splash (performance
  optimization).
Handle hyperlinks that use Widget-type annotations.
Fix up the integer overflow checks to avoid issues with clever
  compilers.  [Thanks to Nickolai Zeldovich.]
Correctly handle streams with missing Length entries in damaged PDF
  files.
Added a compile-time option (LOAD_FONTS_FROM_MEM) to load fonts from
  memory rather than temporary files on disk.
Added the psRasterSliceSize xpdfrc option.
Fixed a case in the JPEG 2000 arithmetic decoder where extra data is
  present in packet i, and needs to be saved for use in packet i+1.
Fixed a bug in the JPEG 2000 decoder related to images with fewer than
  8 bits per component.
Handle the case in PSOutputDev where slice size overflows a 32-bit
  integer.
Add (partial) support for TrueType cmap format 2.
Always pass FT_LOAD_NO_BITMAP to FreeType -- bitmaps apparently fail
  with rotated characters.
Support fonts specified in ExtGState dictionaries.
Annotations with empty Border arrays should not draw a border.
Fix the CMap parser to handle large CID ranges.
Check for Type 3 CharProcs that call q or Q before the d0/d1 operator,
  and treat them as uncacheable.
Invert the selection color when starting in reverse video mode.
Device{Gray,RGB,CMYK} cannot be mapped via a resource dict.
Changed the PS output for masked images (explicit and color key
  masking): use a plain old clip path instead of rectclip to avoid
  array overflows.
Check the StemSnapH/V arrays when converting Type 1C fonts to Type 1 -
  if there are any duplicate or out-of-order values, skip that
  StemSnapH/V array.
Added the psMinLineWidth xpdfrc setting.
Fix an obscure issue in converting TrueType fonts to Type 42, related
  to empty glyph descriptions (12 zero bytes).
Pdftops now reports an error if there were any I/O errors writing to
  the PS output file.
Fix vertical text (CJK fonts) in PS output -- offset the character
  origin correctly.
Increased the number of digits used by pdfimages for the image number
  from three to four.
Handle right-to-left (e.g., Arabic) ligatures correctly in the text
  extractor.
Added the -loc and -locPS options to pdffonts.
Extend the object parser recursion limit to cover Stream::addFilters()
  / Stream::makeFilters() - to avoid another possibility of stack
  overflow.
Disable FreeType autohinting, because it can fail badly with font
  subsets that use invalid glyph names -- except in the case of Type 1
  fonts, which look much better with light autohinting.
Modified the rasterizer pipeline functions to process a scan line at a
  time (for performance).
Removed VMS build support (it hasn't been updated in ages).
Removed pdftotext's '-htmlmeta' option (use pdftohtml instead).
PSOutputDev's font/form setup code, and pdffonts, were not scanning
  soft mask groups in ExtGState dictionaries.
Invalid DCT input (e.g., from a damaged PDF file) could overflow the
  dctClip array.
When upsampling an image mask or image with a large resulting image
  size, do it in stream mode instead of prescaling the whole image
  (to avoid running out of memory).
Added infinite loop detection to pdffonts.

4.00 (2017-aug-10)
------------------
Complete rewrite of the xpdf GUI, using Qt instead of Motif.
Multithreaded rasterization in the viewer - pages are now rasterized
  in a separate thread so that scrolling and other UI activity is not
  blocked.
Added a linear text selection mode.
Limit transparency groups to the clip rectangle (performance
  optimization).
Optimized the SplashScreen code, used in 1-bit monochrome mode.
Added setmode calls to pdftopng, when writing to stdout on Windows.
  [Thanks to Robert Schroll.]
Regenerate the appearance stream for an AcroForm field if there is
  no appearance stream, even if NeedAppearances isn't set.
When regenerating AcroForm field appearance streams, use a default
  font (Helvetica) for fields that don't have a valid font.
When the line width is increased by the minLineWidth setting, force
  the line join mode to "bevel" to avoid "whiskers" at sharp corners.
Change the pdftoppm/pdftopng resolution (-r) argument from an integer
  to floating point.
Use the FontDescriptor 'CapHeight' value in place of 'Ascent' if it's
  available.
OC (optional content) entries in image XObjects were being ignored.
Added support for preblended soft-masked images.
Added optional support for using libjpeg to decode DCT (JPEG)
  streams.
Transparency groups weren't being composited correctly in mono1 mode.
Switched to a different IDCT transform in the DCT (JPEG) decoder, to
  get better accuracy; the new transform is also a bit faster.
Modified the polygon scan converter to avoid O(n^2) performance, which
  can get really bad with paths that have extremely large numbers of
  segments.
Added the maxTileWidth, maxTileHeight, tileCacheSize, and
  workerThreads xpdfrc settings.
Modified PSOutputDev so it doesn't output resources (fonts, etc.) for
  pages that are rasterized (because they use transparency).
Added the -alpha flag to pdftopng.
Handle TrueType fonts with out-of-bounds loca entries.
Optimize consectutive "q" (gsave) operations in PostScript output.
Various improvements to the XFA rendering code.
Added the -nodiag flag to pdftotext.
Switched to cmake instead of autoconf.
Look for Widget-type annotations that aren't attached to the
  AcroForm, and add them to the AcroForm.
Added the "-z" option to pdftohtml.
The JPEG 2000 decoder now treats invalid boxes after the image
  codestream as non-fatal errors.
Improved the handling of drop caps in pdftohtml.
Added the "psNeverRasterize" setting.
Pdftohtml now converts invisible PDF text to transparent HTML text.
Check for zero-width/height bitmaps in the JBIG2 decoder -- these can
  happen in corrupted JBIG2 streams.
Pdfimages was inverting 1-bit monochrome images.
Added CCITTFaxStream::getBlock() to speed up the CCITTFax decoder.
Added resolution info to PNG files generated by pdftopng.
The DCT decoder now ignores non-Adobe APP14 markers (rather than
  generating an error).
Regenerate appearance streams for FreeText annotations.
The TextString class now handles UTF-16LE in addition to UTF-16BE.
  (UTF-16LE isn't allowed by the PDF spec, but I've seen it used.)
Added the simple one-column text extraction mode (pdftotext -simple).
Added a -cmyk option to pdftoppm to write CMYK PAM files.
Modified pdfinfo to output "static XFA" or "dynamic XFA", rather than
  just "XFA".
Added the "drawFormFields" xpdfrc command.
Various performance optimizations in the rasterizer.
Fixed the tiling pattern code to avoid stripes between pattern cells,
  and to honor the TilingType flag.
Always split axial shadings into 256 slices.
Handle the case where an optional content block is left open at the
  end of a page content stream.
Accept code-to-CID-type CMaps as ToUnicode CMaps (to work around buggy
  PDF generators).
Unicode-to-unicode maps weren't working correctly with fonts that have
  an "Identity" encoding.
Modify the lexer to interpret "--123.4" as -123.4, "--123" as 0, and
  "123-45" as "123" to match Adobe's behavior.
The text extractor now reverses the order of side-by-side columns for
  right-to-left scripts.
Worked on right-to-left script support in pdftohtml (still not
  complete).
Switched the default display mode to continuous (from single page).
Added the "-bom" switch to pdftotext.
Share font objects when multiple font tags point to the same object.
The transfer function goes before alpha blending in the rasterizer
  pipeline.
Added the "-allinvisible" switch to pdftohtml.
Added overprint mode (OPM) support in Level 3 PostScript output.
Added support for DeviceN color spaces in Level 3 PostScript output.
Added the "-userunit" option to pdftops.
Added the "-raw" and "-list" options to pdfimages.
Pdfimages now writes PGM files (instead of PPM files) for DeviceGray
  and CalGray images.
Added grayscale PostScript output -- added the '-level2gray' and
  '-level3gray' switches to pdftops.
Fix up Type 1 fonts when embedding in PostScript.
Added the "problematic" column to pdffonts output.
Generate an appearance stream for signature fields in AcroForms.
Correctly handle line dash patterns with zero-length segments when the
  line cap is butt or project.
Added the "strokeAdjust cad" xpdfrc option; fixed some issues with
  stroke adjustment and projecting line caps.
Added support for Code128B bar codes in XFA forms.
Look at both the ON and OFF arrays in the default OCCD (optional
  content config dict), to work around certain broken PDF files.
Added support for XFA 'numericEdit' fields.
Added support for 'picture' formatting in XFA forms.
Added mouseClickN events (in addition to mousePressN and
  mouseReleaseN).
External CID OpenType CFF fonts should map through Unicode (similarly
  to external CID TrueType fonts).
Handle axial and radial shadings in SplashOutputDev, in device space.
Use the PDF 2.0 inline image length field.
Handle duplicate embedded Type 1 font names in PostScript output.
Handle the case of a stroked closed path with a dash pattern -- if the
  dash pattern is "on" at both the start and end of a subpath, it
  should be joined.
If the line dash phase is negative, add a multiple of 2x the total
  dash length.
Indexed color space indexes should be clipped to [0,hival].
Fix the handling of the text render mode with Type 3 fonts, in the
  rasterizer and in PostScript output.
CID font metrics shouldn't be sorted - the PDF 2.0 spec says that, in
  the case of duplicate entries, the first entry should be used.
PSOutputDev now converts tiling patterns to PostScript tiling patterns
  (in Level 2/3).
Fixed a security hole in SecurityHandler.cc (uninitialized variables).
  This vulnerability was discovered by Kushal Shah of Fortinet's
  FortiGuard Labs.
Fixed a security hole in Function.cc (write past end of array).
Fixed a security hole with the use of d0/d1 operators outside of a
  Type3 CharProc [CVE-2016-9027].
