Εισαγωγή

Κάθε δυνατότητα στο Aspose.PDF FOSS για TypeScript επιτυγχάνεται μέσω δύο κλάσεων: Document και Page. Το Document διαχειρίζεται τη συλλογή σελίδων και όλα όσα αφορούν το έγγραφο — μεταδεδομένα, σελιδοδείκτες, ετικέτες σελίδων και αποθήκευση/φόρτωση — ενώ κάθε Page στο doc.Pages διαχειρίζεται ό,τι σχετίζεται με εκείνη τη σελίδα: περιεχόμενο, σημειώσεις και πεδία φόρμας. Μόλις εξοικειωθείτε με αυτές τις δύο κλάσεις, το υπόλοιπο της βιβλιοθήκης — μετατροπές, σημειώσεις, φόρμες, ασφάλεια — είναι ουσιαστικά μόνο περισσότερες μέθοδοι στα ίδια δύο αντικείμενα.

Αυτή η ανάρτηση είναι μια πιο λεπτομερής ματιά στα τμήματα της βασικής επιφάνειας που η introductory post αναφέρει μόνο εν συντομία: η συναρμολόγηση εγγράφων από άλλα έγγραφα, η δημιουργία σελίδων από το μηδέν, η προσθήκη δένδρου σελιδοδεικτών για πλοήγηση και η σήμανση περιεχομένου για προσβασιμότητα. Και τα τέσσερα είναι απλές κλήσεις μεθόδων — χωρίς ξεχωριστό μοντέλο για εισαγωγή, χωρίς πρόσθετη εξάρτηση εκτός του πακέτου @asposefoss/pdf.

Αυτές είναι οι λειτουργίες που εμφανίζονται όταν μια αλυσίδα PDF υπερβεί το «άνοιγμα ενός αρχείου, αλλαγή του, αποθήκευση»: η συγχώνευση αναφορών από πολλές πηγές σε ένα έγγραφο, η δημιουργία σελίδων προγραμματιστικά αντί να ξεκινάτε από ένα πρότυπο, και η δημιουργία εξόδου που είναι πλοηγήσιμη και προσβάσιμη αντί να είναι μόνο οπτικά σωστή.


Τι περιλαμβάνεται

Συναρμολόγηση και αναδιοργάνωση εγγράφων

Document.Split() χωρίζει ένα έγγραφο σε ένα νέο μονοσέλιδο Document ανά σελίδα, με τη σειρά των σελίδων. Το Document.ExtractPages() αντιγράφει ένα δοσμένο σύνολο αριθμών σελίδων (από 1) σε ένα νέο αυτόνομο Document, με τη δοσμένη σειρά — η ίδια σελίδα μπορεί να επαναληφθεί. Σελίδες από ένα έγγραφο μπορούν επίσης να αντιγραφούν σε άλλο: το Document.Append() αντιγράφει κάθε σελίδα του πηγαίου εγγράφου στο τέλος του στόχου, και το Document.InsertPage() αντιγράφει μια ενιαία σελίδα μεταξύ εγγράφων σε συγκεκριμένη θέση (από 1).

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');

Πολλά έγγραφα μπορούν επίσης να συνδυαστούν σε ένα σε μια ενιαία κλήση με Document.Merge(), η οποία δημιουργεί ένα νέο Document από αντίγραφα κάθε σελίδας κάθε εγγράφου που του μεταβιβάζεται, με τη σωστή σειρά.

Δημιουργία Σελίδων από το Μηδέν

Document.New() δημιουργεί ένα έγγραφο από το μηδέν: μηδενικές σελίδες όταν παραλείπεται μια μορφή, ή μία κενή σελίδα του δεδομένου PageFormat όταν αυτή παρέχεται. Επιπλέον κενές σελίδες προέρχονται από Document.AddPage(), η οποία δέχεται επίσης ένα PageFormat (ή ένα υπάρχον Page για να αντιγράψει το μέγεθός του). Το κείμενο σχεδιάζεται πάνω σε μια σελίδα με Page.AddText(), τοποθετημένο σε σημείο (x, y) στο χώρο χρήστη του PDF.

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');

Σελιδοδείκτες και Πλοήγηση Εγγράφου

Η δομή του εγγράφου (ο πίνακας σελιδοδεικτών που εμφανίζουν οι περισσότεροι αναγνώστες PDF δίπλα στη σελίδα) διαβάζεται με Document.GetOutlines() και αντικαθίσταται εντελώς με Document.SetOutlines(), το καθένα λειτουργεί με ένα δέντρο τιμών OutlineItem. Κάθε OutlineItem περιέχει ένα Title, έναν προορισμό Dest, και προαιρετικά Children για ένθετες καταχωρήσεις, καθώς και ενδείξεις εμφάνισης όπως Open (επεκτεινόμενο από προεπιλογή) και 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);

Οι προορισμοί που ονομάζονται με αυτόν τον τρόπο ({ name: 'intro' }) επιλύονται μέσω του πίνακα ονομαστικών προορισμών του εγγράφου, τον οποίο Document.GetNamedDestinations() και Document.SetNamedDestination() διαχειρίζονται άμεσα όταν ένας σελιδοδείκτης χρειάζεται να δείξει σε έναν προορισμό που δεν συνδέεται με το περιεχόμενο της σελίδας.

Δομημένο Κείμενο και Επισήμανση Προσβασιμότητας

Document.GetStructTree() επιστρέφει το λογικό δέντρο δομής του εγγράφου (ή null όταν το έγγραφο δεν είναι επισημασμένο), και Document.CreateStructTree() δημιουργεί ένα, σημειώνοντας το έγγραφο ως Tagged. Μonce που υπάρχει δέντρο δομής, το Page.GetStructuredText() επιστρέφει το κείμενο της σελίδας ως τιμές TextBlock — τοποθετημένα τμήματα που έχουν ήδη ομαδοποιηθεί σε γραμμές και μπλοκ παρόμοια με παραγράφους — το οποίο αποτελεί την είσοδο για μια διαδικασία χειροκίνητης επισήμανσης: περιπλανάται τα μπλοκ, αποφασίζει ποια είναι κεφαλίδες έναντι κυρίως κειμένου, και προσθέτει τα αντίστοιχα στοιχεία στο δέντρο.

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);
  }
}

Ένα δένδρο δομής με ετικέτες είναι αυτό πάνω στο οποίο χτίζουν οι επόμενες λειτουργίες: η εξαγωγή HTML σημασιολογικά επαναδιατάσσει το περιεχόμενο αντί να επιστρέφει σε μια απλή ευρετική διάταξη, και το Document.ValidatePdfUa() ελέγχει το έγγραφο έναντι ενός υποσυνόλου του προτύπου προσβασιμότητας PDF/UA που εξαρτάται από την παρουσία ετικετών.


Γρήγορη Εκκίνηση

Εγκαταστήστε το πακέτο, στη συνέχεια ανοίξτε ένα έγγραφο, εξάγετε και επανασυνδυάστε ένα υποσύνολο των σελίδων του, και αποθηκεύστε το αποτέλεσμα:

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
import { 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');

Υποστηριζόμενες Μορφές

ΜορφήΕπέκτασηΑνάγνωσηΕγγραφή
PDFpdf
Markdownmd
SVGsvg
TIFFtiff
DOCXdocx
HTMLhtml
PNGpng
EPUBepub

Ανοιχτός Κώδικας & Άδεια

Aspose.PDF FOSS για TypeScript κυκλοφορεί υπό την άδεια MIT, με τον πηγαίο κώδικα δημοσιευμένο στο GitHub. Δεν υπάρχει υδατογράφημα αξιολόγησης, όριο χρήσης ή ξεχωριστό αρχείο άδειας προς διαχείριση, και η βιβλιοθήκη μπορεί να χρησιμοποιηθεί σε εμπορικά προϊόντα χωρίς δικαιώματα.

Το πακέτο είναι αυτή τη στιγμή στην έκδοση 0.1.0, αντανακλώντας ενεργή ανάπτυξη πρώιμου σταδίου. Το Node.js (>=22) είναι η μοναδική απαίτηση χρόνου εκτέλεσης, και το πακέτο δεν έχει άλλες εξαρτήσεις τρίτων.


Ξεκινώντας

Σχετικοί Πόροι