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].

4.01 (2019-feb-18)
------------------
Added remote server mode back into xpdf.
Add support for Unicode file names for the command line tools on
  Windows.
Added the tabStateFile setting, the saveTabState/loadTabState
  commands, and the "-tabstate" switch to xpdf.  [Thanks to Christian
  Barthel for the suggestion.]
Added the defaultPrinter xpdfrc setting.
Removed the psFile xpdfrc option (should have been removed in the 4.00
  release).
Tweaked the TrueType encoding/cmap code again, to get closer to the
  PDF 2.0 spec, and to fix a problem (difference between Xpdf and
  Adobe) with a specific PDF file.
Optimized transparency group rasterization: only composite the part of
  the group bitmap that was modified.
If vector antialiasing is disabled, use the narrow stroke code for
  lines less than one pixel wide.
Do not map through Unicode for non-embedded CID TrueType fonts with
  encoding = Identity-H and char collection = Adobe-Identity -- this
  matches Adobe's behavior on a somewhat common case.
The CCITTFax decoder now aborts after 1000 error messages, avoiding
  problems with huge data expansion for badly corrupted CCITTFax
  streams.
The xref loop detection code was only looking at xref tables, and not
  xref streams.  (CVE-2018-7174)  [Thanks to skysider for the bug
  report.]
The JPX decoder wasn't checking to make sure the number of components
  is non-zero.  (CVE-2018-7175)  [Thanks to skysider for the bug
  report.]
Modify the lexer to accept leading '+' signs on numbers.
Pdftohtml wasn't setting the background image width/height attributes
  correctly for rotated pages.
Ignore color-setting operators in cached Type 3 characters.
Support color-key masking in Level3Gray PS output with preload.
Xpdf was crashing on zero-page PDF files.
Added the unicodeRemapping xpdfrc option.
Change the cursor when the mouse is over text (in linear selection
  mode).
Support external OpenType CFF fonts for PostScript output.
Handle choice-type AcroForm fields that have separate display values
  and export values.
Increased the supported PDF version from 1.7 to 2.0.  (This isn't a
  change in functionality.  The code was already in place -- I just
  forgot to bump the PDF version number.)
Added the dropFont xpdfrc option.
Added support for PDF417 barcodes in XFA forms.
Modified pdfinfo to look at both the Info dict and the XML metadata.
Check for invalid line cap/join values.  [Thanks to
  fish@360TeamSeri0us for the bug report.]
Modified the object stream cache to hold onto more object streams, if
  they're being used.
Don't look at the "DV" (default value) key in AcroForm fields -- that
  should only be used when a form is explicitly reset.
Accept 8-byte values in xref streams.
Two DCTStream bugs: don't allow SOF headers between progressive scans;
  check for invalid Huffman table indexes.  [Thanks to
  fish@360TeamSeri0us for the bug reports.]
Check for uses of the scn/SCN operators with no arguments.  [Thanks to
  fish@360TeamSeri0us for the bug report.]
Correctly handle indexed color spaces with empty lookup tables.
  [Thanks to fish@360TeamSeri0us for the bug report.]
Support large bitmaps (>4GB) on 64-bit systems.
Soft masks are always isolated.
When "undoing" preblended image/softmask data, clip the resulting
  color values to avoid problems with incorrect data.
Set the default text encoding to UCS-2 in Xpdf, so that copying to the
  clipboard works as expected.
Added a sanity check for JBIG2 symbol height.  (CVE-2018-7173)
  [Reported by skysider.]
Check for uninitialized value in JPXStream::fillReadBuf.
  (CVE-2018-7452)  [Thanks to skysider for the bug report.]
Don't try to load an XFAForm if the PDF file has zero pages.
  (CVE-2018-7454)  [Thanks to skysider for the bug report.]
Check for invalid line cap/join values.  (CVE-2018-16368)  [Thanks to
  fish@360TeamSeri0us for the bug report.]
If the page count is greater than 50k, rescan the page tree and count
  the pages.  This prevents long load times where various tools try to
  read pages 1 through n.  (CVE-2018-18651)  [Thanks to krace for the
  bug report.]
Handle a null font name in PSOutputDev::setupEmbeddedType1Font.
  [Thanks to r4xis for the bug report.]
Check for invalid quant table indexes in the DCT decoder.  [Thanks to
  r4xis for the bug report.]

4.01.01 (2019-mar-14)
---------------------
The PDFDoc(BaseStream) initializer wasn't working correctly.
Fixed a missing array bounds check in PSOutputDev.  [Thanks to
  Loginsoft for the bug report.]
If the "U" string used for RC4 decryption is short, Adobe apparently
  zero-pads it, so Xpdf now does the same.
Pdffonts now checks more carefully for loops between objects.
Fixed a problem parsing large real numbers.  [Thanks to Loginsoft for
  the bug report.]

4.02 (2019-sep-25)
------------------
Pdftohtml now extracts embedded fonts (TrueType and CFF only).
Added the margin settings (-marginl -marginr -margint -marginb) to
  pdftotext.
Various user interface tweaks:
  - added a toolbar button to toggle (show/hide) the sidebar
  - added view menu items to toggle (show/hide) the sidebar and
    toolbar
  - added the 'showToolbar', 'hideToolbar', 'toggleToolbar',
    'expandSidebar', and 'shrinkSidebar' commands
  - added the 'initialDisplayMode', 'initialToolbarState', and
    'initialSelectMode' xpdfrc settings
  - rearranged the xpdf toolbar
Implemented drag-and-drop, so that PDF files can be drag-and-dropped
  onto an already-open xpdf window.
Added the option to display page labels, rather than page numbers.
Implemented the missing 'openInNewWin' command.
Added the 'openFileIn', 'openFileAtDestIn', 'openFileAtPageIn', and
  'openIn' commands; removed the 'openInNewWin' command.
Added the '-open' switch to xpdf.
Added the reverseVideoInvertImages setting.
Page-up and page-down now "snap" to the nearest page, if it's within a
  few pixels.  This avoids annoying behavior when the window is a tiny
  bit too short or too tall for a page.
Properly handle overprint in non-isolated transparency groups.
Missing null check in Gfx::opSetExtGState().  [Thanks to
  pwd@360TeamSeri0us for the bug report.]
The DCT decoder doesn't handle a sampling factor of 3 -- check for
  this and report an error.  [Thanks for Agostino Sarubbo of Gentoo
  for the bug report.]
Check for images with a Pattern color space, and report an error.
  [Thanks to TeamSeri0us for the bug report.]
Check that the Width, Height, and BitsPerComponent are valid in image
  soft masks.  [Thanks to TeamSeri0us for the bug report.]
Check for zero page width/height in PSOutputDev.  [Thanks to
  TeamSeri0us for the bug report.]
Check for divide-by-zero in PostScript functions.  [Thanks to
  TeamSeri0us for the bug report.]
Properly handle overprint in shading pattern strokes.
The "save image" feature in Xpdf wasn't getting the user-specified
  page number correctly.
PostScript doesn't support progressive or non-interleaved DCT (JPEG)
  streams, so check for those and re-encode them in PS output.
Splash now caches the most recent scaled image, in case it is
  immediately reused -- this results in a significant speedup in
  certain cases.
Fixed a problem with parsing the TrueType loca table.  [Thanks to
  Pangu Lab for the bug report.]
Fixed a problem with int overflow on image bounds.  [Thanks to
  Pangu Lab for the bug report.]
Fixed a problem with TrueType font parsing where there is gibberish in
  the TrueType table directory.  [Thanks to Pangu Lab for the bug
  report.]
Fixed a problem with JPX image resolution reduction.  [Thanks to Pangu
  Lab for the bug report.]
Fixed a problem with non-isolated transparency groups in 1-bit
  monochrome mode.  [Thanks to Pangu Lab for the bug report.]
Fixed various bugs in FoFi.  [Thanks to Pangu Lab for the bug
  reports.]
Added a missing bounds check to Annot::setFillColor().  [Thanks to
  Pangu Lab for the bug report.]
Added a check on the DCT quant table selector.  [Thanks to Pangu Lab
  for the bug report.]
Fixed a problem with the Type 3 font cache running out of entries.
  [Thanks to Pangu Lab for the bug report.]
Fixed an integer overflow bug in SampledFunction.  [Thanks to Pangu
  Lab for the bug report.]
Fixed an integer overflow bug in the tiling pattern size.  [Thanks to
  Martin Muskens at Ergosoft for the bug report.]
Fixed a read-past-end-of-buffer in the Type 1 font parser.  [Thanks to
  Pangu Lab for the bug report.]
Fixed an int overflow bug in the JBIG2 decoder.  [Thanks to
  TeamSeri0us for the bug report.]
Added a missing bounds check to GfxPatchMeshShading::parse().  [Thanks
  to TeamSeri0us for the bug report.]
JPEG 2000 tile indexes were being computed incorrectly.  [Thanks to
  TeamSeri0us for the bug report.]
Large sample separation values in a JPX stream were resulting in
  zero-width/height tiles, which caused problems.  [Thanks to Pangu
  Lab for the bug report.]
The XFA parser now looks for "ancestor matches" when searching for
  data to fill a form field.
Fixed an uninitialized variable in BuiltinFontWidths::getWidth().
  [Thanks to Martin Muskens at Ergosoft for the bug report.]
If there are no popupMenuCmd instances, construct a popup menu with
  basic instructions pointing to 'popupMenuCmd'.
Ignore color operators in uncolored tiling patterns.  [Thanks to
  Martin Muskens at Ergosoft for the bug report.]
Pdftotext raw mode output looks for space characters.
Increased the width of the font name column in the pdffonts output.
Function objects weren't checking their input/output counts properly.
  [Thanks to Pangu Lab for the bug report.]
TextPage::findGaps() wasn't checking the x/y min/max values for int
  overflow.  [Thanks to Taolaw for the bug report.]

4.03 (2021-jan-28)
------------------
Implemented selection extension via shift-click, and word/line
  selection via double/triple click.
Added default bindings for ctrl-mousewheel-up/down to zoom in/out.
Added the "-nofonts" option to pdftohtml.
Added the "simple2" mode to pdftotext.
Added the "-rot" flag to xpdf, pdftoppm, and pdftopng.
Added the "-listencodings" flag to pdftotext.
Added the 'copyLinkTarget' command.
Added the 'selectionColor' xpdfrc setting.
Added the 'initialSidebarWidth' xpdfrc setting.
Added support for @"..." strings in xpdfrc files.  This includes using
  '%' as an escape character, and also the '${DATADIR}' variable.
Added a help menu item that shows all of the key bindings.
Reorganized the gradient shading rasterization code to avoid
  transparency artifacts between triangles/patches.
Use interpolation rather than subdivision to rasterize Gouraud
  triangle shadings.
Allow escaping (via the \x01 character) in command args, so that "xpdf
  -open foo(123).pdf" works correctly.
Extended the damaged file repair code to handle PDF files that use
  xref streams and object streams.
Modified pdfinfo to print the encryption algorithm used (if any).
Handle Windows shortcut (.lnk) files in Xpdf and in the command line
  tools.
Display an error dialog when trying to copy text from a protected
  file.
Updated all four of the CJK language support packages with the latest
  Adobe data.
Modified pdftohtml to draw 'invisible' text over non-horizontal words.
Catalog.pageLabels wasn't being properly initialized to NULL.  [Thanks
  to Dhiraj for the bug report.]
Added a sanity check for JBIG2 symbol width.  [Reported by Marc
  Schoenefeld.]
Fixed a bug in the fontconfig calls that was causing Xpdf to crash.
The Type 3 font cache code wasn't correctly handling the case where a
  Type 3 char refers to another char in the same T3 font.  [Thanks to
  Pangu Lab for the bug report.]
Xpdf was crashing if 'view page labels' was enabled without any
  document open.  [Thanks to TeamSeri0us for the bug report.]
The Type 1C-to-Type 1 font converter wasn't checking for
  divide-by-zero with rational numbers.  [Thanks to TeamSeri0us for
  the bug report.]
Fixed a bug in the TrueType font parser - zero-length loca tables
  weren't handled correctly.  [Thanks to TeamSeri0us for the bug
  report.]
Fixed an integer overflow bug in the transparency group setup code.
  [Thanks to TeamSeri0us for the bug report.]
Pdfinfo with the "-box" option was crashing on zero-page PDF files.
  [Thanks to TeamSeri0us for the bug report.]
The code that caches scaled images wasn't checking the rendering
  intent.  [Thanks to Martin Muskens at Ergosoft for the bug report.]
The JBIG2 decoder now checks for gibberish values in various segment
  headers, but keeps any data decoded prior to that.
Fixed two bugs in the FoFi code that handles CFF fonts.  [Thanks to
  dsmic for the bug report.]
Redesigned the image scaling code, for performance.
Cleaned up the code that sanity-checks font sizes to avoid trying to
  allocate too much memory for the font cache.
Implemented precincts in the JPEG 2000 decoder.
The page-up/down snapping code was calling TileMap::getPageTopY() with
  invalid page numbers.  [Thanks to dfandrich for the bug report.]
Added missing error-checking when parsing an annotation appearance
  stream's bbox.
Handled UTF-16 sequences in ToUnicode maps.
Rewrote the code that draws static XFA forms: combined it with the
  AcroForm code, to match Adobe's behavior.  Removed the enableXFA
  xpdfrc setting.
Check for indirect references in content streams and report an error.
Doing overprint preview in tiling patterns requires tracking the
  overprint mask at each pixel.
Check for "decompression bombs" in Flate and LZW streams.
The nextPageNoScroll and prevPageNoScroll commands weren't working
  correctly in continuous mode.
Disable stroke adjustment when drawing Type 3 characters.
The "xpdf -open" flag now constructs an absolute path, so it's not
  dependent on the current directory when xpdf was started.
Check for infinite loops in Type 1C charstring subroutines.  [Thanks
  to blbi for the bug report.]
Fixed an incomplete test for headless CFF files.  [Thanks to Chengbin
  for the bug report.]
Tweaked the code that computes segment slope in SplashXPath.cc to
  avoid problems with extremely small coordinate values.  [Thanks to
  Chengbin for the bug report.]
Check for an invalid segment length in PSOutputDev's PFB parse.
  [Thanks to Chengbin for the bug report.]
Check for JPEG 2000 segments that are only allowed in the first
  tile-part of a tile.  [Thanks to Chengbin for the bug report.]
Check for invalid AcroForm ListBox field top index.  [Thanks to
  Chengbin for the bug report.]
Check for invalid mesh shading parameters.  [Thanks to Chengbin for
  the bug report.]
