Hogyan konvertáljunk PDF-dokumentumokat TypeScriptben
Ez az útmutató bemutatja, hogyan konvertálhatók a PDF tartalmak más formátumokra a Aspose.PDF FOSS segítségével a TypeScript számára. Page egyetlen oldalt exportál SVG-ként vagy raszteres képként; Document az egész fájlt exportálja HTML, Markdown vagy DOCX formátumba, és képes ellenőrizni és konvertálni egy dokumentumot a PDF/A formátumba. Node.js 22 vagy újabb szükséges.
Lépésről-lépésre útmutató
1. lépés: A csomag telepítése
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildEllenőrizd a telepítést úgy, hogy importálod a Document osztályt egy új TypeScript fájlba — ennek a sornak hibamentesen kell lefutnia a csomag telepítése után:
import { Document } from '@asposefoss/pdf';2. lépés: Szükséges osztályok importálása
Importáld a(z) Document modult a fájl megnyitásához; az alább használt konverziós módszerek közvetlenül a visszaadott Document és Page példányokon kerülnek meghívásra, így további importokra nincs szükség:
import { Document } from '@asposefoss/pdf';3. lépés: Oldal konvertálása SVG-re vagy raszteres képre
Page.ToSvg() egy önálló <svg> karakterláncot ad vissza. Page.ToImage() raszteres bájtokként rendereli az oldalt; scale a PDF natív 72 DPI-jéhez viszonyítva van, így scale: 2 144 DPI-n renderel:
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
4. lépés: Dokumentum konvertálása HTML formátumba vagy Markdownba
Document.ToHtml() alapértelmezett (szemantikus) módban a struktúrafából származó tartalmat átrendezi címekbe és bekezdésekbe; add meg a(z) { mode: 'fixed' } paramétert, ha minden oldalt pozícionált SVG-ként és abszolút módon elhelyezett szövegként szeretnél újraalkotni. Document.ToMarkdown() GFM Markdown-et generál a teljes dokumentumhoz:
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
A szemantikus mód a Document.GetStructTree() / Document.CreateStructTree() által épített struktúrafát olvassa — egy címkézetlen dokumentumnál egy heurisztikus törzshöz tér vissza, és az export elveszíti a címsor-szerkezetet.
5. lépés: Dokumentum konvertálása DOCX-be
Document.ToDocx() .docx bájtot ad vissza, a tartalom átrendezve és a képek belül csomagolva; add meg a(z) { mode: 'textbox' } paramétert, ha minden oldal saját rögzített geometriáját szeretnéd megtartani ahelyett, hogy átrendezné a tartalmat:
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
6. lépés: Érvényesítés és átalakítás PDF/A
Document.ValidatePdfA(level), Document.ValidatePdfX(level), és Document.ValidatePdfUa() egy ValidationReport visszaad, amely leírja, hogy a dokumentum megfelel-e a megnevezett szabványnak. Document.ConvertToPdfA(level, opts) egy ConversionReport ad vissza, felsorolva, hogy milyen javításokat alkalmazott és mely problémák maradtak megoldatlanul. Futtassa az átalakítást egy Document.ExtractPages() másolaton, ha az élő dokumentumot továbbra is nem konvertált állapotban kell menteni:
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();Gyakori problémák és javítások
Document.ToHtml() elveszíti a címsor struktúráját. A szemantikus mód bejárja a struktúrafát, ezért egy címkézési lépés után kell futtatni — akár Document.AutoTag() vagy kézzel írt címkézésen keresztül StructTreeRoot.Append(). ToHtml() visszatér egy heurisztikus testre, amikor GetStructTree() returns null.
ConvertToPdfA() módosítja azt a fájlt, amelyet konvertálatlanul szeretnél megtartani. Futtasd a konverziót egy másolaton innen Document.ExtractPages(), majd mentsd el a másolatot külön — ConvertToPdfA() módosítja azt a dokumentumot, amelyen meghívják.
ValidatePdfA() hibákat jelent az első futásakor. Gyakori ok a beágyazatlan szabványos betűtípusok és egy hiányzó /OutputIntent — ellenőrizze report.Passed és az egyes szabályszerinti megállapításokat, hogy lásd, mely feltételek nem teljesültek.
Page.ToImage() a kimenet alacsony felbontásúnak tűnik. scale relatív 72 DPI-hez; emeld (például { scale: 2 } 144 DPI-re) a nyomtatási minőségű kimenethez.
Gyakran Ismételt Kérdések
Mi a különbség a szemantikus és a fix HTML exportálás között?
A szemantikus mód a dokumentumot a struktúrafájából átalakítja olyan jelöléssé, amely bármilyen szélességű böngészőben jól olvasható. A fix mód minden oldalt pozícionált SVG-ként és abszolút elhelyezésű szövegként reprodukál, pontosan megegyezve az eredeti elrendezéssel.
Megőrzi a Document.ToDocx() az eredeti oldalelrendezést?
Alapértelmezés szerint a ToDocx() átalakítja a tartalmat. Adja meg a { mode: 'textbox' } opciót, ha inkább az egyes oldalak saját fix geometriáját szeretné megtartani.
Hogyan ellenőrizhetem, hogy egy dokumentum megfelel-e a PDF/A követelményeinek, mielőtt konvertálnám?
Hívja meg a Document.ValidatePdfA(level) (például '2b') és vizsgálja meg a visszaadott ValidationReport értéket — ez jelentést ad a jelenlegi állapotról a dokumentum módosítása nélkül.
Csak az oldalak egy részhalmazát konvertálhatom?
Igen — először építs egy Document részhalmazt Document.ExtractPages() segítségével, majd hívd meg a konverziós metódust (ToHtml(), ToDocx(), ConvertToPdfA(), és így tovább) ezen a részhalmazon.