1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
|
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.
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).
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).
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.
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 "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.
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.
When PSOutputDev rasterizes a page (because it contains transparency),
the image is broken into stripes if it is above a size threshold.
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.
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.
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.
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.
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.
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.
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.]
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).
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.
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.
|