1. Προϊόντα
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

Aspose.PDF FOSS για C++

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

Aspose.PDF FOSS — Βιβλιοθήκη PDF C++ Ανοιχτού Κώδικα

Aspose.PDF FOSS for C++ είναι μια ανοιχτού κώδικα, σύγχρονη βιβλιοθήκη C++20 για εργασία με έγγραφα PDF — άνοιγμα και αποθήκευση PDF, εξαγωγή κειμένου, rasterisation σελίδων σε μορφές εικόνας, και δημιουργία εγγράφων από το μηδέν (κείμενο, εικόνες, πίνακες, διανυσματικά γραφικά, annotations, AcroForm fields και bookmarks). Η βιβλιοθήκη συνδέεται μόνο με τη βιβλιοθήκη προτύπου C++: κάθε primitive, συμπεριλαμβανομένων των κωδικοποιητών TIFF, JPEG και PNG και του page rasteriser, υλοποιείται από το μηδέν χωρίς εξάρτηση από οποιοδήποτε εμπορικό PDF stack.

Η κύρια API είναι χτισμένη γύρω από την κλάση Document και τη συλλογή Pages(). Το κείμενο εξάγεται με το Aspose::Pdf::Text::TextAbsorber, οι σελίδες αποδίδονται σε raster εικόνες μέσω κλάσεων συσκευών όπως PngDevice, JpegDevice, BmpDevice και TiffDevice, και τα έγγραφα μπορούν να ασφαλιστούν με Document.Encrypt() χρησιμοποιώντας αλγόριθμους RC4-40, RC4-128, AES-128 ή AES-256 που επιλέγονται μέσω του enum CryptoAlgorithm. Τα διαδραστικά πεδία φόρμας διαχειρίζονται μέσω της κλάσης Form, και οι annotations — text notes, highlights, shapes και stamps — προστίθενται και τροποποιούνται μέσω της ιεραρχίας κλάσεων Annotation.

Aspose.PDF FOSS for C++ κυκλοφορεί υπό την άδεια MIT χωρίς χρεώσεις χρόνου εκτέλεσης ή περιορισμούς χρήσης. Δημιουργείται ως στατική βιβλιοθήκη μέσω CMake — προσθέστε την ως υποκατάλογο της κατασκευής σας ή εγκαταστήστε την αυτόνομα — και απαιτεί έναν μεταγλωττιστή C++20 χωρίς άλλες εξαρτήσεις χρόνου εκτέλεσης. Για επιχειρηματικές δυνατότητες και υποστήριξη, δείτε Aspose.PDF for C++ — Enterprise Product.

Φόρτωση Εγγράφου και Διαχείριση Σελίδων

  • Ανοίξτε υπάρχοντα αρχεία PDF και αποθηκεύστε τις τροποποιήσεις με Document
  • Πρόσβαση και επανάληψη σελίδων μέσω του Document.Pages() (PageCollection)
  • Προσθήκη, εισαγωγή και διαγραφή σελίδων με PageCollection.Add()/Insert()/Delete()
  • Ανάγνωση και ορισμός μεταδεδομένων εγγράφου μέσω του DocumentInfo (Document.Info())
  • Βελτιστοποίηση μεγέθους εγγράφου με Document.Optimize()/OptimizeResources()

Τυπικές περιπτώσεις χρήσης

  • Δημιουργήστε pipelines παραγωγής PDF για εκθέσεις και τιμολόγια
  • Συγχωνεύστε, χωρίστε και αναδιοργανώστε υπάρχοντα έγγραφα PDF
  • Ελέγξτε και ενημερώστε προγραμματιστικά τα μεταδεδομένα του εγγράφου
  • Μειώστε το μέγεθος του αρχείου PDF πριν από την αρχειοθέτηση ή τη διανομή

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

  • Εξάγετε απλό κείμενο από ολόκληρο το έγγραφο με Aspose::Pdf::Text::TextAbsorber
  • Επισκεφθείτε μια μόνο σελίδα ή ολόκληρο το έγγραφο μέσω TextAbsorber.Visit()
  • Ανακτήστε το εξαγόμενο κείμενο μέσω TextAbsorber.Text()
  • Εντοπίστε μεμονωμένα τμήματα κειμένου με TextFragmentAbsorber.TextFragments()

Τυπικές περιπτώσεις χρήσης

  • Καταχώριση περιεχομένου PDF για αναζήτηση
  • Εξαγωγή δεδομένων από τιμολόγια και δομημένα έγγραφα
  • Δημιουργία αγωγών εξόρυξης κειμένου ή ανάλυσης περιεχομένου
  • Επαλήθευση περιεχομένου εγγράφου σε αυτοματοποιημένα σύνολα δοκιμών

Απόδοση σε raster εικόνες

  • Αποδώστε τις σελίδες σε PNG με PngDevice
  • Αποδώστε τις σελίδες σε JPEG, BMP ή TIFF με JpegDevice, BmpDevice, TiffDevice
  • Ελέγξτε την ανάλυση εξόδου με την κλάση Resolution
  • Επεξεργαστείτε μία σελίδα μέσω του {Device}.Process()

Τυπικές περιπτώσεις χρήσης

  • Δημιουργήστε μικρογραφίες σελίδων για έναν προβολέα εγγράφων
  • Παραγάγετε raster έξοδο έτοιμη για εκτύπωση από διανυσματικά PDFs
  • Κατασκευάστε υπηρεσίες μετατροπής PDF-σε-εικόνα
  • Δημιουργήστε βάσεις οπτικής παλινδρόμησης για παραγόμενα PDFs

Κρυπτογράφηση και Ασφάλεια

  • Κρυπτογραφήστε έγγραφα με Document.Encrypt() χρησιμοποιώντας κωδικό χρήστη και κωδικό ιδιοκτήτη
  • Επιλέξτε RC4-40, RC4-128, AES-128 ή AES-256 μέσω του enum CryptoAlgorithm
  • Ελέγξτε τα παραχωρημένα δικαιώματα με τον τύπο Permissions
  • Αποκρυπτογραφήστε έγγραφα προστατευμένα με κωδικό πρόσβασης με το Document.Decrypt()

Τυπικές περιπτώσεις χρήσης

  • Προστατέψτε εμπιστευτικές PDF αναφορές πριν τη διανομή
  • Επιβάλετε περιορισμούς εκτύπωσης/αντιγραφής/επεξεργασίας σε κοινά έγγραφα
  • Προσθέστε προστασία με κωδικό στις παραγόμενες τιμολόγια και δηλώσεις
  • Κρυπτογραφήστε μαζικά έγγραφα ως μέρος μιας γραμμής επεξεργασίας εγγράφων

Σχόλια και Διαδραστικές Φόρμες

  • Προσθέστε, τροποποιήστε και επίπεδοποιήστε τις σημειώσεις μέσω Annotation και AnnotationCollection
  • Διαχειριστείτε τα πεδία AcroForm μέσω της κλάσης Form
  • Προσθέστε και αφαιρέστε πεδία με Form.Add()/Form.Delete()
  • Επίπεδοποιήστε τις διαδραστικές φόρμες σε στατικό περιεχόμενο με Form.Flatten()

Τυπικές περιπτώσεις χρήσης

  • Προσθέστε σχόλια και επισήμανση σε κοινά PDF
  • Δημιουργήστε συμπληρώσιμες φόρμες PDF για τη συλλογή δεδομένων
  • Ισοπεδώστε τις υποβληθείσες φόρμες πριν την αρχειοθέτηση
  • Προγραμματιστικά προσυμπληρώστε και κλειδώστε τα πεδία της φόρμας

Ανοίξτε ένα PDF, Εξάγετε κείμενο και Αποδώστε μια σελίδα

Προσθέστε τη βιβλιοθήκη ως υποκατάλογο CMake, στη συνέχεια ανοίξτε ένα έγγραφο, μετρήστε τις σελίδες του, εξάγετε κείμενο με TextAbsorber και αποδώστε τη σελίδα 1 σε PNG στα 150 DPI.

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/page_collection.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Pages: " << doc.Pages().Count() << "\n";

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

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

Κρυπτογράφηση ενός εγγράφου με AES-256

Ανοίξτε ένα έγγραφο και προστατεύστε το με κωδικό χρήστη και κωδικό ιδιοκτήτη χρησιμοποιώντας κρυπτογράφηση AES-256.

#include <aspose/pdf/document.hpp>
int main() {
    Aspose::Pdf::Document doc("input.pdf");
    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions(),
                Aspose::Pdf::CryptoAlgorithm::AESx256);
    doc.Save("encrypted.pdf");
}

Ανάγνωση και Ενημέρωση Μεταδεδομένων Εγγράφου

Διαβάστε τις υπάρχουσες καταχωρήσεις /Info και ενημερώστε τον τίτλο του εγγράφου μέσω του DocumentInfo.

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

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto& info = doc.Info();
    std::cout << "Title: " << info.Title() << "\n";
    std::cout << "Author: " << info.Author() << "\n";

    doc.SetTitle("Updated Report Title");
    doc.Save("output.pdf");
}

Συχνές Ερωτήσεις

Ποιο είναι το μοντέλο αδειοδότησης για Aspose.PDF FOSS for C++;

Έχει άδεια MIT και είναι δωρεάν για χρήση σε εμπορικά και μη εμπορικά προϊόντα, χωρίς κλειδί ενεργοποίησης ή περιορισμούς κλήσεων API.

Ποια εκδόσεις του μεταγλωττιστή και του CMake απαιτούνται;

Απαιτείται ένας μεταγλωττιστής C++20 (clang 16+, gcc 13+, ή MSVC 2022 17.5+) και CMake 3.22 ή νεότερο. Το Python 3 απαιτείται μόνο κατά το χρόνο κατασκευής.

Η βιβλιοθήκη έχει κάποιες εξαρτήσεις χρόνου εκτέλεσης;

Όχι. Συνδέεται μόνο με τη βιβλιοθήκη προτύπου C++ — δεν απαιτείται καμία εξάρτηση τρίτου μέρους για PDF, εικόνα ή συμπίεση κατά το χρόνο εκτέλεσης.

Ποιες μορφές μπορεί να διαβάσει και να εξάγει;

Διαβάζει και αποθηκεύει εγγενή έγγραφα PDF, και εξάγει τις αποδομένες σελίδες σε Bmp, Jpeg και Tiff, καθώς και απλό κείμενο. Το περιεχόμενο SVG μπορεί να εισαχθεί.

Πώς κρυπτογραφώ ένα έγγραφο PDF;

Καλέστε το Document.Encrypt() με κωδικό χρήστη, κωδικό ιδιοκτήτη και έναν CryptoAlgorithm (RC4x40, RC4x128, AESx128 ή AESx256).

Υπάρχουν γνωστοί περιορισμοί στην τρέχουσα έκδοση;

Ναι — μερικοί βοηθοί ελέγχου τύπου XmpValue (IsDateTime, IsField και παρόμοια) είναι ψευδοσυναρτήσεις που πάντα επιστρέφουν false· χρησιμοποιήστε IsString/IsInteger/IsDouble/IsArray αντί αυτού.

  

Υποστήριξη και Πόροι Μάθησης

 Ελληνικά