Cum să convertești documente PDF în TypeScript

Cum să convertești documente PDF în TypeScript

Acest ghid arată cum să convertești conținutul PDF în alte formate cu Aspose.PDF FOSS pentru TypeScript. Page exportă o singură pagină ca SVG sau o imagine raster; Document exportă întregul fișier ca HTML, Markdown sau DOCX și poate valida și converti un document în PDF/A. Necesită Node.js 22 sau o versiune ulterioară.

Ghid pas cu pas

Pasul 1: Instalează pachetul

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build

Verifică instalarea importând clasa Document într-un nou fișier TypeScript — această linie ar trebui să se rezolve fără erori odată ce pachetul este instalat:

import { Document } from '@asposefoss/pdf';

Pasul 2: Importă clasele necesare

Importați Document pentru a deschide fișierul; metodele de conversie folosite mai jos sunt apelate direct pe instanțele Document și Page returnate, astfel încât nu mai sunt necesare alte importuri:

import { Document } from '@asposefoss/pdf';

Pasul 3: Convertiți o pagină în SVG sau într-o imagine raster

Page.ToSvg() returnează un șir <svg> independent. Page.ToImage() redă pagina în octeți raster; scale este relativ la DPI-ul nativ de 72 al PDF-ului, astfel că scale: 2 redă la 144 DPI:

import { Document } from '@asposefoss/pdf';

const doc = Document.OpenFile('input.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI

Pasul 4: Convertiți un document în HTML sau în Markdown

Document.ToHtml() în modul său implicit (semantic) rearanjează conținutul din arborele de structură în titluri și paragrafe; furnizați { mode: 'fixed' } pentru a reproduce fiecare pagină ca SVG poziționat și text plasat absolut în schimb. Document.ToMarkdown() produce Markdown GFM pentru întregul document:

const semanticHtml = doc.ToHtml(); // reflowable markup, all pages
const fixedHtml = doc.ToHtml({ mode: 'fixed', fonts: 'embed' }); // positioned, fonts embedded
const markdown = doc.ToMarkdown(); // GFM Markdown, all pages

Modul semantic citește arborele de structură construit de Document.GetStructTree() / Document.CreateStructTree() — pe un document neetichetat revine la un corp euristic și exportul își pierde structura de titluri.


Pasul 5: Convertiți un document în DOCX

Document.ToDocx() returnează .docx octeți cu conținut rearanjat și imagini ambalate în interior; furnizați { mode: 'textbox' } pentru a păstra geometria fixă a fiecărei pagini în loc de rearanjare:

const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry

Pasul 6: Validează și convertește în PDF/A

Document.ValidatePdfA(level), Document.ValidatePdfX(level) și Document.ValidatePdfUa() returnează un ValidationReport care descrie dacă documentul respectă standardul denumit. Document.ConvertToPdfA(level, opts) returnează un ConversionReport care enumeră corecțiile aplicate și problemele care rămân nerezolvate. Rulează conversia pe o copie Document.ExtractPages() când documentul live trebuie să rămână salvat neconvertit:

const report = doc.ValidatePdfA('2b');
console.log(report.Passed);

const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');
console.log(conversion.applied.length, conversion.unresolved.length, conversion.passed);
copy.Save();

Probleme comune și remedieri

Document.ToHtml() pierde structura titlurilor. Modul semantic parcurge arborele de structură, așa că trebuie să ruleze după o trecere de etichetare — fie Document.AutoTag() sau etichetare manuală prin StructTreeRoot.Append(). ToHtml() revine la un corp euristic când GetStructTree() returns null.

ConvertToPdfA() modifică fișierul pe care intenționați să-l păstrați neconvertit. Rulați conversia pe o copie din Document.ExtractPages(), apoi salvați copia separat — ConvertToPdfA() modifică documentul pe care este apelat.

ValidatePdfA() raportează eșecuri la prima rulare. O cauză comună este fonturile standard neîncorporate și o lipsă /OutputIntent — verifică report.Passed și constatările individuale ale regulii pentru a vedea care condiții nu au fost îndeplinite.

Page.ToImage() ieșirea pare cu rezoluție scăzută. scale este relativă la 72 DPI; mărește-o (de exemplu { scale: 2 } pentru 144 DPI) pentru o ieșire de calitate tipărită.

Întrebări frecvente

Care este diferența dintre exportul semantic și cel fix HTML?

Modul semantic rearanjează documentul din arborele său de structură în markup care se citește bine într-un browser la orice lățime. Modul fix reproduce fiecare pagină ca SVG poziționat și text plasat absolut, potrivind exact aspectul original.

Păstrează Document.ToDocx() aspectul original al paginii?

În mod implicit, ToDocx() rearanjează conținutul. Specificați { mode: 'textbox' } pentru a păstra geometria fixă a fiecărei pagini în schimb.

Cum pot verifica dacă un document îndeplinește PDF/A înainte de a-l converti?

Apelați Document.ValidatePdfA(level) (de exemplu '2b') și inspectați ValidationReport returnat — acesta raportează starea curentă fără a modifica documentul.

Pot converti doar un subset de pagini?

Da — construiește mai întâi un subset Document cu Document.ExtractPages(), apoi apelează metoda de conversie (ToHtml(), ToDocx(), ConvertToPdfA() și așa mai departe) pe acel subset.

Vezi și:

 Română