Jay Berkenbilt
3440ea7d3c
JSON::serialize -> unparse
...
Unparse is admittedly strange, but I'd rather be strange and
consistent, and everything else in the qpdf library uses unparse to
serialize. (If you're reading this, the convention of using "unparse"
comes from the "clu" programming language.)
2018-12-25 11:52:21 -05:00
Jay Berkenbilt
fa3664357b
Move numrange code from qpdf.cc to QUtil.cc
...
Also move tests to libtests.
2018-12-21 19:11:57 -05:00
Jay Berkenbilt
d5d179f441
Add document and object helpers for outlines (bookmarks)
2018-12-21 19:11:57 -05:00
Jay Berkenbilt
30a0c070e4
Add QPDFObjectHandle::getJSON()
2018-12-21 18:34:56 -05:00
Jay Berkenbilt
651179b5da
Add simple JSON serializer
2018-12-21 18:34:56 -05:00
Jay Berkenbilt
0776c00129
Add QPDFNameTreeObjectHelper
2018-12-21 18:34:56 -05:00
Jay Berkenbilt
d2f3975948
Add missing virtual destructors to all helper classes
2018-12-21 18:34:56 -05:00
Jay Berkenbilt
6ef9e31233
Add QPDFPageLabelDocumentHelper
2018-12-18 16:59:24 -05:00
Jay Berkenbilt
f38df27aa3
Add QPDFNumberTreeObjectHelper
2018-12-18 16:46:10 -05:00
Jay Berkenbilt
077d3d4512
Add QPDFObjectHandle::wrapInArray()
...
Wrap an object in an array if it is not already an array.
2018-12-18 16:45:48 -05:00
Jay Berkenbilt
9caf005d89
Fix typo in header file
2018-12-18 16:27:36 -05:00
Jay Berkenbilt
b4bdc42b4f
New exception class QPDFSystemError ( fixes #221 )
2018-08-13 20:01:51 -04:00
Jay Berkenbilt
3873f5fd9b
Protect headers with compliant identifiers ( fixes #233 )
2018-08-12 14:10:32 -04:00
Jay Berkenbilt
4a4736c695
Fix EOL handling inside strings ( fixes #226 )
...
CR, CRLF, and LF are all supposed to be treated as LF; only one EOL is
to be ignored after backslash.
2018-08-05 20:48:35 -04:00
Jay Berkenbilt
651b51f056
Add QPDF_DLL to public destructors ( fixes #220 )
...
A few public destructors were missing QPDF_DLL, which could cause some
Windows applications to fail to link.
2018-08-04 20:08:06 -04:00
Jay Berkenbilt
4f4c627b77
ClosedFileInputSource: add method to keep file open
...
During periods of intensive operation on a specific file, this method
can reduce the overhead of repeated open/close operations.
2018-08-04 19:52:46 -04:00
Jay Berkenbilt
5db39a681a
Windows fixes
2018-06-22 17:01:18 -04:00
Jay Berkenbilt
d34ab8a936
spell check
2018-06-22 16:14:54 -04:00
Jay Berkenbilt
a433ed24f9
Add progress reporting for QPDFWriter ( fixes #200 )
2018-06-22 16:14:54 -04:00
Jay Berkenbilt
2a82f6e1e0
Add method to get count of objects in QPDF
2018-06-22 15:53:40 -04:00
Jay Berkenbilt
4ccc8b1a44
Add ClosedFileInputSource
...
ClosedFileInputSource is an input source that keeps the file closed
when not reading it.
2018-06-22 12:52:45 -04:00
Jay Berkenbilt
6c89d4b35b
When splitting files, remove unreferenced objects ( fixes #203 )
2018-06-21 21:03:30 -04:00
Jay Berkenbilt
ddd78c1b7f
Fix QPDFObjectHandle::shallowCopy
...
It's not really a shallow copy. It just doesn't cross indirect object
boundaries. The old implementation had a bug that would cause multiple
shallow copies of the same object to share memory, which was not the
intention.
2018-06-21 20:34:45 -04:00
Jay Berkenbilt
397b097c46
Allow setting a form field's value
2018-06-21 15:57:13 -04:00
Jay Berkenbilt
952a665a4e
Better support for creating Unicode strings
2018-06-21 15:57:13 -04:00
Jay Berkenbilt
e44c395c51
QUtil::toUTF16
2018-06-21 15:57:13 -04:00
Jay Berkenbilt
0b05111db8
Implement helper class for interactive forms
2018-06-21 15:57:13 -04:00
Jay Berkenbilt
2e7ee23bf6
Add QPDFPageDocumentHelper and QPDFPageObjectHelper
...
This is the beginning of higher-level API support using helper
classes. The goal is to be able to add more helpers without continuing
to pollute QPDF's and QPDFObjectHandle's public interfaces.
2018-06-21 15:57:13 -04:00
Jay Berkenbilt
4cded10821
Add QPDFObjectHandle::Rectangle type
...
Provide a convenient way of accessing rectangles.
2018-06-21 15:57:13 -04:00
Jay Berkenbilt
e4e2e26d99
Properly handle pages with no contents ( fixes #194 )
...
Remove calls to assertPageObject(). All cases in the library that
called assertPageObject() work fine if you don't call
assertPageObject() because nothing assumes anything that was being
checked by that call. Removing the calls enables more files to be
successfully processed.
2018-03-06 11:34:07 -05:00
Jay Berkenbilt
4bb3046f0b
Properly handle strings with PDF Doc Encoding ( fixes #179 )
...
The QPDF_String::getUTF8Val() method was not treating strings that
weren't explicitly Unicode as PDF Doc Encoded. This only affects
characters in the range 0x80 through 0xa0.
2018-02-18 21:06:27 -05:00
Jay Berkenbilt
2780a1871d
Add C API for checking PDF files
2018-02-18 21:06:27 -05:00
Jay Berkenbilt
d0e99f195a
More robust handling of type errors
...
Give objects descriptions and context so it is possible to issue
warnings instead of fatal errors for attempts to access objects of the
wrong type.
2018-02-18 21:06:27 -05:00
Jay Berkenbilt
21b7481b0e
Push members of QPDFObjectHandle into a Members object
...
As in other cases, this is to enable adding new member variables in
the future without breaking ABI compatibility.
2018-02-18 21:06:27 -05:00
Jay Berkenbilt
e410b0fe0d
Simplify TokenFilter interface
...
Expose Pl_QPDFTokenizer, and have it do more of the work of managing
the token filter's pipeline.
2018-02-18 21:05:47 -05:00
Jay Berkenbilt
1fdd86a049
Move Pl_QPDFTokenizer to public interface
2018-02-18 21:05:47 -05:00
Jay Berkenbilt
5708b5d0aa
Add additional interface for filtering page contents
2018-02-18 21:05:47 -05:00
Jay Berkenbilt
9910104442
Implement TokenFilter and refactor Pl_QPDFTokenizer
...
Implement a TokenFilter class and refactor Pl_QPDFTokenizer to use a
TokenFilter class called ContentNormalizer. Pl_QPDFTokenizer is now a
general filter that passes data through a TokenFilter.
2018-02-18 21:05:46 -05:00
Jay Berkenbilt
b8723e97f4
Add coalesce contents capability
2018-02-18 21:05:46 -05:00
Jay Berkenbilt
fcd611b61e
Refactor parseContentStream
2018-02-18 21:05:46 -05:00
Jay Berkenbilt
05ff619b09
Remove redundant method
...
Remove a redundant method that was equal to another one with
additional arguments. This breaks binary compatibility, but there are
other ABI breaking changes in the upcoming release, so now is the time
to do it.
2018-02-18 21:05:46 -05:00
Jay Berkenbilt
fefe25030e
Inline image token type
2018-02-18 21:05:46 -05:00
Jay Berkenbilt
2699ecf13e
Push QPDFTokenizer members into a nested structure
...
This is for protection against future ABI breaking changes.
2018-02-18 21:05:46 -05:00
Jay Berkenbilt
d97474868d
Lexer enhancements: EOF, comment, space
...
Significant enhancements to the lexer to improve EOF handling and to
support comments and spaces as tokens. Various other minor issues were
fixed as well.
2018-02-18 20:18:40 -05:00
Jay Berkenbilt
ebd5ed63de
Add option to save pass 1 of lineariziation
...
This is useful only for debugging the linearization code.
2018-02-18 20:18:40 -05:00
Jay Berkenbilt
e3167c1a60
Fix linearization for files with nonstandard ID length
2018-02-04 18:16:23 -05:00
Jay Berkenbilt
aa2cfad61a
Clarify some comments
2018-01-28 18:29:47 -05:00
Jay Berkenbilt
569d74d36b
Allow raw encryption key to be specified
...
Add options to enable the raw encryption key to be directly shown or
specified. Thanks to Didier Stevens <didier.stevens@gmail.com> for the
idea and contribution of one implementation of this idea.
2018-01-14 10:21:05 -05:00
Jay Berkenbilt
3e306ae64c
Add QUtil::hex_decode
2018-01-14 09:04:13 -05:00
Jay Berkenbilt
68572df2bf
Update copyright to 2018
2018-01-13 20:25:58 -05:00