head	1.2;
access;
symbols
	pkgsrc-2025Q3:1.1.0.22
	pkgsrc-2025Q3-base:1.1
	pkgsrc-2025Q2:1.1.0.20
	pkgsrc-2025Q2-base:1.1
	pkgsrc-2025Q1:1.1.0.18
	pkgsrc-2025Q1-base:1.1
	pkgsrc-2024Q4:1.1.0.16
	pkgsrc-2024Q4-base:1.1
	pkgsrc-2024Q3:1.1.0.14
	pkgsrc-2024Q3-base:1.1
	pkgsrc-2024Q2:1.1.0.12
	pkgsrc-2024Q2-base:1.1
	pkgsrc-2024Q1:1.1.0.10
	pkgsrc-2024Q1-base:1.1
	pkgsrc-2023Q4:1.1.0.8
	pkgsrc-2023Q4-base:1.1
	pkgsrc-2023Q3:1.1.0.6
	pkgsrc-2023Q3-base:1.1
	pkgsrc-2023Q2:1.1.0.4
	pkgsrc-2023Q2-base:1.1
	pkgsrc-2023Q1:1.1.0.2
	pkgsrc-2023Q1-base:1.1;
locks; strict;
comment	@// @;


1.2
date	2025.11.10.13.53.33;	author wiz;	state dead;
branches;
next	1.1;
commitid	J9S5OZGliIzGO0iG;

1.1
date	2023.01.17.14.01.57;	author spz;	state Exp;
branches;
next	;
commitid	SXwbQkSHXkPVRT9E;


desc
@@


1.2
log
@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`
@
text
@$NetBSD: patch-src_podofo_doc_PdfImage.cpp,v 1.1 2023/01/17 14:01:57 spz Exp $

Recognize TIFF images with alpha channel when using the photometric
colour tag.

--- src/podofo/doc/PdfImage.cpp.orig	2016-05-15 19:06:35.000000000 +0000
+++ src/podofo/doc/PdfImage.cpp
@@@@ -589,7 +589,7 @@@@ void PdfImage::LoadFromTiffHandle(void* 
             break;
             
         case PHOTOMETRIC_RGB:
-            if ( bitsPixel != 24 )
+            if ( bitsPixel != 24 && bitsPixel != 32 )
             {
                 TIFFClose(hInTiffHandle);
                 PODOFO_RAISE_ERROR( ePdfError_UnsupportedImageFormat );
@


1.1
log
@Update print/podofo to version 0.9.8
Fixes many CVE.

Note upstream pushed their src/ contents to src/podofo so patches
had to move that didn't otherwise change.

upstream changelog:

  PoDoFo 0.9.8 released - last release on current code base

  May 3rd 2022

  The PoDoFo developers are happy to announce the release of PoDoFo 0.9.8.
  This release contains over 25 patches submitted by various contributors
  (see SVN Log for details). We encourage all users to upgrade to this
  release.

  Also, this will be the final release of PoDoFo based on the current
  codebase.
  After the release we plan to introduce two major changes to PoDoFo
  development.

  First of all, we will lock/close the current SVN trunk and switch PoDoFo
  development to a more modern development platform, where we can leverage
  state of the art development features such as Continuous Integration or
  Pull Requests. The mailing list and webpage will stay on SourceForge
  as well as the issue tracker. Still, we will open a new issue tracker
  for the new development environment and gradually migrate open issues.
  We will share more news on this, once the new development environment
  was set up.

  Secondly and most importantly, we will replace the current codebase
  of PoDoFo with the amazing work Francesco Pretto has done with pdfmm.
  pdfmm is based on PoDoFo but with an improved and reworked API based
  on C++17 which we consider more suitable for future development of PoDoFo.
  After rebasing PoDoFo on pdfmm, we plan to release PoDoFo 1.0.0.

  Please note, PoDoFo 1.0.0 will be API incompatible (binary and in
  source code) with PoDoFo 0.9.8. We expect migration steps to be necessary.
  PoDoFo Tools are currently being ported to pdfmm as a showcase for
  the migration.

  PoDoFo 0.9.7 released

  January 9th 2021

  PoDoFo 0.9.7 was released today, after over 2 year of development
  and with the help of many new contributors.

  As there are so many improvements, patches and fixes that made it
  into this release, we are not able to list them, so please stick with
  the svn log.

  This release also includes a release of podofobrowser which was
  ported to Qt5.
@
text
@d1 1
a1 1
$NetBSD: patch-src_doc_PdfImage.cpp,v 1.3 2016/08/01 13:39:34 adam Exp $
@

