summaryrefslogtreecommitdiffstats
path: root/include
AgeCommit message (Collapse)Author
2013-07-10Change API/ABI and withdraw 4.2.0Jay Berkenbilt
4.2.0 was binary incompatible in spite of there being no deletions or changes to any public methods. As such, we have to bump the ABI and are fixing some API breakage while we're at it. Previous 4.3.0 target is now 5.1.0.
2013-06-14Bug fix: handle generation > 0 when generating object streamsJay Berkenbilt
Rework QPDFWriter to always track old object IDs and QPDFObjGen instead of int, thus not discarding the generation number. Switch to QPDF::getCompressibleObjGen() to properly handle the case of an old object eligible for compression that has a generation of other than zero.
2013-06-14Use QPDFObjectHandle::getObjGen() where appropriateJay Berkenbilt
In internal code and examples, replace calls to getObjectID() and getGeneration() with calls to getObjGen() where possible.
2013-06-14Add QPDFObjectHandle::getObjGen()Jay Berkenbilt
This is safer than getObjectID() and getGeneration() for many uses.
2013-06-14Promote QPDF::ObjGen to top-level object QPDFObjGenJay Berkenbilt
2013-03-11Export terminateParsing in the DLLJay Berkenbilt
Windows fix: QPDFObject::ParserCallbacks::terminateParsing() was not declared with QPDF_DLL.
2013-03-11Clarify documentation on encrypted filesJay Berkenbilt
Explicitly state how QPDF handles empty passwords when writing files. Apparently some libraries treat the empty string as the owner password as an instruction to generate a random password.
2013-03-05Fix getTypeCode and getTypeName work for indirect objectsJay Berkenbilt
Remove const qualifier from getTypeCode and get getTypeName methods of QPDFObjectHandle, make them work properly for indirect objects, and exercise them much better in the test suite.
2013-03-05Add method to terminate content stream parsingJay Berkenbilt
2013-03-05Call QUtil::safe_fopen in place of fopenJay Berkenbilt
fopen was previuosly called wrapped by QUtil::fopen_wrapper, but QUtil::safe_fopen does this itself, which is less cumbersome.
2013-03-05Remove all calls to sprintfJay Berkenbilt
2013-03-04Remove all old-style casts from C++ codeJay Berkenbilt
2013-03-04Replace many calls to sprintf with QUtil::hex_encodeJay Berkenbilt
Add QUtil::hex_encode to encode binary data has a hexadecimal string, and use it in place of sprintf where possible.
2013-01-23Cosmetic changes to be closer to Adobe terminologyJay Berkenbilt
Change object type Keyword to Operator, and place the order of the object types in object_type_e in the same order as they are mentioned in the PDF specification. Note that this change only breaks backward compatibility with code that has not yet been released.
2013-01-22Add getTypeCode() and getTypeName()Jay Berkenbilt
Add virtual methods to QPDFObject, wrappers to QPDFObjectHandle, and implementations to all the QPDF_Object types.
2013-01-20Add QPDFObjectHandle::parseContentStream methodJay Berkenbilt
This method allows parsing of the PDF objects in a content stream or array of content streams.
2013-01-20Added new QPDFObjectHandle types Keyword and InlineImageJay Berkenbilt
These object types are to facilitate content stream parsing.
2013-01-04Clarify methods to get user passwordJay Berkenbilt
With newer encryption formats, it is no longer possible to recover the user password using the owner password.
2012-12-31Update "C" API with functions for new featuresJay Berkenbilt
2012-12-31Avoid modifying trailer when writingJay Berkenbilt
When preparing the trailer for writing to the new file, trim a copy of the trailer instead of the original file's trailer.
2012-12-31Update copyright year to 2013Jay Berkenbilt
Also add copyright notice to a few public headers that were missing one.
2012-12-31Refactor Dictionary writing codeJay Berkenbilt
Original code was written before we could shallow copy objects, so all the filtering was done by suppressing the output of certain keys and replacing them with other keys. Now we can simplify the code greatly by modifying shallow copies of dictionaries in place.
2012-12-31Support for encryption with /V=5 and /R=5 and /R=6Jay Berkenbilt
Read and write support is implemented for /V=5 with /R=5 as well as /R=6. /R=5 is the deprecated encryption method used by Acrobat IX. /R=6 is the encryption method used by PDF 2.0 from ISO 32000-2.
2012-12-31Support files with only attachments encryptedJay Berkenbilt
Test cases added in a future commit since they depend on /R=6 support.
2012-12-31Add random number functions to QUtilJay Berkenbilt
2012-12-31Comment about non-const Pipeline dataJay Berkenbilt
2012-12-31Add ExtensionLevel support to version handlingJay Berkenbilt
All version operations are now fully aware of extension levels.
2012-12-31Add V5 parameters to EncryptionDataJay Berkenbilt
2012-12-31change EncryptionDataJay Berkenbilt
2012-12-31Eliminate flattenScalarReferencesJay Berkenbilt
2012-09-23Allow reading from InputSource and writing to PipelineJay Berkenbilt
Allowing users to subclass InputSource and Pipeline to read and write from/to arbitrary sources provides the maximum flexibility for users who want to read and write from other than files or memory.
2012-09-06Add QPDFWriter::setExtraHeaderTextJay Berkenbilt
2012-08-11Refactor: move resolution of literal to its own methodJay Berkenbilt
2012-07-29Fix spelling errorsJay Berkenbilt
2012-07-29Update copyright to 2012Jay Berkenbilt
2012-07-25added QPDFObjectHandle::replaceStreamData(std::string data).Tobias Hoffmann
2012-07-22Windows compilation fixesJay Berkenbilt
2012-07-21Implement QPDFObjectHandle::parseJay Berkenbilt
Move object parsing code from QPDF to QPDFObjectHandle and parameterize the parts of it that are specific to a QPDF object. Provide a version that can't handle indirect objects and that can be called on an arbitrary string. A side effect of this change is that the offset used when reporting invalid stream length has changed, but since the new value seems like a better value than the old one, the test suite has been updated rather than making the code backward compatible. This only effects the offset reported for invalid streams that lack /Length or have an invalid /Length key. Updated some test code and exmaples to use QPDFObjectHandle::parse. Supporting changes include adding a BufferInputSource constructor that takes a string.
2012-07-21Move readToken from QPDF to QPDFTokenizerJay Berkenbilt
2012-07-21Refactor: pull *InputSource out of QPDFJay Berkenbilt
InputSource, FileInputSource, and BufferInputSource are now top-level classes instead of privately nested inside QPDF.
2012-07-16Add command line option to copy encryption from other fileJay Berkenbilt
Add --copy-encryption and --encryption-file-password options to qpdf. Also strengthen test suite for copying encryption. The strengthened test suite would have caught the failure to preserve AES and the failure to update the file version, which was invalidating the encrypted data.
2012-07-14Add public QPDFWriter::copyEncryptionParametersJay Berkenbilt
Method to copy encryption parameters from another file. Adapted from existing code to copy encryption parameters from the original file.
2012-07-11Update getPageImages() comment to mention pushInheritedAttributesToPage()Jay Berkenbilt
2012-07-11Support copying objects from another QPDF objectJay Berkenbilt
This includes QPDF::copyForeignObject and supporting foreign objects as arguments to addPage*.
2012-07-11Add concept of reserved objectsJay Berkenbilt
QPDFObjectHandle::{new,is,assert}Reserved, QPDF::replaceReserved provide a mechanism to add objects to a PDF file when there are circular references. This is a prerequisite to copying objects from one PDF to another.
2012-07-08Added assertNumber and assertScalar to QPDFObjectHandleTobias Hoffmann
2012-07-08Added public assert{Type} methods to QPDFObjectHandleTobias Hoffmann
2012-07-07Build this->all_pages while traversing with pushInheritedAttributesToPageTobias Hoffmann
2012-07-07Don't require stream data provider to know length in advanceJay Berkenbilt
Breaking API change: length parameter has disappeared from the StreamDataProvider version of QPDFObjectHandle::replaceStreamData since it is no longer necessary to compute it in advance. This breaking change is justified by the fact that removing the length parameter provides the caller an opportunity to simplify the calling code.
2012-07-06Add QPDFWriter method to output to FILE*Jay Berkenbilt