Conversion
Conversion
Questa pagina tratta il rendering di un PDF in altri formati e la conversione di un documento verso la conformità PDF/A. Document espone un metodo To*() per ogni formato di output per l’intero documento; gli stessi metodi sono disponibili su Page per rendere una singola pagina.
Rendering in altri formati di documento
Document.ToHtml(), Document.ToDocx() e Document.ToMarkdown() eseguono il rendering di ogni pagina; Page.ToSvg() e Page.ToImage() eseguono il rendering di una pagina in una stringa SVG autonoma o in byte PNG. Ognuno accetta le proprie opzioni — mode su DocxOptions (‘flow’ riformatta il contenuto, ’textbox’ mantiene la geometria propria di ogni pagina) e images su MarkdownExportOptions (‘inline’ incorpora URI di dati immagine, ’external’ scrive file separati in imageDir).
const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml(); // standalone semantic HTML, all pages
const md = doc.ToMarkdown(); // GFM Markdown, all pages
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
ImageOptions (per Page.ToImage()) accetta anche format, quality, scale, un esplicito width / height e background (‘white’ o ’transparent’).
Conversione verso PDF/A
Document.ConvertToPdfA() tenta di sanare un documento verso un PDF/A level (‘b’ o ‘u’) e lo ri-valida, restituendo un ConversionReport con applied (le azioni di sanatoria effettuate), unresolved (problemi che non è stato possibile risolvere) e passed. Eseguilo su una copia — ad esempio una creata con Document.ExtractPages() — in modo che il documento live e operativo non venga mai modificato dalla conversione.
// ExtractPages gives an independent copy; ConvertToPdfA never touches the original.
const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');
console.log(`applied ${conversion.applied.length} action(s), `
+ `${conversion.unresolved.length} unresolved, `
+ `result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);
copy.WriteTo('output-pdfa.pdf');Altri formati di esportazione
Oltre a HTML, Markdown, DOCX, SVG e PNG, la libreria esporta anche TIFF (TiffExportOptions, encodeTiff()) e importa/esporta valori dei campi AcroForm in FDF e XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — utile per scambiare i dati dei moduli compilati separatamente dal PDF stesso.
Suggerimenti e migliori pratiche
- Esegui
Document.ConvertToPdfA()su una copia (ad esempio daDocument.ExtractPages()), mai sul documento live che devi ancora salvare non convertito. - Verifica
ConversionReport.unresolvedanche quandopassedètrueper un livello di validazione più permissivo — alcune azioni di rimedio si risolvono completamente solo a un livello più restrittivo. - Usa
mode: 'textbox'suDocxOptionsquando l’output DOCX deve mantenere la geometria visiva esatta di ogni pagina; usa la modalità predefinita'flow'quando dovrebbe riformattarsi come un normale documento di elaborazione testi. - Fornisci
images: 'external'e unimageDirsuMarkdownExportOptionsper documenti di grandi dimensioni, anziché i predefiniti URI di dati inline, per mantenere piccolo il file Markdown stesso.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
ConvertToPdfA() segnala ancora passed: false | Non tutti i problemi elencati da ConversionReport.unresolved possono essere risolti automaticamente (ad es. font incorporati mancanti o un /OutputIntent mancante) | Applica manualmente le regole specifiche di unresolved, quindi riesegui ConvertToPdfA() |
| Il documento live è stato modificato inaspettatamente dopo un tentativo di conversione PDF/A | ConvertToPdfA() è stato chiamato direttamente sul documento di lavoro invece di una copia | Eseguilo su una copia creata con Document.ExtractPages() |
| L’esportazione Markdown produce un unico file enorme | Il images: 'inline' predefinito incorpora ogni immagine come URI dati | Passa { images: 'external', imageDir: '...' } per scrivere le immagini come file separati |
| L’output DOCX perde il layout di pagina originale | Il mode: 'flow' predefinito riformatta il contenuto come un word processor | Passa { mode: 'textbox' } per mantenere la geometria di ciascuna pagina |
FAQ
In quali formati può essere convertito un PDF?
HTML, Markdown e DOCX per l’intero documento (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG e PNG per pagina (Page.ToSvg() / Page.ToImage()); oltre a TIFF e FDF/XFDF esportazione di form-data.
La conversione in PDF/A modifica il mio documento originale?
Solo se chiami ConvertToPdfA() direttamente su di esso. Chiamalo su una copia — ad esempio doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — per mantenere il documento originale non convertito.
Come faccio a sapere se una conversione PDF/A è effettivamente riuscita?
Controlla ConversionReport.passed. applied elenca ciò che la conversione ha corretto, e unresolved elenca ciò che non ha potuto — ispeziona unresolved anche quando passed è true.
Posso esportare solo i valori dei campi del modulo compilati, senza il PDF stesso?
Sì — exportFdfFile() e exportXfdfFile() scrivono i valori attuali del campo AcroForm in un file FDF o XFDF separato; importFdfFile() / importXfdfFile() li leggono nuovamente in un documento.
Riepilogo API Reference
| Classe/Metodo | Descrizione |
|---|---|
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Renderizza ogni pagina in un altro formato di documento |
Page.ToSvg() / Page.ToImage() | Renderizza una singola pagina in SVG o PNG |
DocxOptions / MarkdownExportOptions / ImageOptions | Opzioni di rendering per formato |
Document.ConvertToPdfA() | Intervieni su un documento per raggiungere un livello PDF/A e ri-valida |
ConversionReport | Il risultato della conversione: applied, unresolved, passed |
TiffExportOptions / encodeTiff() | Esporta in TIFF |
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile() | Esporta o importa i valori del campo AcroForm come FDF/XFDF |