mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-02 22:20:50 -06:00
PDF export: a 16-bit PNG is written at 8 bits for PDF 1.3 and 1.4 instead of failing the export
When the Compression settings keep a PNG as it is, the PNG goes to the PDF writer unchanged, and the writer refuses images of 16 bits a sample below PDF 1.5. Saving a document with a placed 16-bit PNG as PDF 1.4, or as a .ai file at 1.4, failed with "PDF writer error: SixteenBitImage(...)" and wrote nothing. PDF 1.3 and PDF/X-3 failed the same way for an opaque 16-bit PNG, and PDF/X-1a failed for a 16-bit gray PNG. In PDF 1.3 and 1.4 files, such a PNG is now decoded and encoded again at 8 bits a sample, with the same color type and ICC profile, before the writer reads it. From PDF 1.5 on, it keeps its 16 bits. A 16-bit PNG whose pixel data can't be decoded is left out with the note "an image couldn't be decoded and is missing from the picture". Docs: docs/mcp.md (PDF options).
This commit is contained in:
@@ -615,6 +615,8 @@ Images follow the `compression` settings of their kind (`color`, `gray`, or `mon
|
||||
`abovePpi` as placed they are resampled (`downsample`: `average`, `subsample` or `bicubic`) to `ppi`, and compressed
|
||||
with `zip`, `jpeg` (at `quality`; images with transparency stay lossless) or `auto` (JPEGs stay JPEG, the others
|
||||
lossless). `none`, `jpeg2000`, CCITT and `runLength` are written as ZIP, with a warning when an image needs them.
|
||||
A 16-bit PNG that is not resampled, recompressed or converted keeps its 16 bits a sample in PDF 1.5 and later files,
|
||||
and is written at 8 bits in PDF 1.3 and 1.4 files.
|
||||
CMYK images stay CMYK (DeviceCMYK, or ICC-based with the CMYK profile when colours are tagged, as in PDF/X-3 and
|
||||
PDF/X-4): a CMYK JPEG neither resampled nor recompressed is written unchanged, and the others' ink amounts are
|
||||
resampled and compressed again (CMYK JPEG or ZIP). `output.conversion` converts them like CMYK colours: `destination`
|
||||
|
||||
Reference in New Issue
Block a user