Core API
Alap API
Ez az útmutató bemutatja, hogyan nyissunk, szerkesszünk, állítsunk össze és mentsünk PDF dokumentumokat a Document és Page osztályokkal — amelyek a belépési pontok minden művelethez a Aspose.PDF FOSS-ban a TypeScript számára. A Document betölti, létrehozza, összeállítja és elmenti a teljes PDF fájlokat; a Page, amely a doc.Pages révén érhető el, lehetővé teszi az egyes oldalak szöveg, kép, annotáció és tartalomfolyam műveleteit.
Dokumentum életciklus
Document.OpenFile() egy PDF-et nyit meg egy fájlútvonalról; Document.Open() egy memóriában lévő Uint8Array-t fogad el. Az oldalakat helyben lehet ellenőrizni és szerkeszteni, és a Document.WriteTo() visszaírja az eredményt — opcionálisan xref-stream és object-stream tömörítéssel.
import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams
Oldalak felosztása, egyesítése és kinyerése
Document.Split() oldalanként egy Document-t ad vissza. Document.ExtractPages() egy 1-től kezdődő, ismétléseket megengedő oldallistát fogad, és egy új Document-t ad vissza csak ezekkel az oldalakkal. Document.Append() és Document.InsertPage() oldalakat másolnak dokumentumok között, és a Document.Merge() több dokumentumot egyesít egybe.
const parts = doc.Split(); // one Document per page
const chapter = doc.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
docA.Append(docB); // copy all of docB's pages onto docA
docA.InsertPage(1, docB.Pages[0]); // copy a single page across documents
Új dokumentum létrehozása
Document.New() egy üres dokumentumot indít egy adott PageFormat helyen. Page.AddText() pozícionált szöveget helyez el, és a Document.AddPage() további oldalakat fűz hozzá, beleértve egy elforgatott formátumot, például a PageFormat.A4.landscape()-t.
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');Vízjelek és oldalszámok
Page.AddText() támogatja továbbá a forgatást, a színt és az átlátszóságot, ami elegendő ahhoz, hogy egy oldalszámot és egy átlós vízjelet jelenítsen meg további osztályok nélkül.
const doc = Document.OpenFile('in.pdf');
const page = doc.Pages[0];
// Page number, right-aligned near the bottom-right corner.
const w = page.Rect[2] - page.Rect[0];
page.AddText(`Page ${page.Number}`, w - 40, 20, { fontSize: 10, align: 'right' });
// Semi-transparent diagonal watermark, centered on the page.
page.AddText('DRAFT', page.Rect[2] / 2, page.Rect[3] / 2, {
font: 'Times-Bold', fontSize: 64, color: [0.7, 0.7, 0.7], opacity: 0.4, rotate: 45, align: 'center',
});
doc.WriteTo('out.pdf');Tartalmi adatfolyam introspekciója
parseContentStream() dekódolja egy oldal nyers /Contents adatfolyamát operátor/operandus párok listájává, és serializeContentStream() visszaalakítja a szerkesztett operátorlistát bájtokká.
import { parseContentStream, serializeContentStream } from '@asposefoss/pdf';
const ops = parseContentStream(doc.Pages[0].Contents);
// ops: { operator: string, operands: PdfObject[], inlineImage?: {...} }[]
for (const op of ops) {
if (op.operator === 'Tj') console.log('text op:', op.operands);
}
const bytes = serializeContentStream(ops); // round-trips operators + operands
Többoszlopos szövegáramlás
Page.AddTextBlock() egy hosszú szövegkarakterláncot egy téglalap alakú régióba helyez, és visszaadja a nem elférő szöveget, amelyet egy második hívásba lehet átadni a folytatáshoz egy másik oszlopban.
const rest = page.AddTextBlock(longText, [72, 600, 200, 150], {
font: 'Times-Roman', fontSize: 11, align: 'justify', valign: 'top', leading: 14,
});
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // continue into a 2nd column
Tippek és bevált gyakorlatok
- Használja a
Document.OpenFile()fájlútvonalakhoz és aDocument.Open()a memóriában lévőUint8Arrayadatokhoz. - Az olyan metódusoknak átadott oldalszámok, mint a
RemovePage()és aExtractPages(), 1-től kezdődnek, míg adoc.Pagesegy 0-tól kezdődő tömb. - Adja át a
{ compressed: true }aDocument.WriteTo()-nek, hogy engedélyezze az xref-stream és object-stream tömörítést a kimeneten. - A
Document.ExtractPages()ismétlődő oldalszámokat is elfogad, így ugyanaz az forrásoldal többször is megjelenhet az eredményben. - Olvassa be a
page.Rect-t, hogy a pozíciókat az oldal tényleges szélessége és magassága alapján számolja ki, a koordináták kézi kódolása helyett.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
Document.Open() / OpenFile() kivételt dob InvalidPasswordError | A PDF jelszóval védett, és nem lett megadva jelszó (vagy a megadott helytelen). | Adja át { password: '...' } a Document.OpenFile() / Document.Open() |
RemovePage() eltávolítja a hibás oldalt | Az RemovePage() számára átadott oldalszámok 1-alapúak, nem 0-alapúak | Adj meg egy 1-bázisú oldalszámot, amely különbözik a doc.Pages tömb indexelésétől |
WriteTo() kimenet nagyobb a vártnál | Az alapértelmezett mentés nem használ xref/object-stream tömörítést | Add át { compressed: true } a Document.WriteTo()nek |
FAQ
A Document.Open() elfogadja-e a fájlútvonalakat és a memória-beli adatokat is?
A Document.OpenFile() fájlútvonalról nyit; a Document.Open() egy Uint8Array memóriában lévő bájtot fogad el.
Az oldal számozás 0-alapú vagy 1-alapú?
Mindkettő, a API-tól függően: a doc.Pages egy egyszerű 0-alapú tömb, de az olyan módszerek, mint a RemovePage() és a ExtractPages(), 1-alapú oldalszámokat használnak.
Titkosíthatok egy dokumentumot a mentés során?
Igen — adjon át egy encrypt opciót a WriteTo() / Save() számára algorithm: 'aes256' | 'aes128' | 'rc4' és opcionális felhasználói/tulajdonosi jelszavakkal.
Hogyan csökkenthetem a kimeneti fájl méretét?
Adja át a { compressed: true } értéket a Document.WriteTo()-nek, hogy engedélyezze az xref-stream és object-stream tömörítést.
Megvizsgálhatom egy oldal nyers content-stream operátorait?
Igen — a parseContentStream(doc.Pages[0].Contents) visszaadja az operátorlistát, és a serializeContentStream() visszaalakítja a szerkesztett listát bájtokká.
API Reference Összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
Document | Központi belépési pont PDF dokumentumok létrehozásához, betöltéséhez és mentéséhez |
Document.OpenFile() / Document.Open() | PDF betöltése fájlútról vagy memóriában lévő bájtokból |
Document.New() | Üres dokumentum létrehozása a megadott PageFormat alapján |
Document.WriteTo() / Document.Save() | A dokumentumot írja fájlútra vagy adja vissza bájtokként |
Document.Split() / Document.Merge() / Document.ExtractPages() | Oldalak felosztása, összefűzése és kinyerése dokumentumok között |
Document.Append() / Document.InsertPage() | Másolja át az oldalakat egy dokumentumból a másikba |
Page | Egyetlen PDF oldal; elérhetővé teszi a szöveg, kép, annotáció és content-stream metódusait |
Page.AddText() / Page.AddTextBlock() | Adj hozzá pozicionált vagy folyó szöveget egy oldalhoz |
parseContentStream() / serializeContentStream() | Elemezze és újrasorolja egy oldal nyers content-stream operátorait |