Change History
The following is a list of changes in each minor release. Note that many of the changes do not apply to all libraries.
3.03.01
- 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.
- Added fixed pitch mode to XpdfText.
- Pdftops was not correctly handling the case where it couldn't find a 16-bit font -- this led to crashes and/or invalid PostScript.
- Upgraded to FreeType 2.4.7, which includes a security fix related to Type 1 fonts.
- A bug in FlateStream::getBlock() was causing problems with narrow images.
3.03.02
- Fixed XpdfPrint to allow changing DC properties (bin, paper size, etc.) between pages when using the print job API (in the COM version) or printToDC (in the DLL).
- Added the setPSCustomPageSetup/pdfPrintSetCustomPageSetup function to XpdfPrint.
3.03.03
- Use copy-on-write for the clip path in SplashState (when doing gsave), for performance.
- Added pdfSetErrorCbk to XpdfViewer DLL; added errorMsg to XpdfPrintCOM and XpdfViewerCtrl.
- Generate appearance streams for line annotations.
3.03.04
- Get a valid Windows font path on Terminal Server.
- 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.
- 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.
3.03.05
- For triangle and patch mesh shadings (types 4-7) with color functions, interpolate the function parameter not the color.
- Implemented the new AES-256 mode (R=6, Acrobat X).
- 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 a form data extraction API to XpdfText.
- Added support for XFA form rendering.
- Handle PFB Type 1 fonts when generating PostScript output.
3.03.06
- Added the layer order tree API to the libraries.
- 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.
3.03.07
- Added the printForceImage property to XpdfViewer.
- Added support for 128-bit AES encryption to XpdfRMW and XpdfSplice.
3.03.08
- When generating PostScript, merge reused TrueType fonts (if their code-to-GID mappings are the same).
- Switched to the Visual Studio 2010 compiler.
- Tweak the Gouraud triangle shaded fill code to end the recursive splitting if the triangles get sufficiently small.
- Optimized the DCT decoder.
3.03.09
- Do bilinear interpolation when upsampling images.
- Accept strings as well as names for the BaseFont entry in font objects.
3.03.10
- Add an object cache.
- New text extractor.
3.03.11
[XpdfWidget/Qt only]- Added printing support to XpdfWidget/Qt.
- Added highlighted region support to XpdfWidget/Qt.
3.03.12
- Added the ability to set print job priority in XpdfPrint.
- Added the getPageWidth, getPageHeight, and getPageRotation functions to XpdfSplice.
- Fixed a bug in the JBIG2 decoder (the TPGD context for template #3 in readGenericBitmap was incorrect).
- Added the pdftohtml tool.
- Rewrote the PostScriptFunction code for performance.
3.03.13
- Tweaked the new text extractor: shift the grid in line printer mode to avoid floating point accuracy problems.
- Removed the TEXTOUT_WORD_LIST config option (this is now always enabled).
- Handle 8-bit OpenType CFF fonts that are missing required tables in the OpenType wrapper.
- Added IStream output buffering in XpdfPSCOM.
3.03.14
- Added support for 64-bit file offsets, i.e., PDF files larger than 2GB.
- Added a small cache for object streams.
- Modify PSOutputDev to use LZW compression instead of RLE.
- Optimize the code that rasterizes pattern-filled image masks.
3.03.15
- Use system fonts (.dfont files) on Mac OS X.
- Move the Symbol and Zapf Dingbats Type 1 fonts into a separate package (xpdf-t1fonts.tar.gz).
- Added the psLZW xpdf setting.
- Added the incremental update callback to XpdfRasterizer.
3.03.16
- Modified behavior of "pdftops -paper match -duplex ..." - it will now duplex consecutive same-sized pages.
- Regenerate appearance streams for PolyLine and Polygon annotations.
3.03.17
- Tweak the handling of degenerate fills ('moveto lineto fill') to match Adobe.
- Disable scrollbar updates when XpdfViewer's enableRedraw flag is false.
- Added PNG output support, including transparency, to XpdfRasterizer.
3.03.18
- 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,".
- Remove non-printable characters from error output, just in case they might cause problems for the terminal program.
- Added the region double click event/callback in XpdfViewer.
- Removed the unnecessary segment sort in Splash (performance optimization).
3.03.19
- Added the pdftopng tool to the Xpdf source packages.
- Added a compile-time option (LOAD_FONTS_FROM_MEM) to load fonts from memory rather than temporary files on disk.
- Added initial support for Code3of9 bar codes in XFA forms.
- Added functions/properties to set the printer bin and paper, and the printer, bin, and paper query functions, to XpdfViewer.
- 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.
3.03.20
- Added the "enableXFA" xpdfrc setting.
- Handle the case in PSOutputDev where slice size overflows a 32-bit integer.
- Fixed a bug in the JPEG 2000 decoder related to images with fewer than 8 bits per component.
- Tweaked a parameter to improve text extraction results in table mode -- it should now split between all words.
3.03.21
- Add (partial) support for TrueType cmap format 2.
- Always pass FT_LOAD_NO_BITMAP to FreeType -- bitmaps apparently fail with rotated characters.
- Added the getInfoString/pdfGetInfoString function to XpdfViewer (OCX and DLL).
3.03.22
- Added the mapExtTrueTypeFontsViaUnicode xpdfrc command.
- Build without /GL and /LTCG on Windows, so that the static libraries can be used with different versions of the MS compilers.
- In DeviceN output mode, if a DeviceN color space has two (or more) channels with the same name, add the color components.
- Support fonts specified in ExtGState dictionaries.
- New trapezoid-based rasterizer core (for performance).
- Apply stroke adjustment to rectangular images and clipping regions (in addition to strokes and fills).
3.03.23
- Various bug fixes for the new trapezoid-based rasterizer.
- Annotations with empty Border arrays should not draw a border.
- Fix the CMap parser to handle large CID ranges.
- Added the componentVersion property to all COM/OCX components.
- Added the getPDFVersion function/property to XpdfInfo and XpdfViewer.
3.03.24
- Added color management support to XpdfDevN and XpdfRasterizer.
- Upgraded to FreeType 2.5.0.1.
- Device{Gray,RGB,CMYK} cannot be mapped via a resource dict.
3.03.25
- 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).
- 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).
- Check for the Sharp PS driver, and disable PostScript generation (because the Sharp driver wraps each page in a save/restore pair, which effectively deletes the Xpdf prolog code after the first page).
- Added DeviceN rasterization (convertPageToDeviceNImage, etc.) to XpdfRasterizer (DLL & COM).
3.03.26
- Fix vertical text (CJK fonts) in PS output -- offset the character origin correctly.
- Handle right-to-left (e.g., Arabic) ligatures correctly in the text extractor.
- Implemented knockout groups.
- Handle Lab profiles in ICCBased color spaces.
- Do color management when building the GfxColorChannel.toCMYK arrays (and when converting CMYK to RGB in "pdftoppm -devnRGB").
3.03.27
- Modifications to the text extractor - overlapping lines were being merged in certain cases; better support for drop caps; support for inverted paragraph indents.
- 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).
3.03.28
- The LZW encoder (used for PostScript output) now starts all streams with a clear-table code (for compatibility with some printers).
- Touch scrolling (for Windows 8) wasn't working -- the SB_THUMBPOSITION request for WM_HSCROLL/WM_VSCROLL events wasn't implemented.
- The LZW encoder was producing incorrect output when generating a clear-table code and end-of-data code in the same step.
- Tested XpdfWidget with Qt 5.2.1. Updated the .pro files.
3.03.29
- 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).
- XpdfSplice now de-dupes streams.
3.03.30
- Added the extractTextFromRect2, getWordBox2, and getWordCharBox2 functions to XpdfText.
3.04
3.04.01
- Limit transparency groups to the clip rectangle (performance optimization).
- Optimized the SplashScreen code, used in 1-bit monochrome mode.
- 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.
- Added the setWatermark function to XpdfSplice.
- When the line width is increased by the minLineWidth setting, force the line join mode to "bevel" to avoid "whiskers" at sharp corners.
- Added the media type setting in XpdfPrint.
3.04.02
- Improved the object de-duplication code in XpdfSplice.
3.04.03
[beta release for XpdfWidget/Qt and XpdfViewer only]- Multithreaded rasterization in the viewer - pages are now rasterized in a separate thread so that scrolling and other UI activity is not blocked.
- Added support for side-by-side single, side-by-side continuous, and horizontal continuous display modes; added the setDisplayMode/getDisplay functions to XpdfViewer and XpdfWidget.
- Added the zoomHeight option to XpdfViewer and XpdfWidget.
- Added the getThumbnail function to XpdfWidget.
3.04.04
- Improvements and bug fixes for multithreaded rasterization.
- Added support for preblended soft-masked images.
- Added optional support for using libjpeg to decode DCT (JPEG) streams.
- Switched to a different IDCT transform in the DCT (JPEG) decoder, to get better accuracy; the new transform is also a bit faster.
3.04.05
- Various bug fixes.
3.04.06
- 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.
3.04.07
- Fixed COM API handles to work correctly on 64-bit systems.
- Added the convertRegionToDeviceNImage function to XpdfRasterizer.
- Added the maxTileWidth, maxTileHeight, tileCacheSize, and workerThreads xpdfrc settings.
3.04.08
- Modified PSOutputDev so it doesn't output resources (fonts, etc.) for pages that are rasterized (because they use transparency).
- Handle TrueType fonts with out-of-bounds loca entries.
- Optimize consectutive "q" (gsave) operations in PostScript output.
- Fixed a security hole with the use of d0/d1 operators outside of a Type3 CharProc [CVE-2016-9027].
3.04.09
- Improvements to the XFA rendering code.
- Various minor bug fixes.
- Added the -nodiag flag to pdftotext.
- Switched to cmake instead of autoconf.
3.04.10
- Added the pdfSetDiscardDiagonalText function to XpdfText and XpdfViewer.
- Look for Widget-type annotations that aren't attached to the AcroForm, and add them to the AcroForm.
- Added a mouseWheel signal to XpdfWidget.
3.04.11
- Added the "-z" option to pdftohtml.
- Improved the handling of drop caps in pdftohtml.
- Added the "psNeverRasterize" setting.
- Pdftohtml and XpdfHTML now convert invisible PDF text to transparent HTML text.
- Added the checkPageTransparencyUsage function to XpdfRasterizer.
3.04.12
- Check for zero-width/height bitmaps in the JBIG2 decoder -- these can happen in corrupted JBIG2 streams.
- Added CCITTFaxStream::getBlock() to speed up the CCITTFax decoder.
- Added XpdfWidget::setSelectionColor().
- Added resolution info to PNG files generated by pdftopng and XpdfRasterizer.
- XpdfWidget automatically reloads a changed PDF file.
- Added the DevNToRGB mode to XpdfRasterizer.
- Added the getNumColorSpaces, getColorSpaceName, and getNumColorSpaceObjects functions to XpdfRasterizer.
- Added compressed TIFF output to XpdfRasterizer.
- Added the printerSupportsCollation function to XpdfPrint.
- Added the "emulated multi copy" printing mode to XpdfPrint and XpdfViewer.
- Beta release of PDFtoSVG.
3.04.13
- Regenerate appearance streams for FreeText annotations.
- Fixed bugs in emulated multi-copy printing mode: incorrect page numbers in print status callback; crashes when using collate=false.
- Improvements to the XFA rendering code.
- Added the XpdfWidget::reload() function.
3.04.14
- Added the getPaperSize function to XpdfPrint.
- XpdfRasterizer wasn't setting the resolution units field in JPEG files.
- Added embedded file access functions to XpdfWidget.
- Added the customPaperWidth/Height properties to XpdfPrint.
- Added the simple one-column text extraction mode (pdftotext -simple).
3.04.15
- 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 "spaceAfter" and "pos" attributes to the
element in PDFdeconstruct output. - Added image masks to the PDFdeconstruct output.
- PDFdeconstruct now drops any characters with Unicode indexes less than 0x20 (which are not allowed in XML).
- Added the "font", "fontSize", and
attrs/elements to elements in PDFdeconstruct output. - Added the "-nofields" switch to PDFdeconstruct.
3.04.16
- Added the setRegionLabel function to XpdfViewer.
- Performance optimizations in the rasterizer.
- Fixed the tiling pattern code to avoid stripes between pattern cells, and to honor the TilingType flag.
- Added Unicode (wide string) versions of pdfGetPrinterName, etc. to the XpdfPrint DLL.
3.04.17
- Always split axial shadings into 256 slices.
- When printing to certain printers from a 32-bit process on a 64-bit version of Windows, disable raw mode.
- Fixed a security hole in SecurityHandler.cc (uninitialized variables). This vulnerability was discovered by Kushal Shah of Fortinet's FortiGuard Labs.
3.04.18
- Added the readDoc/loadDoc/freeDoc functions to XpdfWidget.
- 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).
- Added an XpdfViewer/XpdfWidget function to make regions non-resizable.
- Optimized the DCT (JPEG) decoder and the image upscaling code.
- The text extractor now reverses the order of side-by-side columns for right-to-left scripts.
- Added the document outline (bookmarks) to the PDFdeconstruct output (with the "-outline" switch).
- Implemented proper gamma correction in the rasterizer. Added the rasterizerGamma xpdfrc setting.
3.04.19
- Added the print job API to the DLL version of XpdfPrint.
- Switched the default display mode to continuous (from single page). This affects XpdfViewer and XpdfWidget.
3.04.20
- Added the "-bom" switch to pdftotext.
- Added the GrayToMono mode to XpdfRasterizer.
- Added XpdfViewer mouse events/callbacks that receive window coordinates.
- Added the getPrimaryDirection and getWordDirection functions to XpdfText.
- Added the "-table" switch to pdfdeconstruct, and pdfDeconstructSetReaderingOrderMode/SetTableMode to XpdfDeconstruct.
3.04.21
- Added the getWindowPageRange function to XpdfViewer.
- Added touch pan/zoom support to XpdfViewer.
- Added the discardInvisible and discardClipped settings to PDFdeconstruct/XpdfDeconstruct.
3.04.22
- Added the setPhysicalLayoutTextMode and setTableLayoutTextMode functions to XpdfViewer.
- Removed the gamma correction code -- it was causing more problems than it was solving.
- The transfer function goes before alpha blending in the rasterizer pipeline.
- Added the setViewerPreferenceName function to XpdfSplice.
- Added the pdfSetHTMLAllTextInvisible function to XpdfHTML; added the "-allinvisible" switch to pdftohtml.
3.04.23
- Added a linear text selection mode. New XpdfViewer and XpdfWidget functions: setLinearSelectMode, setBlockSelectMode, getSelectedText, clearSelection.
- Added overprint mode (OPM) support in Level 3 PostScript output.
- Added support for DeviceN color spaces in Level 3 PostScript output.
- Added the getInfoString function to XpdfPrint.
- Added the "-userunit" option to pdftops; added the honorUserUnit property to XpdfPS.
- Added the pdfSetHTMLZoom function to XpdfHTML.
- Fixed a security hole in Function.cc (write past end of array).
3.04.24
- Added support for ICCBased color spaces in Level 3 PostScript output.
- Extended the PostScript DeviceN support to use the DeviceN Colorants attribute.
- Added grayscale PostScript output -- added the '-level2gray' and '-level3gray' switches to pdftops; added the level2Gray and level3Gray constants/properties to XpdfPS.
- Added the getPageUserUnit function to the libraries and COM components.
- Fix up Type 1 fonts when embedding in PostScript.
3.04.25
- Added the onAnnot, getAnnotType, and getAnnotContent functions to XpdfViewer and XpdfWidget.
- Added the "problematic" column to pdffonts output.
- Generate an appearance stream for signature fields in AcroForms.
- Added the "addPageRotatedCropped" function to XpdfSplice.
3.04.26
- Added the "strokeAdjust cad" xpdfrc option.
- Added support for Code128B bar codes in XFA forms.
- Added form field access functions (onFormField, etc.) to XpdfWidget.
- Added the clearWin32ErrorInfo, getWin32ErrorFunc, and getWin32ErrorCode functions to XpdfPrint.
3.04.27
- Color management improvements: - use the DestOutputProfile as the default output profile - CMYK passthrough if input profile = output profile - honor OPM with CMYK passthrough - support rendering intent - allow the rgbOutputProfile and defaultRGBInputProfile to be set to an internal sRGB profile - enable LCMS's black point compensation
- Added the discardClippedText property to XpdfText.
- Added linearization support to XpdfRMW.
3.04.28
- Added the FormFiller module to XpdfRMW to fill out AcroForms.
- Optimization work on the rasterizer.
3.04.29
- Fixed a bug in 3.04.28 related to axial gradient shadings.
3.04.30
- Added support for XFA 'numericEdit' fields.
- XpdfViewer wasn't destroying its rasterization worker threads when the control was destroyed.
- Added the getPageUserUnit function to XpdfSplice.
- Added support for 'picture' formatting in XFA forms.
- Tweaked the transparency blending functions to match Acrobat's behavior in DeviceN mode.
- Handle transparent text (alpha=0) the same way as invisible (render mode=3) text.
- Added a discardInvisibleText function/propert to XpdfText.
3.04.31
- Added the owner property / pdfPrintSetOwner function to XpdfPrint.
- Look for unattached Widget-type annotations even if there is no AcroForm dictionary.
- Added the printOtherFileToJob function to the XpdfPrint COM component.
- Do overprint simulation in DeviceN-to-RGB conversion by multiplying in XYZ space.
3.04.32
- defaultRGBInputProfile now defaults to sRGB.
- Performance improvements for axial and radial shadings.
- Use the PDF 2.0 inline image length field.
- Added the printerSupportsPostScript function to XpdfPrint.
- Added the printBlankPageToJob and printJobPageCount functions to XpdfPrint.
- Handle duplicate embedded Type 1 font names in PostScript output.
- Added the sortFormFields function to XpdfText.
3.04.33
- Various small fixes based on the PDF 2.0 spec.
- In DeviceN rasterization mode, when there are more than 32 color channels, Separation and DeviceN color spaces that use out-of-bounds channels now fall back to their alternate color spaces. Alternately, if the dropExtraDeviceNChannels xpdfrc setting is true, those channels will be dropped, which is useful for rendering a subset of the channels.
- PSOutputDev now converts tiling patterns to PostScript tiling patterns (in Level 2/3).
4.00
4.00.01
- Fix a build issue: XpdfReader was being build without printing support.
4.00.02
- 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.
4.00.03
- Minor bug fixes only.
4.00.04
- If vector antialiasing is disabled, use the narrow stroke code for lines less than one pixel wide.
- Added the openInputStream and openInputStreamWithPassword functions to the XpdfSplice COM component.
4.00.05
- 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.
- Added the mouseCursor2 and mouseLinkCursor2 properties to the XpdfViewer control.
- The CCITTFax decoder now aborts after 1000 error messages, avoiding problems with huge data expansion for badly corrupted CCITTFax streams.
4.00.06
- Added the buildWordListFromRect2 function to XpdfText.
- Modified the XpdfRasterizer checkPageColorUsage function to treat CMYK 0,0,0,0 and 0,0,0,1 as mono, and CMYK 0,0,0,x as gray.
- Added hyperlink support to Xpdf/QtQuick.
- Added pinch-zoom support to Xpdf/QtQuick.
4.00.07
- Added the "-splitchars" switch to PDFtoSVG.
- Pdftohtml wasn't setting the background image width/height attributes correctly for rotated pages.
- Added basic transparency support to PDFtoSVG.
- Ignore color-setting operators in cached Type 3 characters.
- Added the paperMatch setting to XpdfPrint.
- Support color-key masking in Level3Gray PS output with preload.
- Added the unicodeRemapping xpdfrc option.
- Added the getPageCount function to XpdfPrint.
- Added the startPaused property to XpdfPrint.
- 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.]
- 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.]
4.00.08
- 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.
4.00.09
- 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.)
- Handle transfer functions correctly in DeviceN mode.
- 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.
- Added pdfConvertPageToBitmap3 and pdfConvertRegionToBitmap3 functions to XpdfRasterizer, which take separate arguments for horizontal and vertical resolution.
- Don't look at the "DV" (default value) key in AcroForm fields -- that should only be used when a form is explicitly reset.
- Check for invalid line cap/join values. (CVE-2018-16368) [Thanks to fish@360TeamSeri0us for the bug report.]
4.00.10
- Added the "-textops" option to PDFdeconstruct.
- Accept 8-byte values in xref streams.
- Support large bitmaps (>4GB) on 64-bit systems.
- Added the checkPageColorUsage function to XpdfPS.
- Added gotoPage, gotoNextPage, and gotoPreviousPage functions to Xpdf/QtQuick.
- 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.]
- 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.]
4.00.11
- XpdfWidget wasn't handling mouse events correctly with scaled HighDPI displays.
- Added outline support to Xpdf/QtQuick.
- Added the getNumPages function to Xpdf/QtQuick.
- Added the xpdfSpliceOpenOutputMem and xpdfSpliceCloseOutputMem functions to the XpdfSplice library.
- Look for OpenType .otf files (in addition to TrueType files) when scanning Windows system fonts.
- XpdfPrint wasn't honoring the jobPriority, owner, and startPaused settings when using the print job API.
- Added a sanity check for JBIG2 symbol height. (CVE-2018-7173) [Thanks to skysider for the bug report.]
4.01
- 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
- The PDFDoc(BaseStream) initializer wasn't working correctly.
- Added the scrollToCentered, hasSelection, and getCurrentSelection{Page,X0,Y0,X1,Y1} functions to Xpdf/QtQuick.
- 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.
- Fixed a problem parsing large real numbers. [Thanks to Loginsoft for the bug report.]
4.01.02
- Properly handle overprint in non-isolated transparency groups.
- 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.]
4.01.03
- Properly handle overprint in shading pattern strokes.
- PostScript doesn't support progressive or non-interleaved DCT (JPEG) streams, so check for those and re-encode them in PS output.
- Added the loadFile and loadFileWithPassword functions to Xpdf/QtQuick.
- Splash now caches the most recent scaled image, in case it is immediately reused -- this results in a significant speedup in certain cases.
4.01.04
- Added the simpleLayoutMode setting to XpdfText.
- Added touch pan/zoom support to XpdfWidget; added the enableTouchPan and enableTouchZoom functions.
- Pdftohtml now extracts embedded fonts (TrueType and CFF only).
- Added the notifyName setting to XpdfPrint.
- Mark XpdfSplice's file handles as non-inheritable on Windows.
- Added the reverseVideoInvertImages setting.
- Fixed several bugs uncovered by fuzz testing. [Thanks to Pangu Lab and TeamSeri0us for the bug reports.]
4.02
- Added the getViewerPreference function to XpdfPrint.
4.02.01
- Added a sanity check for JBIG2 symbol width. [Reported by Marc Schoenefeld.]
4.02.02
- 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.
4.02.03
- Implemented precincts in the JPEG 2000 decoder.
- Added functions to XpdfRasterizer with separate horizontal and vertical resolution arguments.
- Added support to XpdfDeconstruct for Unicode file names on Windows.
- Added the getImageBitsPerComponent function to XpdfImageExtract.
4.02.04
- Reorganized the gradient shading rasterization code to avoid transparency artifacts between triangles/patches.
- Added the "simple2" mode to pdftotext and XpdfText.
- Rewrote the code that draws static XFA forms: combined it with the AcroForm code, to match Adobe's behavior. Removed the enableXFA xpdfrc setting.
- Added the getDeviceNToRGBPicture and removeDeviceNChannel functions to XpdfRasterizer.
4.02.05
4.02.06
4.02.07
- Doing overprint preview in tiling patterns requires tracking the overprint mask at each pixel.
- Added the 'problematicForUnicode' attribute to elements in
the PDFdeconstruct output.
- Use interpolation rather than subdivision to rasterize Gouraud triangle shadings.
- Check for "decompression bombs" in Flate and LZW streams.
- Added XpdfWidget::findAll().
- Added the XpdfWidget::mouseClick, mouseDoubleClick, and mouseTripleClick signals. Implemented extended selection on shift-click, and word/line selection on double/triple-click.
- Added to Xpdf/QtQuick: the XpdfRect type and the getCurrentSelection, setCurrentSelection, clearSelection, and findAll functions.
- Added the rotation setting to XpdfRasterizer.
- Added the getFormType2 function to the libraries and COM components.
4.02.08
- Added the enableExternalHyperlinks setting to XpdfWidget and XpdfViewer.
- Added the hasPageLabels, getPageLabelFromPageNum, and getPageNumFromPageLabel functions to XpdfWidget and XpdfViewer.
- Added the pdfGetMidPageNum function / midPage proerty to XpdfViewer.
- Added support for @"..." strings in xpdfrc files. This includes using '%' as an escape character, and also the '${DATADIR}' variable.
- Added the getWordSpaceAfter function to XpdfText.
4.03
- Modified pdftohtml to draw 'invisible' text over non-horizontal words.
4.03.01
- Changed pdftohtml to generate spans with 'class=' instead of 'id=', so there aren't duplicate ids.
- Added the fileIsDamaged function/property to the libraries.
- Added the '-output' option to PDFdeconstruct.
- Added the '-nopatterns' option to PDFdeconstruct.
- Added the convert{Page,Region}ToDeviceNImage and getDeviceNAlphaPicture functions to XpdfRasterizer.
4.03.02
- Added the useTrueTypeUnicodeMapping xpdfrc setting.
- Added a font vectorization option to PDFtoSVG.
- Improved handling of RTL text in the text extractor and in PDFdeconstruct.
4.03.03
- Added the enableDeviceNOverprintPreview and enableColorManagement functions to XpdfViewer.
- Added support for DeviceN-to-RGB and gray-to-mono output modes to the XpdfViewer image conversion functions.
- Added support for Qt6.
4.03.04
- Added the pdfGetFileNameW function to XpdfViewer.
- Added the paperOrientation property to XpdfPrint.
- Added the resetDeviceNChannelMask and setDeviceNChannelMask functions to XpdfRasterizer.
4.03.05
- Fixed an integer overflow security hole in the JBIG2 decoder.
4.03.06
- Added the getCustomColorCMYK function to XpdfAnalyze.
- Added the 'trasparent' argument to the XpdfWidget convertPageToImage and convertRegionToImage functions.
- Added the convertPageToBitmap2, convertRegionToBitmap2, getDeviceNBitmap, getDeviceNAlphaBitmap, and getDeviceNToRGBBitmap functions to XpdfRasterizerCOM. These return raw bitmaps, rather than OLE IPicture objects.
- XpdfHTML now generates HTML links for URI links anchored on text.
- XpdfRasterizer now resets the DeviceN channel mask on every call to convertPageToDeviceNImage, convertPageToDeviceNImageWithAlpha, convertRegionToDeviceNImage, or convertRegionToDeviceNImageWithAlpha.
- Added the getDeviceNChannelMask function to XpdfRasterizer.
4.04
4.04.01
- Implemented pattern stroking of text. Also fixed the various combinations of filling/stroking with color/pattern + clipping, some of which weren't being handled correctly. This involved modifying the OutputDev interface.
- Added the OutputDev::fillStroke() method. This is useful for anything that can fill and stroke with a single operation (e.g., SVG), and can be ignored by everyone else.
4.04.02
- PostScript output now (re)compresses any uncompressed or RLE-compressed images.
4.04.03
4.04.04
- Added the copyOptionalContentSetup function to XpdfSplice.
- Added the region API to XpdfWidget/QML.
- Added the highlighted region functions to the XpdfWidget QtQuick/QML API.
- Implemented asynchronous find-all, where a find-all operation runs in a separate thread. For now, this is only available in the XpdfWidget QtQuick/QML API.
- Added structure tree support to PDFdeconstruct.
4.04.05
- Added the getFormFieldBBox and getFormFieldMaxLength functions to XpdfText.
4.04.06
- Added the ability to embed ICC profiles in images generated by XpdfRasterizer -- see the pdfSetEmbedOutputProfile function.
- Ignore overprint in soft masks (to match Adobe's behavior).
- Added the primaryRot attribute to the page element in the pdfdeconstruct output.
- Added the enableColorManagement and set{Gray,RGB,CMYK}Profile functions to XpdfRasterizer.
- Added CMYK and DevNToCMYK support to the in-memory bitmap functions in XpdfRasterizer.
- Added the getNumVisibleChars, getNumInvisibleChars, and getNumRemovedDupChars functions to XpdfText and XpdfHTML.