Πώς να μετατρέψετε έγγραφα PDF σε TypeScript
Αυτός ο οδηγός δείχνει πώς να μετατρέψετε το περιεχόμενο PDF σε άλλες μορφές με το Aspose.PDF FOSS για TypeScript. Το Page εξάγει μια μόνο σελίδα ως SVG ή ραστερ εικόνα· το Document εξάγει ολόκληρο το αρχείο ως HTML, Markdown ή DOCX, και μπορεί να επικυρώσει και να μετατρέψει ένα έγγραφο σε PDF/A. Απαιτεί Node.js 22 ή νεότερη έκδοση.
Οδηγός Βήμα-βήμα
Βήμα 1: Εγκαταστήστε το Πακέτο
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Επαληθεύστε την εγκατάσταση εισάγοντας την κλάση Document σε ένα νέο αρχείο TypeScript — αυτή η γραμμή θα πρέπει να λυθεί χωρίς σφάλμα μόλις το πακέτο εγκατασταθεί:
import { Document } from '@asposefoss/pdf';Βήμα 2: Εισάγετε τις Απαιτούμενες Κλάσεις
Εισάγετε το Document για να ανοίξετε το αρχείο· οι μέθοδοι μετατροπής που χρησιμοποιούνται παρακάτω καλούνται απευθείας στα επιστρεφόμενα αντικείμενα Document και Page, οπότε δεν απαιτούνται περαιτέρω εισαγωγές:
import { Document } from '@asposefoss/pdf';Βήμα 3: Μετατροπή μιας Σελίδας σε SVG ή σε Raster Εικόνα
Page.ToSvg() επιστρέφει μια ανεξάρτητη συμβολοσειρά <svg>. Το Page.ToImage() αποδίδει τη σελίδα σε raster bytes· το scale είναι σχετικό με τα εγγενή 72 DPI του PDF, έτσι το scale: 2 αποδίδεται στα 144 DPI:
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: Μετατροπή ενός Εγγράφου σε HTML ή Markdown
Το Document.ToHtml() στη προεπιλεγμένη (σημασιολογική) λειτουργία του επαναδιατάσσει το περιεχόμενο από το δέντρο δομής σε τίτλους και παραγράφους· περάστε το { mode: 'fixed' } για να αναπαραχθεί κάθε σελίδα ως τοποθετημένο SVG και απόλυτα τοποθετημένο κείμενο. Το Document.ToMarkdown() παράγει GFM Markdown για ολόκληρο το έγγραφο:
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
Η σημασιολογική λειτουργία διαβάζει το δέντρο δομής που δημιουργείται από το Document.GetStructTree() / Document.CreateStructTree() — σε ένα μη επισημασμένο έγγραφο επαναφέρεται σε μια ευρετική δομή σώματος και η εξαγωγή χάνει τη δομή των τίτλων.
Βήμα 5: Μετατροπή ενός Εγγράφου σε DOCX
Το Document.ToDocx() επιστρέφει .docx bytes με το περιεχόμενο επαναδιαταγμένο και τις εικόνες συσκευασμένες μέσα· περάστε το { mode: 'textbox' } για να διατηρήσετε τη δική της σταθερή γεωμετρία σε κάθε σελίδα αντί για επαναδιάταξη:
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: Επικύρωση και Μετατροπή σε PDF/A
Document.ValidatePdfA(level), Document.ValidatePdfX(level) και Document.ValidatePdfUa() επιστρέφουν ένα ValidationReport που περιγράφει αν το έγγραφο πληροί το ονομασμένο πρότυπο. Document.ConvertToPdfA(level, opts) επιστρέφει ένα ConversionReport που καταγράφει ποιες διορθώσεις εφάρμοσε και ποια ζητήματα παραμένουν ανεπίλυτα. Εκτελέστε τη μετατροπή σε ένα Document.ExtractPages() αντίγραφο όταν το ενεργό έγγραφο πρέπει ακόμη να αποθηκευτεί αμετάβλητο:
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();Κοινά Προβλήματα και Διορθώσεις
Document.ToHtml() χάνει τη δομή των επικεφαλίδων. Η λειτουργία Semantic περιηγείται στο δέντρο δομής, επομένως πρέπει να εκτελείται μετά από ένα πέρασμα σήμανσης — είτε Document.AutoTag() ή χειρογραφική σήμανση μέσω StructTreeRoot.Append(). ToHtml() επιστρέφει σε ένα ευρετικό σώμα όταν GetStructTree() returns null.
ConvertToPdfA() αλλάζει το αρχείο που θέλατε να διατηρήσετε αμετάφραστο. Εκτελέστε τη μετατροπή σε ένα αντίγραφο από Document.ExtractPages(), στη συνέχεια αποθηκεύστε το αντίγραφο ξεχωριστά — ConvertToPdfA() τροποποιεί το έγγραφο στο οποίο καλείται.
ValidatePdfA() αναφέρει αποτυχίες την πρώτη φορά που εκτελείται. Μια κοινή αιτία είναι οι μη ενσωματωμένες τυπικές γραμματοσειρές και ένα ελλιπές /OutputIntent — έλεγχος report.Passed και τα αποτελέσματα των επιμέρους κανόνων για να δείτε ποιες συνθήκες δεν πληρούνται.
Page.ToImage() η έξοδος φαίνεται χαμηλής ανάλυσης. scale είναι σχετικό με 72 DPI· αυξήστε το (για παράδειγμα { scale: 2 } για 144 DPI) για έξοδο εκτύπωσης υψηλής ποιότητας.
Συχνές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ της σημασιολογικής και της σταθερής εξαγωγής HTML?
Η σημασιολογική λειτουργία αναδιαρθρώνει το έγγραφο από το δέντρο δομής του σε σήμανση που διαβάζεται καλά σε ένα πρόγραμμα περιήγησης σε οποιοδήποτε πλάτος. Η σταθερή λειτουργία αναπαράγει κάθε σελίδα ως τοποθετημένο SVG και απόλυτα τοποθετημένο κείμενο, ταιριάζοντας ακριβώς με την αρχική διάταξη.
Διατηρεί το Document.ToDocx() την αρχική διάταξη της σελίδας;
Από προεπιλογή, το ToDocx() αναδιαρθρώνει το περιεχόμενο. Χρησιμοποιήστε το { mode: 'textbox' } για να διατηρήσετε τη σταθερή γεωμετρία κάθε σελίδας.
Πώς μπορώ να ελέγξω αν ένα έγγραφο πληροί το PDF/A πριν το μετατρέψω;
Καλέστε το Document.ValidatePdfA(level) (π.χ. '2b') και εξετάστε το επιστρεφόμενο ValidationReport — αυτό αναφέρει την τρέχουσα κατάσταση χωρίς να τροποποιήσει το έγγραφο.
Μπορώ να μετατρέψω μόνο ένα υποσύνολο σελίδων;
Ναι — δημιουργήστε πρώτα ένα υποσύνολο Document με Document.ExtractPages(), στη συνέχεια καλέστε τη μέθοδο μετατροπής (ToHtml(), ToDocx(), ConvertToPdfA(), κ.λπ.) σε αυτό το υποσύνολο.