Age | Commit message (Collapse) | Author |
|
|
|
The PDF spec only allows UTF-16BE, but most readers seem to accept
UTF-16LE as well, so now qpdf does too.
|
|
This was unintended behavior that was added back for backward
compatibility. It is intentionally undocumented.
|
|
There are codepoints in PDFDoc that are not valid UTF-8 but map to
valid UTF-8. We were handling those correctly with bidirectional
mapping.
However, if those same code points appeared in UTF-8, where they have
no meaning, they were left as fixed points when converting to PDFDoc,
where they do have meaning. This change recognizes them as errors.
|
|
Remove test for type == /XObject in QPDFObjectHandle::isFormXObject
as type value is optional (as per spec 8.10.2).
Replace code to test for /Form in QPDFJob::shouldRemoveUnreferencedResources
with a call to isFormXObject.
|
|
|
|
If we're opening a PDF file to copy its encryption information or
attachments, its version doesn't need to influence the output version.
|
|
|
|
|
|
|
|
This comment expands all tabs using an 8-character tab-width. You
should ignore this commit when using git blame or use git blame -w.
In the early days, I used to use tabs where possible for indentation,
since emacs did this automatically. In recent years, I have switched
to only using spaces, which means qpdf source code has been a mixture
of spaces and tabs. I have avoided cleaning this up because of not
wanting gratuitous whitespaces change to cloud the output of git
blame, but I changed my mind after discussing with users who view qpdf
source code in editors/IDEs that have other tab widths by default and
in light of the fact that I am planning to start applying automatic
code formatting soon.
|
|
|
|
This will be able to be replaced with QUtil::make_shared_array
|
|
Replace PointerHolder arrays wherever it can be done without breaking ABI.
|
|
|
|
|
|
|
|
|
|
|
|
Create the typedefs directly in iterators rather than deriving from
the deprecated std::iterator class.
|
|
|
|
|
|
|
|
* Use unique_ptr in place of shared_ptr in some cases
* unique_ptr for arrays does not require a custom deleter
* use std::make_unique (c++14) where possible
|
|
|
|
|
|
|
|
|
|
None of these are in the public API.
|
|
|
|
Use get() and use_count() instead. Add #define
NO_POINTERHOLDER_DEPRECATION to remove deprecation markers for these
only.
This commit also removes all deprecated PointerHolder API calls from
qpdf's code except in PointerHolder's test suite, which must continue
to test the deprecated APIs.
|
|
add qpdf_oh_new_binary_unicode_string and qpdf_oh_get_binary_utf8_value
|
|
|
|
|
|
Let argv be a null-terminated array. There is already code that
assumes this, and it makes it easier to construct the arguments.
|
|
This makes it much more convention to use the initializeFromArgv
functions since you can use string literals.
|
|
|
|
All the coverage cases that used to be in qpdf.cc are now in
QPDFJob*.cc. It doesn't really matter, but better to follow the
convention of starting with the class that includes the coverage call.
|
|
|
|
|
|
For optional parameter/choices, generate an overloaded config method
that takes no arguments. This makes it possible to convert from a bare
argument to one that takes an optional parameter without breaking
binary compatibility.
|
|
|
|
|
|
Changing from bool requiring true to string requiring the empty string
is more consistent with the CLI and makes it possible to add an
optional parameter or choices later without breaking compatibility.
|
|
Flatten everything to make it easier to map command-line flags to
json. The old structure was an illusion anyway because there was no
mechanism to enforce that things were in the right place. This also
helps with future flexibility.
|
|
|
|
|
|
|
|
Use "file" consistently for specifying a file path. We use "filename"
when adding attachments for a completely different purpose.
|
|
|