Bevezetés
Az bevezető bejegyzés bemutatja a konverzió alapvető felépítését: Document.ToHtml(), Document.ToMarkdown() és Document.ToDocx(), mindegyik argumentumok nélkül hívva, hogy ésszerű alapértelmezést kapjunk. Ezeknek a metódusoknak mindegyike egy beállítási objektumot vár, amely megváltoztatja a kimenetet – szemantikus jelölés versus pixel-pontos másolat, újrafolyható Word-dokumentum versus egy, amely minden oldal pontos elrendezését reprodukálja.
Ez a bejegyzés tárgyalja ezeket a beállításokat, valamint egy konverziós irányt, amelyet a bevezető egyáltalán nem érint: egy dokumentum érvényesítése a PDF/A, PDF/X és PDF/UA szabványok szerint, és annak helyreigazítása a Document.ConvertToPdfA() és hozzá kapcsolódó szabványok megfelelősége felé.
Mi van benne
HTML Export: Szemantikus vs Rögzített
Document.ToHtml() opciók nélkül hívva bejárja a dokumentum struktúrafáját, és újrafolyható jelölést bocsát ki – címsorok és bekezdések, amelyek bármilyen szélességű böngészőben természetesen olvashatók. Ez a mód a dokumentum előzetes címkézésétől függ (Document.CreateStructTree() vagy egy ekvivalens címkéző lépés); struktúrafájl nélkül az export egy egyszerű heurisztikus törzshöz tér vissza a valódi szemantikus jelölés helyett. A { mode: 'fixed', fonts: 'embed' } megadása teljesen más megjelenítési stratégiára vált: minden oldal pozicionált SVG-vé és abszolút elhelyezésű szöveggé alakul, minden beágyazható betűkészlet-program beágyazva base64-kódolt WOFF @font-face formátumban, így az oldal ugyanúgy néz ki anélkül, hogy az olvasónak telepítve lennének a betűk.
// Semantic mode reflows from the structure tree, so this must run after the
// tagging pass: ToHtml falls back to a heuristic body when GetStructTree() is
// null, and the export loses its heading structure silently.
const semantic = doc.ToHtml();
const fixed = doc.ToHtml({ mode: 'fixed', fonts: 'embed' });
A két kimenet különböző célokat szolgál: a szemantikus HTML a megfelelő választás, ha a tartalmat a weben szeretnéd olvasni vagy újra közzétenni, míg a rögzített HTML akkor szükséges, amikor az oldal pontos vizuális elrendezésének módosítás nélkül kell megmaradnia a böngészőben.
Word és vektor exportok
Document.ToDocx() opciók nélkül meghívva egy újrafolyó .docx-t hoz létre: bekezdéseket és képeket, amelyeket egy szövegszerkesztő újraformázhat és szerkeszthet, mint egy normál dokumentumot. A { mode: 'textbox' } átadása ehelyett megőrzi az egyes oldalak saját geometriai elrendezését, a tartalmat rögzített szövegdobozokba helyezve, ahelyett, hogy újrafolyna — közelebb áll egy hűséges vizuális másolathoz, mint egy szerkeszthető dokumentumhoz. A Page.ToSvg() egyetlen oldalt állít elő önálló <svg> karakterláncként, ami akkor hasznos, ha egy vektoros, felbontásfüggetlen másolatra van szükség egy oldalról, ahelyett, hogy raszteres képet használna.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
Érvényesítés és konvertálás PDF/A, PDF/X és PDF/UA formátumokra
Document.ValidatePdfA(), Document.ValidatePdfX() és Document.ValidatePdfUa() mindegyike ellenőrzi a dokumentumot a megfelelő szabvány gondosan összeállított, géppel ellenőrizhető részhalmaza alapján — PDF/A (ISO 19005) hosszú távú archiváláshoz, PDF/X (ISO 15930) nyomtatási gyártáshoz és PDF/UA (ISO 14289-1) hozzáférhetőséghez — és egy ValidationReport ad vissza egy Passed jelzővel, amely összefoglalja az eredményt. A Document.ConvertToPdfA() (és a megfelelő ConvertToPdfX()/ConvertToPdfUa()) megkísérli a dokumentumot az adott szint felé javítani, majd újra ellenőriz, és egy ConversionReport ad vissza, amely felsorolja, mely műveleteket alkalmazta ténylegesen, és mely problémák maradtak megoldatlanul.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
const pdfa = doc.ValidatePdfA('2b');
console.log(`validate: PDF/A-2b ${pdfa.Passed ? 'passes' : 'fails'}`);
// Conversion runs against a copy: the live document is still saved
// unconverted, so ConvertToPdfA must never touch it directly.
const pages = doc.Pages;
const allPages: number[] = [];
for (let i = 1; i <= pages.length; i++) allPages.push(i);
const copy = doc.ExtractPages(allPages);
const conversion = copy.ConvertToPdfA('2b');
console.log(`pdf/a convert: ${conversion.applied.length} action(s) applied, `
+ `${conversion.unresolved.length} unresolved`);
console.log(`result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);
A konvertálás nem garantált, hogy egy lépésben teljes megfelelőséget ér el — a fennmaradó hibák gyakori okai a beágyazott nem betűkészletek és a hiányzó kimeneti szándék, amelyek mindkettő megjelenik a conversion.unresolved dokumentumban.
Gyors kezdés
Telepítsd a csomagot, majd rendereld egy oldalt SVG-re és a teljes dokumentumot újrafolyó HTML és DOCX formátumba:
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildimport { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const html = doc.ToHtml(); // reflowable HTML (falls back without a structure tree)
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
// fs.writeFileSync('page1.svg', svg);
// fs.writeFileSync('out.html', html);
// fs.writeFileSync('out.docx', docx);
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás |
|---|---|---|---|
| ✓ | ✓ | ||
| Markdown | md | ✓ | ✓ |
| SVG | svg | ✓ | ✓ |
| TIFF | tiff | ✓ | ✓ |
| DOCX | docx | — | ✓ |
| HTML | html | — | ✓ |
| PNG | png | — | ✓ |
| EPUB | epub | — | ✓ |
Nyílt forráskód & Licencelés
Aspose.PDF FOSS a TypeScript számára MIT licenc alatt kerül kiadásra, a forrás a GitHub helyen közzétett. Nincs értékelési vízjel, használati korlátozás vagy külön licencfájl a kezelendő, és a könyvtár kereskedelmi termékekben jogdíjmentesen használható.
A csomag jelenleg a 0.1.0-s verzióban van, ami az aktív korai fejlesztési szakaszt tükrözi. A Node.js (>=22) az egyetlen futtatási követelmény, és a csomagnak nincsenek más harmadik féltől származó függőségei.