Bevezetés
Minden képesség a Aspose.PDF FOSS -ban TypeScript számára két osztályon keresztül érhető el: Document és Page. Document birtokolja az oldalak gyűjteményét és minden dokumentumszintű elemet — metaadatok, könyvjelzők, oldalcímkék, valamint mentés/betöltés — míg minden Page a doc.Pages -ben a egyetlen oldalra vonatkozó mindent birtokol: tartalom, annotációk és űrlapmezők. Amint ezekkel a két osztállyal meg vagyunk ismerkedve, a könyvtár további felülete — konverzió, annotációk, űrlapok, biztonság — valójában csak további metódusok ugyanazon két objektumon.
Ez a bejegyzés közelebbi vizsgálata annak a magfelület részeinek, amelyeket a bevezető bejegyzés csak említ átmenetileg: dokumentumok összeállítása más dokumentumokból, oldalak építése semmiből, könyvjelzőfa hozzáadása a navigációhoz, és a tartalom címkézése a hozzáférhetőség érdekében. Mind a négy egyszerű metódushívás — nincs külön modul importálásra, nincs extra függőség a @asposefoss/pdf csomagon kívül.
Ezek azok a műveletek, amelyek akkor merülnek fel, amikor egy PDF csővezeték túllépi a „nyiss meg egy fájlt, módosítsd, mentsd” lépést: jelentések összevonása több forrásból egy dokumentumba, oldalak programozott létrehozása sablon helyett, és a kimenet navigálható és hozzáférhető legyen, nem csak vizuálisan helyes.
Mi van benne
Dokumentumok összeállítása és átrendezése
Document.Split() egy dokumentumot egy új egyoldalas Document -re bont minden oldalra, az oldal sorrendjében. Document.ExtractPages() egy megadott, 1-alapú oldalszámokból álló halmazt másol egy új, önálló Document -be, a megadott sorrendben — ugyanaz az oldal ismétlődhet. Egy dokumentum oldalai másikba is másolhatók: Document.Append() a forrásdokumentum minden oldalát a céldokumentum végére másolja, és Document.InsertPage() egyetlen oldalt másol a dokumentumok között egy konkrét, 1-alapú pozícióban.
import { Document } from '@asposefoss/pdf';
const report = Document.OpenFile('report.pdf');
const parts = report.Split(); // one Document per page
const chapter = report.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
const cover = Document.OpenFile('cover.pdf');
report.InsertPage(1, cover.Pages[0]); // copy a single page across documents
report.Append(chapter); // copy chapter's pages onto report
report.WriteTo('assembled.pdf');
Több dokumentum is kombinálható egybe egyetlen hívásban a Document.Merge() segítségével, amely egy új Document létrehoz a neki átadott minden dokumentum minden oldalának másolataiból, sorrendben.
Oldalak építése a semmiből
Document.New() egy dokumentumot hoz létre a semmiből: nulla oldalt, ha a formátum ki van hagyva, vagy egy üres oldalt a megadott PageFormat alapján, ha az át van adva. További üres oldalak a Document.AddPage() segítségével jönnek létre, amely elfogad egy PageFormat-t (vagy egy meglévő Page-t, amelynek a méretét másolja). A szöveget a Page.AddText() segítségével rajzolják az oldalra, egy (x, y) pontban a PDF felhasználói térben elhelyezve.
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4); // one blank A4 page
doc.Pages[0].AddText('Hello', 72, 720, { fontSize: 14 });
doc.AddPage(PageFormat.A4.landscape()); // append more as you go
doc.WriteTo('scratch.pdf');
Könyvjelzők és dokumentumnavigáció
A dokumentum vázlata (a legtöbb PDF-olvasó által az oldal mellett megjelenített könyvjelző panel) a Document.GetOutlines() segítségével olvasható, és teljes egészében a Document.SetOutlines() használatával cserélhető le, mindegyik egy OutlineItem értékekből álló fát kezel. Minden OutlineItem egy Title-t, egy Dest célpontot, és opcionálisan Children-t tartalmaz a beágyazott bejegyzésekhez, valamint megjelenítési tippeket, mint például a Open (alapértelmezés szerint kibontva) és a Bold.
import { Document, OutlineItem } from '@asposefoss/pdf';
const items: OutlineItem[] = [
{ Title: 'Introduction', Dest: { name: 'intro' } },
{
Title: 'Chapters',
Open: true,
Children: [
{ Title: 'Chapter 1', Dest: { name: 'ch1' } },
{ Title: 'Chapter 2', Dest: { name: 'ch2' } },
],
},
];
doc.SetOutlines(items);
Az így elnevezett célpontok ({ name: 'intro' }) a dokumentum névvel ellátott célponttábláján keresztül kerülnek feloldásra, amelyet a Document.GetNamedDestinations() és a Document.SetNamedDestination() közvetlenül kezel, ha egy könyvjelzőnek olyan célpontra kell mutatnia, amely nem kapcsolódik oldal tartalmához.
Strukturált szöveg és akadálymentesítési címkézés
Document.GetStructTree() visszaadja a dokumentum logikai struktúrafáját (vagy null-t, ha a dokumentum nincs címkézve), és a Document.CreateStructTree() felépít egyet, a dokumentumot Címkézetté jelölve. Amint létezik egy struktúrafa, a Page.GetStructuredText() visszaadja az oldal szövegét TextBlock értékekként – pozicionált fragmentumok, amelyek már sorokba és bekezdés-szerű blokkokba vannak csoportosítva – ami a kézi címkézési lépés bemenete: a blokkok bejárása, annak eldöntése, melyek címsorok és melyek törzsszöveg, és a megfelelő elemek hozzáfűzése a fához.
function handTagPage(doc: Document, page: Page, heading: string): void {
const root = doc.GetStructTree();
if (!root) throw new Error('handTagPage: the document is not tagged yet');
for (const block of page.GetStructuredText()) {
const text = block.text.trim();
if (text.length === 0) continue;
const el = root.Append(text.startsWith(heading) ? 'H2' : 'P');
el.MarkContent(page, block.quad);
}
}
A címkézett struktúrafák az, amire az alábbi funkciók épülnek: a szemantikus HTML export újraformázza azt ahelyett, hogy egyszerű heuristikus elrendezésre támaszkodna, és a Document.ValidatePdfUa() ellenőrzi a dokumentumot a PDF/UA akadálymentesítési szabvány egy részhalmaza szerint, amely a címkézés meglétére támaszkodik.
Gyors kezdés
Telepítsd a csomagot, majd nyiss meg egy dokumentumot, válassz ki és kombinálj újra egy részhalmazt az oldalai közül, és mentsd el az eredményt:
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('report.pdf');
const chapter = doc.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
const cover = Document.OpenFile('cover.pdf');
doc.InsertPage(1, cover.Pages[0]); // copy a single page across documents
doc.Append(chapter); // copy chapter's pages onto doc
doc.WriteTo('assembled.pdf');
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 és licencelés
Aspose.PDF FOSS a TypeScript számára MIT licenc alatt kerül kiadásra, a forráskód a GitHub oldalon közzétéve. Nincs értékelési vízjel, használati korlát vagy külön licencfájl kezelése, és a könyvtár kereskedelmi termékekben jogdíj nélkül használható.
A csomag jelenleg a 0.1.0 verzióban van, ami az aktív korai fejlesztést tükrözi. A Node.js (>=22) az egyetlen futtatási követelmény, és a csomagnak nincsenek egyéb harmadik féltől származó függőségei.