Log message:
podofo: update to 1.0.2.
Tools have been obsoleted upstream, pkgsrc follows suit.
## Version 1.0.2
- Fixed [#275](https://github.com/podofo/podofo/issues/275), \
[#276](https://github.com/podofo/podofo/issues/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](https://github.com/podofo/podofo/issues/265), \
[#264](https://github.com/podofo/podofo/issues/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`](https://github.com/podofo/podofo/blob/edbcb16a5b18cb20f1d0da1724639cee13608436/test/unit/SignatureTest.cpp#L37) \
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](https://github.com/podofo/podofo?tab=readme-ov-file#consume-podofo-from-package-managers-with-cmake)
- 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](https://github.com/podofo/podofo/blob/master/API-MIGRATION.md))
- Tons of other bug fixes
## Version 0.10.5
- Fix [#191](https://github.com/podofo/podofo/issues/191), \
[#197](https://github.com/podofo/podofo/issues/197),
[#201](https://github.com/podofo/podofo/issues/201), \
[#212](https://github.com/podofo/podofo/issues/212),
[#233](https://github.com/podofo/podofo/issues/233), \
[#241](https://github.com/podofo/podofo/issues/241),
[#251](https://github.com/podofo/podofo/issues/251), \
[#252](https://github.com/podofo/podofo/issues/252),
[#253](https://github.com/podofo/podofo/issues/253)
- `PdfParser`: Fixed stack overflow parsing documents with many XRef stream updates
- `PdfFont`: Fixed `GetBoundingBox()` retrival
- `PdfFontMetricsObject`: Fixed reading `/FontBBox`
- `PdfEncodingFactory`: Fixed parsing of limits with `/FirstChar` equals to \
`/LastChar`
- `PdfFontMetricsStandard14`: Fixed parsing /Widths
- `PdfMetadata`: Fixed missing init ensure for SetAuthor()
- `PdfTokenizer`: Fixed character escaping when reading strings
- `PdfPageCollection`: Fix memory leak in `RemovePageAt`
- Compilation and linking fixes in various conditions
- `PdfFontManager`: Fixed GetOrCreateFontFromBuffer stealing memory
- `PdfPageCollection`: Disable copy/assignment
- `PdfPage_TextExtraction`: Fix `decodeString` with no font
- Fix eating of non-space chars in `SplitTextAsLines`
- Fix FreeType segfault race condition
- `PdfCheckBox`: Fixed `IsChecked()`
- `PdfParser`: Uncondtionally try to read XRef stream in all PDFs that doesn't \
have a cross reference section
## Version 0.10.4
- Fixes [#161](https://github.com/podofo/podofo/issues/161), \
[#162](https://github.com/podofo/podofo/issues/162),
[#167](https://github.com/podofo/podofo/issues/167), \
[#183](https://github.com/podofo/podofo/issues/183),
merges [#157](https://github.com/podofo/podofo/issues/)
- `StandardStreamDevice`: Fixed `seek()` in case of `iostream`/`fstream`
- `PdfWriter`: Fixed computing the doc identifier with a wrong buffer
- `PdfPainter`: Fix `SetCurrentMatrix()` to really update CTM
- Fixed compilation in mingw < 12
- `PdfCIDToGIDMap`: Fixed map reading
- `PdfPainter`: Fixed offset on multiline text if text is not left aligned
## Version 0.10.3
- Fixed big performance regression introduced in 0.10, see \
[#108](https://github.com/podofo/podofo/issues/108)
- Fixed data loss with encrypted documents, see \
[#99](https://github.com/podofo/podofo/issues/99)
- Fixed compilation with VS2022 >= 17.8
- Fixed compilation using libxml >= 2.12.0
## Version 0.10.2
- Security related bugfixes [#76](https://github.com/podofo/podofo/issues/76),
[#89](https://github.com/podofo/podofo/issues/89),
[#96](https://github.com/podofo/podofo/issues/96)
- Some compilation and test fixes
## Version 0.10.1
- Security bugfixes, [#66](https://github.com/podofo/podofo/issues/66), \
[#67](https://github.com/podofo/podofo/issues/67),
[#69](https://github.com/podofo/podofo/issues/69), \
[#70](https://github.com/podofo/podofo/issues/70),
[#71](https://github.com/podofo/podofo/issues/71), \
[#72](https://github.com/podofo/podofo/issues/72)
- Rewritten `PdfPageCollection` for performance
- `PdfCMapEncoding`: Fix parsing some invalid CMap(s) supported by Acrobat
- `PdfXRefStreamParserObject`: Fixed handling of invalid XRef stream entries
- Support compilation of the library header (not the library itself) with C++20
## Version 0.10.0
- `PdfPage`/`PdfAnnotationCollection`/`PdfAnnotation`: Now functions with
rect input assume it to be using the canonical coordinate system
with no rotation
- `PdfImage`: Added support for CYMK jpeg
- `PdfParser`: Cleaned `FindToken2` -> `FindTokenBackward`
- Renamed base source folder -> main
- `PdfPainter`: Revamped API, added full state inspection with current point,
added added `PdfPainterTextContext` to handle text object operations
Use it with `PdfPainter::Text` instance member.
Added `PdfContentStreamOperators` low level interface for PdfPainter
- `PdfFontMetrics`: Added `FilePath`/`FaceIndex` for debugging, when available
- `PdfFont`: Renamed `GetStringLength()` overloads with
`PdfString` to `GetEncodedStringLength()`
- `PdfFontManager`: Renamed `GetFont()` -> `SearchFont()`
Re-Added better `GetOrCreateFont()` from file/buffer
- `PdfEncrypt`: Cleaned factory methods
- Added `PdfArray::FindAtAs()`, `PdfArray::FindAtAsSafe()`, \
`PdfArray::TryFindAtAs()`,
`PdfArray::GetAtAs()`, `PdfArray::GetAtAsSafe()`, `PdfArray::TryGetAtAs()`
- Added `PdfDictionary::FindKeyAsSafe()` and `PdfDictionary::TryFindKeyAs()`
- `PdfDictionary::AddKeyIndirect`/`PdfArray::AddKeyIndirect` accepts a reference
- `PdfAnnotation`/`PdfField` API review
- `PdfDate`: Introduced `PdfDate::LocalNow()` and `PdfDate::UtcNow()`
and default constructor is epoch time instead
- Renamed `PdfDocument::GetNameTree()` -> `GetNames()`
- `PdfObject`: Flate compress on write objects that have no filters
- `PdfMemDocument` does collect garbage by default when saving
- `PdfField`/`PdfAnntation`: Fully reworked the hierarchy
and added proper fields ownership
- Added `PdfField::GetParent()`, `PdfField::GetChildren()`
- `PdfImage`: Cleaned/reviewed/fixed `SetData()`/`SetDataRaw()`
- Renamed `PdfPageTree` -> `PdfPageCollection`
- Added XMP metadata reading/saving. Added `PdfMetadata` class
- Added text extraction API
- Review I/O API: Merged `InputDevice`/`OutputDevice` into `StreamDevice`.
New hierarchy deriving `StreamDevice`
- Reviewed `PdfObjectStream` API: added streaming operations,
`GetInputStream()`, `GetOutputStream()`. Renamed
`GetFilteredCopy()` -> `GetUnwrappedCopy()`/`UnwrapTo()`.
They only unwrap non media filters (see `PdfImage::DecodeTo`
for media ones). Added proper copy and move assignment operators
- `PdfImage`: Added `DecodeTo(pixelFormat)`
## Version 0.9.22 (pdfmm)
- Fixed serialization of strings with non ASCII `PdfDocEncoding`
characters
- Removed `PdfLocaleImbue`
- `PdfEncrypt`: Removed `PdfReference` state. Added `PdfStatefulEncrypt`
- Removed use of `std::ostringstream`. Added efficient `outstringstream`
- Added `PdfMath` functionalities (matrix transformations and so on)
## Version 0.9.21 (pdfmm)
- Fixed serialization of UTF-16BE strings
- More lenient `PdfDate` parsing
## Version 0.9.20 (pdfmm)
- The project is now a C++17 library
- Added move semantics for `PdfVariant`, `PdfObject`, `PdfArray`, `PdfDictionary`
- Improved XRefStream support, added support in incremental saves
- Many fixes in save incremental object/generation number incrementing
- `PdfString` backed with UTF-8 storage
- `PdfName` backed with UTF-8 storage
- Brand new P`dfEncoding` class with support for both `/Encoding` and `/ToUnicode`,
more complete Unicode support
- Added a `PdfDynamicEncoding` class that creates a custom CID encoding
based on actual used glyphs used
- Automatic creation of CIDMap and `/ToUnicode`
- Added `PdfSigner` class and `SignDocument()`
- Added `PdfFontType1Encoding`, which support Type1 implicit encoding
- Added support for PDF 2.0 UTF-8 strings (untested)
- Added indirect iteration for `PdfArray`/`PdfDictionary` (see \
`GetIndirectIterator` methods)
- Added `PdfDocument::GetPdfALevel()`
- Added PDFA preserving writing
- Refactored/Reviewed `PdfInputDevice`: versions that take buffer
do not copy it (use `istringviewstream`)
- Added font replacement facility `PdfFont::TryCreateFontSubstitute()`
- Added standard14 fonts embedding, with font programs from PDFium
- Reviewed `PdfXObject` hierarchy, added `PdfXObjectForm`, `PdfXObjectPostScript`
- Added `PdfTextState` and use it to compute string widths in `PdfFont`
- Improved `PdfDocEncoding` to expose conversion utf8 conversion facilities
- `PdfParser`: Support also files with whitespace offset before magic start
- `PdfObject` auto ownership
- `PdfContents`: create on demand /Contents. First create a single stream, after \
array
- Improved `IsDirty` handling: less dirty bit sets
- Added `PdfPostScriptTokenizer` that as better general support for PostScript
- `PdfDictionary`: Reviewed/convert `GetKey` -> `FindKey`
- `PdfDictionary`: Reviewed `GetKeyAs` methods
- Fixed hundreds of warnings. No warnings left in tested builds
- `FontConfigManager`: better handling with custom configurations
- Removed `PdfMutex`. Used `std::mutex` where necessary
- Datatypte: removed `PdfDataType::HexString`
- Removed support for old compilers (MSVC6, hpux, borland, turbo...)
- Added better endian swap functions
- Removed `auto_ptr` usage
- Removed `pdf_int`/`pdf_uint` types
- Removed use of `pdf_long`/`long` types
- Removed use of `ptrdiff_t`
- Removed unistring and ugly string conversion code. Moved to utfcpp
- Reviewed `PdfObject::GetNumber`/`PdfObject::GetReal` (strict/lenient)
- Remove `PdfObject` inheritance on `PdfVariant`
- Reviewed `PdfVariant`/`PdfObject`/`PdfArray`/`PdfDictionary` \
equality/disequality operators
- Simplified copyright headers
- Object copy constructor must copy also stream
- `PdfElement`: `GetDocument()`, `GetObject()` refs
- `PdfIndirectObjectList`: `GetParentDocument()` -> `GetDocument()`
- Remove `PdfSignOutputDevice::SetSignatureSize(size)`
- Moved inline code to .cpp
- Remove comments on overrides
- Cleaned CMakeFiles (removed custom Find<>.cmake)
- `NULL` -> `nullptr`
- Use `std::shared_ptr` in `PdfFontMetrics`, `PdfEncoding` in `PdfFont`
- Cleaned `PdfFontCache` (renamed `PdfFontManager`), removed font functions from \
`PdfDocument`
- `PdfArray::FindAt()` return ref
- Simplified license headers
- Reviewed `PdfPageTree` and `PdfPageTreeCache` 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 `PdfFontCache` -> `PdfFontManager`
- Renamed `PdfVecObjects` -> `PdfIndirectObjectList`
- Renamed `PdfNamesTree` -> `PdfNameTree`
- Renamed `PdfPagesTree` -> `PdfPageTree`
- Renamed `PdfPagesTreeCache` -> `PdfPageTreeCache`
- PdfObject: removed GetIndirectObject(), MustGetIndirectKey (must use \
PdfDictionary now)
- Remove `PdfMemoryManagement.cpp`, Removed `podofo_new`, `podofo_free`
- Add chars type for char array storage/buffering which inerits string
- Review pointer vs ref parameters/return types
- Removed `PdfRefCountedBuffer`, `PdfRefCountedInputDevice`, \
`PdfRefCountedOutputDevice`
- Removed `PdfMemoryManagement` and all C style malloc/free usage
- Refactored `PdfOutputDevice` (`PdfMemoryOutputDevice`/`PdfFileOutputDevice`/etc.)
- Clean `PdfError`, remove `wchar_t`
- Remove `printf`, `snprintf`
- Renamed `PdfElement`-> {`PdfDictionaryElement`|`PdfArrayElement`} that
respectively have `GetDictionary()`, `GetArray()`
- Reviewed `PdfWriteFlags`, added `PdfSaveOptions`
|