mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-26 11:08:48 -06:00
Co-authored-by: Codex <noreply@openai.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
22 lines
1.4 KiB
Markdown
22 lines
1.4 KiB
Markdown
# pdfcraft-create
|
||
|
||
Layer L4. Create a PDF (Acrobat's Create a PDF tool), execution plan M10.2:
|
||
|
||
- `blank(width, height, pages)`: an empty document;
|
||
- `from_images(&[(name, bytes)])`: one page per image, sized from the image's resolution
|
||
(PNG `pHYs`, JPEG JFIF density; 72 dpi when absent). JPEG data is embedded as is
|
||
(`/DCTDecode`, grey, RGB or Adobe-inverted CMYK); PNG is decoded and stored with Flate,
|
||
with transparency as a soft mask. An ICC profile in the file (JPEG `APP2 ICC_PROFILE`, PNG
|
||
`iCCP`) that matches the image's colour space is kept as an `/ICCBased` colour space with
|
||
the device space as `/Alternate`; images with the same profile share one profile object.
|
||
JPEG metadata scanning skips marker fill bytes and reads application segments after the
|
||
frame header, stopping at the first scan or end marker. Broken or mismatched ICC profiles
|
||
still fall back to the device colour space;
|
||
- `from_images_with_resolution(images, ImageResolution::Dpi(dpi))`: override the page
|
||
resolution (1–1200 dpi), without resampling or recompressing image pixels. Use 72 dpi
|
||
for one point per pixel, or `ImageResolution::Embedded` for the same behavior as
|
||
`from_images`. The largest page side is still capped at 14,400 points;
|
||
- `from_text(text, …)`: plain text set in Helvetica, wrapped and paginated.
|
||
|
||
Every function returns a `pdfcraft_cos::Document`; the caller writes it.
|