My Project
Loading...
Searching...
No Matches
Version 1.0.4

  • Fixed #314, #317, #318, #335, #336, #337
  • OpenSSLInternal: Fixed potential double-free in compute_hash_to_sign(), GHSA
  • CMS signing: Fixed minor/potential memory leaks
  • FillXObjectFromPage: Copy /Group dictionary to preserve transparency compositing (#337)
  • PdfPainter: Fix exception-safety for text drawing and XObject operations (#336)
  • PdfXObjectForm: Fix incorrect BBox and Matrix for rotated source pages in FillFromPage (#335)
  • PdfContents: Fixed painting to the same page more than twice (#317)
  • PdfFontMetricsObject: Handle scalars in the widths array that are cross references
  • PdfTokenizer: Fixed infinite loop for "Unknown" keyword
  • PdfDate: Fixed OOB read in date parsing
  • Fix CFF font subsetting leak
  • PdfEncodingMapSimple: Fix skipping beginbfrange unmapped codes in AppendToUnicodeEntries()
  • PdfCMapEncoding: Handle beginbfrange declared size bigger than actual array
  • PdfFlateFilter: Detect error condition treated as warning during inflate
  • basedefs: Aggressively remove offending <Windows.h> macros and fix <zlib.h> conflict (#314)
  • getCodeFromVariant: Avoid invalid arithmetical shifts
  • CMap parser: Fixed infinite loop on negative character codes
  • Document keywords: Fixed retrieving doc keyword list (#318)
  • PdfParser: Fix std::terminate on malformed XRef stream during document load
  • PdfFont: Fixed GetCharGIDInfos() when font program subsetting is not enabled
  • PdfFontMetricsFreetype: Fixed retrieval of ascent/descent
  • PdfCharCodeMap: Fix UB in PushRange when duplicate range is at begin
  • PdfDestination: Removed spurious check for PdfMemDocument in TryCreateFromObject
  • PdfAnnotationActionBase: Fixed segfault in getAction()
  • InputStream: Try to ignore /FlateDecode errors
  • AFDKO: Integration made optional (still enabled by default)
  • Build: Fix link issues when client links against PoDoFo and pdfium

Version 1.0.3

  • Fixed #278, #288, #292, #290, #295
  • PdfParser: Fix the /Prev offsets by adding the PDF- magic offset
  • PdfSignature: Fixed TryGetPreviousRevision()
  • PdfParser: Handled all edge cases pdfs reported in the ML

Version 1.0.2

  • Fixed #275, #276
  • PdfTokenizer: Fixed free-after-use after failing to parse content while reading literal tokens
  • PdfFont: Improved heursitic for word spacing
  • PdfDifferenceEncoding: Fixed handling of ligatures in AGL character names
  • PdfXMPPAcket: Make GetDescription() const correct
  • PdfMemDocument: Fixed upgrade to PDF2.0 in a incremental update

Version 1.0.1

  • Fixed #265, #264
  • Fixed several issues related to use of nullable<std::unique_ptr<T>>
  • XMP: Fixed removing extension from extension bag
  • XMP: Fix double inserting pdfuaid schema
  • Text extraction fixes: improved word spacing heuristic, space trimming in ligatures, text in XObject form with non identity matrix
  • Fixed pkg-config for shared built library

Version 1.0.0

  • Added support for Type1, CFF and OpenType CFF font subsetting
  • Added support for Type3 font subsetting (no encoding subsetting, yet)
  • Implemented full "Adobe Glyph List" specification (https://github.com/adobe-type-tools/agl-specification) for text extraction and glyph selection
  • Implemented full Type1, TrueType font glyph selection
  • Many fixes in TrueType legacy subsetting
  • Added support for PDF/UA preserving when adding annotations/form fields
  • Improved PDF/A preserving (eg. when PDF/UA level is set as well in the XMP metadata)
  • Added support for automatically rotating imported images drawn on a PdfPainter when a orientation is detected in the source image codec metadata. Currently supported on Tiff images only (Jpeg exif metadata support pending)
  • Added high-level signing API, see PdfSignerCMS and TestSignature1 test case
  • Added support for signing encrypted documents
  • Added support for preserving encryption among savings
  • Removed Libidn dependency, default to AESV3R6 encryption
  • Added support for predefined CMap(s) for improved CJK text extraction
  • Added much better CMake integration
  • Added raw rectangle corners retrieval in PdfAnnotation, PdfPage
  • PdfDocument: Added GetFieldsIterator()
  • PdfPage: Added GetFieldsIterator()
  • PdfSignature: Added TryGetPreviousRevision()
  • PdfCanvas: Added CopyContentsTo()
  • FileStreamDevice now uses again C stdio for better performance
  • PdfName:
    • Optimized for struct size and construction from string const literal
    • Added PdfName operator""_nm(const char*, size_t)
  • PdfString:
    • Optimized for struct size
    • Added std::string&& constructor
  • PdfVariant: Optimized for accessing PdfString, PdfName and PdfReference
  • Reviewed PdfFileSpec, PdfAction, PdfDestination API and their usage in PdfOutlineItem, PdfOutlines, PdfAnnotationActionBase, PdfAnnotationLink, PdfAnnotationFileAttachment
  • Reviewed PdfExtension API
  • Reviewed PdfNameTree, renamed to PdfNameTrees and added PdfNameTree to pick specific trees with typed element
  • Reviewed PdfExtGState
  • Reviewed PdfTilingPattern, PdfShadingPattern, PdfFunction: the API now exposes the full capabilities of the PDF specification
  • PdfEncrypt is now stateless: added PdfEncryptContext as a separate state context and used as argument in PdfEncrypt methods
  • Set PdfSignature to have correct /ByteRange and /Contents after signing with PoDoFo::SignDocument
  • Added PdfNames and moved all known names there from PdfName
  • PdfPageCollection: Methods creating pages now takes PdfPageSize or default inferred size from doc
  • Fixed PdfStreamedDocument, see #88
  • Tons of API improvements (see API-MIGRATION.md)
  • Tons of other bug fixes

Version 0.10.6

  • Fix #260, #278, #290, #295, #314, #317, #318
  • PdfFontMetricsObject: Handle scalars in the widths array that are cross references
  • PdfEncodingMapSimple: Fix skipping beginbfrange unmapped codes in AppendToUnicodeEntries()
  • PdfCMapEncoding: Handle beginbfrange declared size bigger than actual array
  • PdfContents: Fixed painting to the same page more than twice (#317)
  • PdfTokenizer: Fixed infinite loop for "Unknown" keyword
  • PdfDate: Fixed OOB read in date parsing
  • PdfXRefStreamParserObject: Permit /W [1 8 2]
  • PdfMemDocument: Fixed upgrade to PDF 2.0 in incremental updates
  • PdfIndirectObjectList: Fixed incorrect collecting of /Length objects in compressed object streams
  • PdfPage: Concatenate form XObject matrix to CTM during text extraction
  • PdfDictionary: Small optimization in findKey()
  • PdfFlateFilter: Detect error condition treated as warning during inflate
  • CMap parser: Fixed infinite loop on negative character codes
  • getCodeFromVariant: Avoid invalid arithmetical shifts
  • Text operators: Fixed order of operations for ‘’ and "<tt> operators (\#278) - </tt>charconv_compat<tt>: Fixed support for older MacOS and newer Xcode (\#290, \#295, libc++ 20+) - </tt>basedefs<tt>: Aggressively remove offending </tt><Windows.h><tt> macros and fix </tt><zlib.h>` conflict (#314) - Document keywords: Fixed retrieving doc keyword list (#318) - Increased minimum GCC version requirement (#260) - Various compilation and warning fixes @section autotoc_md11 Version 0.10.5 - Fix <a href="https://github.com/podofo/podofo/issues/191" >#191</a>, <a href="https://github.com/podofo/podofo/issues/197" >#197</a>, <a href="https://github.com/podofo/podofo/issues/201" >#201</a>, <a href="https://github.com/podofo/podofo/issues/212" >#212</a>, <a href="https://github.com/podofo/podofo/issues/233" >#233</a>, <a href="https://github.com/podofo/podofo/issues/241" >#241</a>, <a href="https://github.com/podofo/podofo/issues/251" >#251</a>, <a href="https://github.com/podofo/podofo/issues/252" >#252</a>, <a href="https://github.com/podofo/podofo/issues/253" >#253</a> - <tt>PdfParser</tt>: Fixed stack overflow parsing documents with many XRef stream updates - <tt>PdfFont</tt>: Fixed <tt>GetBoundingBox()</tt> retrival - <tt>PdfFontMetricsObject</tt>: Fixed reading <tt>/FontBBox</tt> - <tt>PdfEncodingFactory</tt>: Fixed parsing of limits with <tt>/FirstChar</tt> equals to <tt>/LastChar</tt> - <tt>PdfFontMetricsStandard14</tt>: Fixed parsing /Widths - <tt>PdfMetadata</tt>: Fixed missing init ensure for SetAuthor() - <tt>PdfTokenizer</tt>: Fixed character escaping when reading strings - <tt>PdfPageCollection</tt>: Fix memory leak in <tt>RemovePageAt</tt> - Compilation and linking fixes in various conditions - <tt>PdfFontManager</tt>: Fixed GetOrCreateFontFromBuffer stealing memory - <tt>PdfPageCollection</tt>: Disable copy/assignment - <tt>PdfPage_TextExtraction</tt>: Fix <tt>decodeString</tt> with no font - Fix eating of non-space chars in <tt>SplitTextAsLines</tt> - Fix FreeType segfault race condition - <tt>PdfCheckBox</tt>: Fixed <tt>IsChecked()</tt> - <tt>PdfParser</tt>: Uncondtionally try to read XRef stream in all PDFs that doesn't have a cross reference section @section autotoc_md12 Version 0.10.4 - Fixes <a href="https://github.com/podofo/podofo/issues/161" >#161</a>, <a href="https://github.com/podofo/podofo/issues/162" >#162</a>, <a href="https://github.com/podofo/podofo/issues/167" >#167</a>, <a href="https://github.com/podofo/podofo/issues/183" >#183</a>, merges <a href="https://github.com/podofo/podofo/issues/" >#157</a> - <tt>StandardStreamDevice</tt>: Fixed <tt>seek()</tt> in case of <tt>iostream</tt>/<tt>fstream</tt> - <tt>PdfWriter</tt>: Fixed computing the doc identifier with a wrong buffer - <tt>PdfPainter</tt>: Fix <tt>SetCurrentMatrix()</tt> to really update CTM - Fixed compilation in mingw < 12 - <tt>PdfCIDToGIDMap</tt>: Fixed map reading - <tt>PdfPainter</tt>: Fixed offset on multiline text if text is not left aligned @section autotoc_md13 Version 0.10.3 - Fixed big performance regression introduced in 0.10, see <a href="https://github.com/podofo/podofo/issues/108" >#108</a> - Fixed data loss with encrypted documents, see <a href="https://github.com/podofo/podofo/issues/99" >#99</a> - Fixed compilation with VS2022 >= 17.8 - Fixed compilation using libxml >= 2.12.0 @section autotoc_md14 Version 0.10.2 - Security related bugfixes <a href="https://github.com/podofo/podofo/issues/76" >#76</a>, <a href="https://github.com/podofo/podofo/issues/89" >#89</a>, <a href="https://github.com/podofo/podofo/issues/96" >#96</a> - Some compilation and test fixes @section autotoc_md15 Version 0.10.1 - Security bugfixes, <a href="https://github.com/podofo/podofo/issues/66" >#66</a>, <a href="https://github.com/podofo/podofo/issues/67" >#67</a>, <a href="https://github.com/podofo/podofo/issues/69" >#69</a>, <a href="https://github.com/podofo/podofo/issues/70" >#70</a>, <a href="https://github.com/podofo/podofo/issues/71" >#71</a>, <a href="https://github.com/podofo/podofo/issues/72" >#72</a> - Rewritten <tt>PdfPageCollection</tt> for performance - <tt>PdfCMapEncoding</tt>: Fix parsing some invalid CMap(s) supported by Acrobat - <tt>PdfXRefStreamParserObject</tt>: Fixed handling of invalid XRef stream entries - Support compilation of the library header (not the library itself) with C++20 @section autotoc_md16 Version 0.10.0 - <tt>PdfPage</tt>/<tt>PdfAnnotationCollection</tt>/<tt>PdfAnnotation</tt>: Now functions with rect input assume it to be using the canonical coordinate system with no rotation - <tt>PdfImage</tt>: Added support for CYMK jpeg - <tt>PdfParser</tt>: Cleaned <tt>FindToken2</tt> -> <tt>FindTokenBackward</tt> - Renamed base source folder -> main - <tt>PdfPainter</tt>: Revamped API, added full state inspection with current point, added added <tt>PdfPainterTextContext</tt> to handle text object operations Use it with <tt>PdfPainter::Text</tt> instance member. Added <tt>PdfContentStreamOperators</tt> low level interface for PdfPainter - <tt>PdfFontMetrics</tt>: Added <tt>FilePath</tt>/<tt>FaceIndex</tt> for debugging, when available - <tt>PdfFont</tt>: Renamed <tt>GetStringLength()</tt> overloads with <tt>PdfString</tt> to <tt>GetEncodedStringLength()</tt> - <tt>PdfFontManager</tt>: Renamed <tt>GetFont()</tt> -> <tt>SearchFont()</tt> Re-Added better <tt>GetOrCreateFont()</tt> from file/buffer - <tt>PdfEncrypt</tt>: Cleaned factory methods - Added <tt>PdfArray::FindAtAs()</tt>, <tt>PdfArray::FindAtAsSafe()</tt>, <tt>PdfArray::TryFindAtAs()</tt>, <tt>PdfArray::GetAtAs()</tt>, <tt>PdfArray::GetAtAsSafe()</tt>, <tt>PdfArray::TryGetAtAs()</tt> - Added <tt>PdfDictionary::FindKeyAsSafe()</tt> and <tt>PdfDictionary::TryFindKeyAs()</tt> - <tt>PdfDictionary::AddKeyIndirect</tt>/<tt>PdfArray::AddKeyIndirect</tt> accepts a reference - <tt>PdfAnnotation</tt>/<tt>PdfField</tt> API review - <tt>PdfDate</tt>: Introduced <tt>PdfDate::LocalNow()</tt> and <tt>PdfDate::UtcNow()</tt> and default constructor is epoch time instead - Renamed <tt>PdfDocument::GetNameTree()</tt> -> <tt>GetNames()</tt> - <tt>PdfObject</tt>: Flate compress on write objects that have no filters - <tt>PdfMemDocument</tt> does collect garbage by default when saving - <tt>PdfField</tt>/<tt>PdfAnntation</tt>: Fully reworked the hierarchy and added proper fields ownership - Added <tt>PdfField::GetParent()</tt>, <tt>PdfField::GetChildren()</tt> - <tt>PdfImage</tt>: Cleaned/reviewed/fixed <tt>SetData()</tt>/<tt>SetDataRaw()</tt> - Renamed <tt>PdfPageTree</tt> -> <tt>PdfPageCollection</tt> - Added XMP metadata reading/saving. Added <tt>PdfMetadata</tt> class - Added text extraction API - Review I/O API: Merged <tt>InputDevice</tt>/<tt>OutputDevice</tt> into <tt>StreamDevice</tt>. New hierarchy deriving <tt>StreamDevice</tt> - Reviewed <tt>PdfObjectStream</tt> API: added streaming operations, <tt>GetInputStream()</tt>, <tt>GetOutputStream()</tt>. Renamed <tt>GetFilteredCopy()</tt> -> <tt>GetUnwrappedCopy()</tt>/<tt>UnwrapTo()</tt>. They only unwrap non media filters (see <tt>PdfImage::DecodeTo</tt> for media ones). Added proper copy and move assignment operators - <tt>PdfImage</tt>: Added <tt>DecodeTo(pixelFormat)</tt> @section autotoc_md17 Version 0.9.22 (pdfmm) - Fixed serialization of strings with non ASCII <tt>PdfDocEncoding</tt> characters - Removed <tt>PdfLocaleImbue</tt> - <tt>PdfEncrypt</tt>: Removed <tt>PdfReference</tt> state. Added <tt>PdfStatefulEncrypt</tt> - Removed use of <tt>std::ostringstream</tt>. Added efficient <tt>outstringstream</tt> - Added <tt>PdfMath</tt> functionalities (matrix transformations and so on) @section autotoc_md18 Version 0.9.21 (pdfmm) - Fixed serialization of UTF-16BE strings - More lenient <tt>PdfDate</tt> parsing @section autotoc_md19 Version 0.9.20 (pdfmm) - The project is now a C++17 library - Added move semantics for <tt>PdfVariant</tt>, <tt>PdfObject</tt>, <tt>PdfArray</tt>, <tt>PdfDictionary</tt> - Improved XRefStream support, added support in incremental saves - Many fixes in save incremental object/generation number incrementing - <tt>PdfString</tt> backed with UTF-8 storage - <tt>PdfName</tt> backed with UTF-8 storage - Brand new P<tt>dfEncoding</tt> class with support for both <tt>/Encoding</tt> and <tt>/ToUnicode</tt>, more complete Unicode support - Added a <tt>PdfDynamicEncoding</tt> class that creates a custom CID encoding based on actual used glyphs used - Automatic creation of CIDMap and <tt>/ToUnicode</tt> - Added <tt>PdfSigner</tt> class and <tt>SignDocument()</tt> - Added <tt>PdfFontType1Encoding</tt>, which support Type1 implicit encoding - Added support for PDF 2.0 UTF-8 strings (untested) - Added indirect iteration for <tt>PdfArray</tt>/<tt>PdfDictionary</tt> (see <tt>GetIndirectIterator</tt> methods) - Added <tt>PdfDocument::GetPdfALevel()</tt> - Added PDFA preserving writing - Refactored/Reviewed <tt>PdfInputDevice</tt>: versions that take buffer do not copy it (use <tt>istringviewstream</tt>) - Added font replacement facility <tt>PdfFont::TryCreateFontSubstitute()</tt> - Added standard14 fonts embedding, with font programs from PDFium - Reviewed <tt>PdfXObject</tt> hierarchy, added <tt>PdfXObjectForm</tt>, <tt>PdfXObjectPostScript</tt> - Added <tt>PdfTextState</tt> and use it to compute string widths in <tt>PdfFont</tt> - Improved <tt>PdfDocEncoding</tt> to expose conversion utf8 conversion facilities - <tt>PdfParser</tt>: Support also files with whitespace offset before magic start - <tt>PdfObject</tt> auto ownership - <tt>PdfContents</tt>: create on demand /Contents. First create a single stream, after array - Improved <tt>IsDirty</tt> handling: less dirty bit sets - Added <tt>PdfPostScriptTokenizer</tt> that as better general support for PostScript - <tt>PdfDictionary</tt>: Reviewed/convert <tt>GetKey</tt> -> <tt>FindKey</tt> - <tt>PdfDictionary</tt>: Reviewed <tt>GetKeyAs</tt> methods - Fixed hundreds of warnings. No warnings left in tested builds - <tt>FontConfigManager</tt>: better handling with custom configurations - Removed <tt>PdfMutex</tt>. Used <tt>std::mutex</tt> where necessary - Datatypte: removed <tt>PdfDataType::HexString</tt> - Removed support for old compilers (MSVC6, hpux, borland, turbo...) - Added better endian swap functions - Removed <tt>auto_ptr</tt> usage - Removed <tt>pdf_int</tt>/<tt>pdf_uint</tt> types - Removed use of <tt>pdf_long</tt>/<tt>long</tt> types - Removed use of <tt>ptrdiff_t</tt> - Removed unistring and ugly string conversion code. Moved to utfcpp - Reviewed <tt>PdfObject::GetNumber</tt>/<tt>PdfObject::GetReal</tt> (strict/lenient) - Remove <tt>PdfObject</tt> inheritance on <tt>PdfVariant</tt> - Reviewed <tt>PdfVariant</tt>/<tt>PdfObject</tt>/<tt>PdfArray</tt>/<tt>PdfDictionary</tt> equality/disequality operators - Simplified copyright headers - Object copy constructor must copy also stream - <tt>PdfElement</tt>: <tt>GetDocument()</tt>, <tt>GetObject()</tt> refs - <tt>PdfIndirectObjectList</tt>: <tt>GetParentDocument()</tt> -> <tt>GetDocument()</tt> - Remove <tt>PdfSignOutputDevice::SetSignatureSize(size)</tt> - Moved inline code to .cpp - Remove comments on overrides - Cleaned CMakeFiles (removed custom Find<>.cmake) - <tt>NULL</tt> -> <tt>nullptr</tt> - Use <tt>std::shared_ptr</tt> in <tt>PdfFontMetrics</tt>, <tt>PdfEncoding</tt> in <tt>PdfFont</tt> - Cleaned <tt>PdfFontCache</tt> (renamed <tt>PdfFontManager</tt>), removed font functions from <tt>PdfDocument</tt> - <tt>PdfArray::FindAt()</tt> return ref - Simplified license headers - Reviewed <tt>PdfPageTree</tt> and <tt>PdfPageTreeCache</tt> API - Reviewed most int vs unsigned indexing - Remove all hungarian notation - Sanitize code style - Removed all const char* and passed to string/string_view - Renamed <tt>PdfFontCache</tt> -> <tt>PdfFontManager</tt> - Renamed <tt>PdfVecObjects</tt> -> <tt>PdfIndirectObjectList</tt> - Renamed <tt>PdfNamesTree</tt> -> <tt>PdfNameTree</tt> - Renamed <tt>PdfPagesTree</tt> -> <tt>PdfPageTree</tt> - Renamed <tt>PdfPagesTreeCache</tt> -> <tt>PdfPageTreeCache</tt> - PdfObject: removed GetIndirectObject(), MustGetIndirectKey (must use PdfDictionary now) - Remove <tt>PdfMemoryManagement.cpp</tt>, Removed <tt>podofo_new</tt>, <tt>podofo_free</tt> - Add chars type for char array storage/buffering which inerits string - Review pointer vs ref parameters/return types - Removed <tt>PdfRefCountedBuffer</tt>, <tt>PdfRefCountedInputDevice</tt>, <tt>PdfRefCountedOutputDevice</tt> - Removed <tt>PdfMemoryManagement</tt> and all C style malloc/free usage - Refactored <tt>PdfOutputDevice</tt> (<tt>PdfMemoryOutputDevice</tt>/<tt>PdfFileOutputDevice</tt>/etc.) - Clean <tt>PdfError</tt>, remove <tt>wchar_t</tt> - Remove <tt>printf</tt>, <tt>snprintf</tt> - Renamed <tt>PdfElement</tt>-> {<tt>PdfDictionaryElement</tt>|<tt>PdfArrayElement</tt>} that respectively have <tt>GetDictionary()</tt>, <tt>GetArray()</tt> - Reviewed <tt>PdfWriteFlags</tt>, added <tt>PdfSaveOptions</tt> @section autotoc_md20 Old PoDoFo ChangeLog Version 0.7 - Fixed PdfPainter::ArcTo - Fixed crash in FlateDecode and LZWDecode predictor functions - Fixed writing of unicode PdfStrings with brackets (will be escaped now) - Fixed encoding of bytes in PdfName - Added many new unit tests - Added methods to free object memory of objects that are not needed - anymore (These objects will be re-read from disk if they are needed again) - Fixed a crash when appending PDFs - Added unicode support on Win32 (wchar_t* constructors and methods - where apropriate, e.g. file handling) - Fixed a memory leak in PdfStream - Small optimizations in various places - Fixed DCTDecode filter for CMYK images - PdfReference is now immutable, which allows for various optimizations - Fixed PdfInputDevice::Read to return now the correct number of bytes read - Fixed a memory leak in PdfImmediateWriter/PdfStreamedDocument - Fixed several minor parsing issues - Fixed adding text to existing pages - Added Lua5.1 plan file support to podofoimpose - Several fixes in creating XObjects from pages - Fixed a possible crash in PdfNamesTree - Added support for setting colors in PdfAnnotations - Added advanced text drawing support to PdfPainter - Fixed parsing of Type1 fonts - Fixed deletion of PdfAnnations (fixes a memory leak) Version 0.5 - Added support for Embedded Files (annotations & named objects) - Added support for ExtGStates when drawing initially only supports basic transparency - Fixed reading values from nametrees - Added support for named destinations - Fixed a memory leak in PdfDestination::GetPage - Pages do not know their page number inside of the document - Fixed reading PdfActions from PDF files - Moved filter implementations to PdfFiltersPrivate.h - Added PdfFilter::CanEncode and PdfFilter::CanDecode - Simpliefid PoDoFos handling of XRef tables Version 0.4 - PdfImage now supports creating an image stream from a "raw bitmap" which can also be optionally Flate compressed - Added some new Page-related methods to PdfDocument: * Append - append one document to another * InsertPages - insert a range of pages from one document to another * DeletePages - delete a range of pages - Added new tool podofomerge for merging two PDFs together - Added methods to get & set a document's PageMode - Added methods to set a document's FullScreen mode - Added methods to set all the various ViewerPreferences for a document - Added methods to set the document's PageLayout - Added Outline support modified podofoinfo to display them, if present - Added a PdfDestination class - Added PdfNamesTree class for handling the global named objects modified podofoinfo to display them, if present - PdfPainter can draw bezier curves - Added XCode project for building on Mac OS X fixed up conditionals in font code to enable building on MacOSX - but no font loading, YET - Added support for writing linearized PDF - Added support for garbage collection of unused objects - Simplified PdfObject constructor - Improved annotation support - Added support to encode names and various name testcases - Fixed ascent and descent of fonts - Improved PdfImage API - Added support for the creation of file identifiers which makes PoDoFo created PDF files work in more different PDF workflows - PdfImage optionally takes ownership of buffers - Fixed a major parser bug: The parser expected all objects in object streams to be of type dictionary. Version 0.3 - TOTAL revamp of PdfObject & PdfVariant to enable clean/consistent object handling; Added new PdfDocument object - new high level object for reading & writing a PDF doc; - TOTAL revamp of the PdfDocument, PdfWriter & PdfParser relationship PdfDocument is now hub for both reading and writing a document it holds the PdfVecObjects - the others just reference them. - TOTAL revamp of PdfPainter * now uses PDF coordinates - UserUnits from bottom/left added PdfPainterMM for mm-based coords * supports user-specified float precision and writes out floats in an optimal manner * supports "appending" mode for drawing on existing documents
  • Improved handling of the /Info dict for both reading and writing PDFs;
  • Added new test app - podofopdfinfo, which will be used to dump metadata, etc. from a PDF;
  • Added PdfError::DebugMessage() as the official way to write out debugging info; updated all other debugging msgs to use this;
  • Added PdfError::DebugEnabled() to enable/disable display of debug messages;
  • Added tracking of file size in PdfParser;
  • Minor tweak to Linearization handling - to enable getting the status from a doc;
  • Added getting GetPdfVersionAsString() to PdfWriter;
  • Added new info/object getting methods to PdfDocument:
    • bool IsLinearized();
    • size_t FileSize();
    • PdfObject* GetStructTreeRoot();
    • PdfObject* GetMetadata();
    • PdfObject* GetOutlines();
    • PdfObject* GetAcroForm().
  • Updated pdfinfo & podofopdfinfo to call the new PdfDocument methods;
  • Added PdfDictionary and PdfArray classes;
  • Added new PdfPagesTree (inside of PdfDocument.cpp) for handling walking a /Pages tree;
  • Added new GetPageCount() method to PdfDocument;
  • Modifications to PdfPage to attach it to a PdfDocument & construct from a PdfObject;
  • Added new Legal and A3 standard page sizes;
  • Changed page coordinates to be PDF unit-based instead of 1/1000mm;
  • Changed PdfRect to use PDF units and also use bottom instead of top;
  • Added ability to go between PdfRect and PdfArray & also get string version of a PdfRect;
  • Added support for PdfPage to return all the standard boxes (Media, Crop, etc);
  • Added support for fetching inherited values from pages (eg. boxes, rotation, etc.)
  • Added more methods to PdfPage:
    • GetRotation();
    • GetNumAnnots().
  • Use Exceptions now instead of error codes;
  • Removed Init from PdfOutputDevice;
  • Removed Init from PdfParser;
  • Added LZW Filter support;
  • Added PdfElement as base class for PdfAction, PdfAnnotation and
  • PdfPage;
  • Fixed podofoimageextract, podofotxt2pdf and podofopdfinfo;
  • Removed PdfSimpleWriter in favour of PdfDocument;
  • Headers are now installed in includedir/podofo/;
  • Added a new WatermarkTest demonstrates how to read an existing PDF and draw on each page.

Version 0.2

  • Improved Documentation;
  • Added SetInformation for additional error information to PdfError;
  • Fixed the underline color of text;
  • Introduced PdfReference class;
  • Fixed PdfStream::GetFilteredCopy;
  • Improved handling of DecodeParms for filters;
  • Fixed PDF files with more than one DecodeParms dictionary in one object;
  • Added on demand loading of objects to the PdfParser;
  • Ported to windows by Leonard Rosenthol;
  • On demand loading of objects is now the default;
  • Refactored PdfFilter interface so that filters are cached;
  • Fixed multiple connected XRef tables through /Prev keys in the trailer;
  • Fixed a number of compiler warnings;
  • Replaced char*'s with std::strings in a number of classes;
  • Added std::ostream support to PdfOutputDevice;
  • Improvements to the ImageExtractor tool;
  • Refactored PdfVariant so that it is easier to use.

Version 0.1 (11 June 2006)

  • Initial release.