mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-02 14:38:13 -06:00
35 lines
2.0 KiB
Markdown
35 lines
2.0 KiB
Markdown
# pdfcraft-xfdf
|
|
|
|
Layer L4: comment and form data exchange (execution plan M5.6, M6.7).
|
|
|
|
```rust
|
|
let xml = export_xfdf(&doc, true, true, "form.pdf"); // comments and/or field values
|
|
let fdf = export_fdf(&doc, false, true, "form.pdf");
|
|
let txt = export_data(&doc, Format::Txt); // or Xml, Csv
|
|
let report = import(&mut doc, &bytes)?; // XFDF, FDF, XML, CSV or text, detected
|
|
```
|
|
|
|
- **XFDF** (ISO 19444-1): every comment type PdfCraft knows (text, free text, line, square,
|
|
circle, polygon, polyline, markup, stamp, caret, ink, attachments, sound, redact) with rect,
|
|
name, author, subject, dates, flags, colours, opacity, width, icon, quads, line ends, ink,
|
|
default appearance, callouts (`callout`, `fringe`, `intent`, `head`), pop-ups and reply threads
|
|
(`inreplyto`); field values nested by name, with text preserved across XML comments and processing instructions.
|
|
- **FDF**: fields (with `/Kids` hierarchies) and comments as direct objects.
|
|
- **Form data**: Acrobat's XML (`xfdf:original` keeps names that aren't XML names), CSV and
|
|
tab-delimited text (a row of names, a row of values).
|
|
|
|
XML and XFDF exports preserve tabs and line breaks in field names and comment metadata with
|
|
character references, so XML attribute normalization cannot change their identities.
|
|
|
|
Plain AcroForm XML imports retain all direct text around comments and processing instructions,
|
|
including CDATA and character references. Nested-element and XFA interpretation are unchanged.
|
|
|
|
CSV export and spreadsheet merging quote tabs, and import distinguishes quoted tabs from TSV
|
|
delimiters without changing field identities. Automatic detection of externally authored, ambiguous
|
|
tables remains heuristic.
|
|
|
|
Import replaces comments with the same `/NM` (and drops the replaced comment's pop-up), draws
|
|
appearances PdfCraft can draw, and sets values through the form's own checks (formats,
|
|
validation, recalculation); read-only fields take imported values, as in Acrobat. XML is read
|
|
with `roxmltree`.
|