Aspose.PDF FOSS for C++ Χαρακτηριστικά

Aspose.PDF FOSS for C++ Χαρακτηριστικά

Aspose.PDF FOSS για C++ Χαρακτηριστικά

Aspose.PDF FOSS for C++ είναι μια βιβλιοθήκη C++20 για δημιουργία, άνοιγμα, τροποποίηση και αποθήκευση εγγράφων PDF. Αυτή η σελίδα παρουσιάζει τις κύριες περιοχές δυνατότητας και τις κλάσεις που λειτουργούν ως σημεία εισόδου τους. Κάθε περιοχή καλύπτεται εκτενώς στη δική της σελίδα οδηγού προγραμματιστή.


Διαχείριση Εγγράφων

Aspose::Pdf::Document είναι το ριζικό αντικείμενο για κάθε λειτουργία. Ανοίγει ένα υπάρχον αρχείο από μια διαδρομή, εκθέτει τη συλλογή σελίδων μέσω Pages(), και αποθηκεύει τις αλλαγές με Save(). Optimize() και OptimizeResources() μειώνουν το μέγεθος του αρχείου αφαιρώντας αχρησιμοποίητους ή διπλότυπους πόρους.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    auto& pages = doc.Pages();
    pages.Add();                 // append a blank page
    pages.Delete(1);             // remove the original first page

    doc.Optimize();
    doc.Save("output.pdf");
}

Εξαγωγή Κειμένου

Aspose::Pdf::Text::TextAbsorber διασχίζει ένα έγγραφο ή μία μόνο σελίδα και συλλέγει απλό κείμενο, το οποίο ανακτάται με Text() μετά την κλήση του Visit(). TextFragmentAbsorber εκτελεί την ίδια διαδρομή αλλά επιστρέφει μεμονωμένα αντικείμενα TextFragment μέσω TextFragments(), παρέχοντας πρόσβαση στη θέση και την κατάσταση κειμένου κάθε τμήματος.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("report.pdf");

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);

    std::cout << absorber.Text() << "\n";
}

Απόδοση σε ραστερ εικόνες

Οι συσκευές απόδοσης σελίδων μετατρέπουν ένα Page σε εικόνα raster. Τα BmpDevice, PngDevice, JpegDevice και TiffDevice μοιράζονται την ίδια υπογραφή Process(page, output) και κατασκευάζονται με ένα Resolution που ορίζει την ανάλυση εξόδου DPI.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>

int main() {
    Aspose::Pdf::Document doc("report.pdf");

    Aspose::Pdf::Devices::BmpDevice device(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.bmp", std::ios::binary);
    device.Process(doc.Pages()[1], out);
}

Κρυπτογράφηση

Document::Encrypt() προστατεύει ένα έγγραφο με κωδικό χρήστη (απαιτείται για το άνοιγμά του) και κωδικό ιδιοκτήτη (απαιτείται για την αλλαγή των δικαιωμάτων), χρησιμοποιώντας έναν αλγόριθμο που επιλέγεται από το enum CryptoAlgorithm: RC4x40, RC4x128, AESx128 ή AESx256. Το IsEncrypted() αναφέρει την τρέχουσα κατάσταση και το Decrypt() αφαιρεί την προστασία από ένα ήδη ανοιγμένο έγγραφο.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions::PrintDocument,
                Aspose::Pdf::CryptoAlgorithm::AESx256);

    doc.Save("encrypted.pdf");
}

Σχόλια

Τα σχόλια προσθέτουν ορατές σημειώσεις, σχήματα και σήμανση σε μια σελίδα. Κάθε τύπος σχολίου κληρονομεί από το Annotation και κατασκευάζεται με το στόχο Page και μια θέση Rectangle, μετά προστίθεται στη σελίδα μέσω του Σχόλια() (ένα AnnotationCollection).

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Annotations::TextAnnotation note(
        page, Aspose::Pdf::Rectangle(50.0, 700.0, 250.0, 740.0, false));
    note.Contents("Reviewed and approved.");

    page.Annotations().Add(note);
    doc.Save("annotated.pdf");
}

Forms

Τα πεδία AcroForm διαχειρίζονται μέσω του Aspose::Pdf::Forms::Form, προσβάσιμα μέσω του Document::Form(). Τύποι πεδίων όπως τα TextBoxField κατασκευάζονται όπως τα σχόλια — με ένα Page και ένα Rectangle — και καταχωρούνται στο Form::Add().

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_box_field.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Forms::TextBoxField field(
        page, Aspose::Pdf::Rectangle(100.0, 650.0, 300.0, 670.0, false));
    field.PartialName("customer_name");
    field.Value("Jane Doe");

    doc.Form().Add(field);
    doc.Save("form_filled.pdf");
}

Συμβουλές και Καλές Πρακτικές

  • Ανοίξτε τα αρχεία εισόδου με τη διαδρομή χρησιμοποιώντας τον κατασκευαστή Document; καλέστε το Save() με μια ρητή διαδρομή εξόδου αντί να αντικαθιστάτε την πηγή ενώ άλλα χειριστήρια προς αυτήν μπορεί να παραμένουν ανοιχτά.
  • Καλέστε το Optimize() πριν από το Save() όταν ένα έγγραφο έχει υποστεί εκτεταμένες επεξεργασίες — αφαιρεί τους πόρους που δεν αναφέρονται πλέον από καμία σελίδα.
  • Δομήστε τις συσκευές raster (BmpDevice, PngDevice, JpegDevice, TiffDevice) μία φορά ανά ανάλυση και επαναχρησιμοποιήστε τες σε όλες τις σελίδες αντί να δημιουργείτε νέα συσκευή ανά σελίδα.
  • Ορίστε τόσο έναν κωδικό χρήστη όσο και έναν κωδικό ιδιοκτήτη όταν καλείτε το Encrypt() — ένας κενός κωδικός χρήστη επιτρέπει σε οποιονδήποτε θεατή να ανοίξει το αρχείο, ενώ ο κωδικός ιδιοκτήτη ελέγχει τις αλλαγές δικαιωμάτων.
  • Κρατήστε τα αντικείμενα σημειώσεων και πεδίων (TextAnnotation, TextBoxField και παρόμοια) ενεργά μέχρι να ολοκληρωθεί η επιστροφή του Save(), καθώς το έγγραφο διατηρεί αναφορές στο περιεχόμενο της σελίδας όπου προστέθηκαν.

Συνηθισμένα προβλήματα

ΠρόβλημαΑιτίαΔιόρθωση
Save() δημιουργεί ένα αρχείο με αμετάβλητο περιεχόμενοΈγιναν επεξεργασίες σε αντίγραφο σελίδας ή σημείωσης αντί για το αντικείμενο που ελήφθη από doc.Pages()Τροποποιήστε το αντικείμενο που επιστρέφεται απευθείας από Pages(), Annotations() ή Form()
Η αποδιδόμενη εικόνα είναι κενή ή άδειαΛανθασμένος δείκτης σελίδας περάστηκε στο Process()PageCollection είναι 1-αριθμηση — η σελίδα 1 είναι doc.Pages()[1], όχι [0]
Encrypt() παράγει ένα αρχείο που εξακολουθεί να ανοίγει χωρίς κωδικόΟ κωδικός χρήστη άφησε κενόΔώστε μια μη κενή συμβολοσειρά ως όρισμα userPassword
Το εξαγόμενο κείμενο είναι κενό για ένα σαρωμένο PDFΗ σελίδα περιέχει μόνο περιεχόμενο raster εικόνας, όχι τελεστές κειμένουTextAbsorber διαβάζει τελεστές κειμένου· οι σελίδες μόνο με εικόνα δεν έχουν κανέναν για εξαγωγή
Το πεδίο που προστέθηκε με Form::Add() δεν εμφανίζεται στη σελίδαΤο Rectangle του πεδίου βρίσκεται εκτός των MediaBox της σελίδαςΕπιβεβαιώστε ότι οι συντεταγμένες του ορθογωνίου βρίσκονται εντός των ορίων του Page::MediaBox()

FAQ

Εξαρτάται το Aspose.PDF FOSS για C++ από κάποια εμπορική βιβλιοθήκη PDF;

Όχι. Είναι μια υλοποίηση από το μηδέν σε C++20 χωρίς εξάρτηση από οποιοδήποτε εμπορικό σύστημα PDF, κυκλοφορεί υπό την άδεια MIT.

Μπορώ να δημιουργήσω ένα νέο PDF από το μηδέν αντί να ανοίξω ένα υπάρχον;

Ναι. Document έχει κατασκευαστή προεπιλογής που δημιουργεί ένα κενό έγγραφο· καλέστε Pages().Add() για να προσθέσετε σελίδες πριν αποθηκεύσετε.

Σε ποιες μορφές raster μπορώ να κάνω απόδοση;

BmpDevice, PngDevice, JpegDevice και TiffDevice αποδίδουν μεμονωμένες σελίδες σε BMP, PNG, JPEG και TIFF αντίστοιχα.

Ποιοι αλγόριθμοι κρυπτογράφησης υποστηρίζονται;

CryptoAlgorithm προσφέρει RC4x40, RC4x128, AESx128 και AESx256, που περνιούνται στο Document::Encrypt().

Πού πρέπει να πάω στη συνέχεια;

Ο οδηγός προγραμματιστών περιλαμβάνει αφιερωμένες σελίδες για διαχείριση εγγράφων και σελίδων, γραφικά και σχήματα εγγενή σε PDF, σχόλια και διαδραστικές φόρμες, καθώς και τις κλάσεις προσκηνίου υψηλότερου επιπέδου που περιβάλλουν κοινές λειτουργίες αρχείων.


API Reference Περίληψη

Κλάση/ΜέθοδοςΠεριγραφή
DocumentΑντικείμενο ρίζας — άνοιγμα, δημιουργία, αποθήκευση και βελτιστοποίηση PDF
Document.Pages()Επιστρέφει το PageCollection του εγγράφου
Document.Encrypt() / Decrypt()Προστασία με κωδικό ή αφαίρεση προστασίας από ένα έγγραφο
Document.Form()Επιστρέφει το AcroForm container του εγγράφου
TextAbsorberΕξάγει απλό κείμενο από ένα έγγραφο ή σελίδα
TextFragmentAbsorberΕξάγει τοποθετημένα αποσπάσματα κειμένου
BmpDevice / PngDevice / JpegDevice / TiffDeviceΑπόδοση σελίδας σε μορφή raster εικόνας
ResolutionΑπόδοση DPI που μεταβιβάζεται σε συσκευή απόδοσης
CryptoAlgorithmΕπιλογή αλγορίθμου κρυπτογράφησης: RC4 ή AES, 40–256 bit
PermissionsΣημαίες ελέγχου πρόσβασης που μεταβιβάζονται στο Encrypt()
Annotation / AnnotationCollectionΒασικός τύπος και δοχείο για σημειώσεις σελίδας
TextAnnotationΣχόλιο κειμένου
FormAcroForm container πεδίου προσπελάστηκε μέσω Document.Form()
TextBoxFieldΠεδίου φόρμας κειμένου μίας γραμμής/πολλαπλών γραμμών

Δείτε επίσης

 Ελληνικά