Δωρεάν Βιβλιοθήκη C++ PDF για Ανάγνωση & Εγγραφή Αρχείων PDF

Μια Απλή Ανοιχτού Κώδικα Βιβλιοθήκη PDF βασισμένη σε C επιτρέπει την Ανάγνωση, Εγγραφή και Χειρισμό Εγγράφων PDF. Υποστηρίζει τη Μετατροπή Εικόνας σε PDF, την Εξαγωγή Περιεχομένων, την Ανάγνωση PDF με βάση το Ρεύμα και Περισσότερα, μέσα σε εφαρμογές C.

Τι είναι η βιβλιοθήκη PDFio;

Το PDFio είναι μια ελαφριά, ανοιχτού κώδικα βιβλιοθήκη C σχεδιασμένη ειδικά για ανάγνωση και εγγραφή αρχείων PDF χωρίς την πολυπλοκότητα της απόδοσης ή προβολής. Δημιουργήθηκε από τον Michael R Sweet και αδειοδοτείται υπό την Άδεια Apache Έκδοση 2.0, αυτή η βιβλιοθήκη παρέχει στους προγραμματιστές μια απλή προσέγγιση στη διαχείριση PDF που εστιάζει στη δημιουργία, εξαγωγή και μετασχηματισμό περιεχομένου αντί για την οπτική παρουσίαση. Η βιβλιοθήκη είναι πολύ εύκολη στη χρήση και προσφέρει διάφορους τρόπους επεξεργασίας αρχείων PDF, όπως εξαγωγή και συγχώνευση σελίδων PDF, αυτοματοποιημένες αναφορές από βάσεις δεδομένων, προσθήκη υδατογραφήματος και σφραγίδας, δημιουργία πιστοποιητικών και διπλωμάτων, ενσωμάτωση γραμματοσειρών για αρχειοθέτηση, τροποποίηση μεταδεδομένων και πολλά άλλα.

Το PDFio εστιάζει στις βασικές λειτουργίες I/O, καθιστώντας το ιδανικό για εφαρμογές που χρειάζονται εξαγωγή δεδομένων από PDF ή δημιουργία νέων χωρίς το βάρος πιο σύνθετων βιβλιοθηκών. Η βιβλιοθήκη υποστηρίζει ισχυρές δυνατότητες μετατροπής και επιτρέπει στους προγραμματιστές λογισμικού να μετατρέπουν markdown σε PDF, εικόνα σε PDF, HTML σε PDF καθώς και τη δημιουργία barcode σε PDF μέσα σε εφαρμογές C. Η εστίασή του στη βασική λειτουργικότητα χωρίς το βάρος της απόδοσης το καθιστά ιδανικό για εφαρμογές διακομιστή, εργαλεία γραμμής εντολών και ενσωματωμένα συστήματα όπου απαιτείται δημιουργία ή επεξεργασία PDF χωρίς οπτική παρουσία. Είτε δημιουργείτε συστήματα διαχείρισης εγγράφων, είτε δημιουργείτε αυτοματοποιημένους δημιουργούς αναφορών, είτε αναπτύσσετε εργαλεία ανάλυσης PDF, το PDFio προσφέρει τη βασική λειτουργικότητα που χρειάζεται για επαγγελματική διαχείριση PDF σε εφαρμογές C.

Previous Next

Ξεκινώντας με το PDFio

Ο συνιστώμενος τρόπος εγκατάστασης του PDFio είναι μέσω NuGet. Παρακαλώ χρησιμοποιήστε την παρακάτω εντολή για ομαλή εγκατάσταση.

Εγκατάσταση PDFio μέσω NuGet

Install-Package pdfio_native 

Εγκατάσταση PDFio μέσω GitHub

 git clone  https://github.com/michaelrsweet/pdfio.git

Μπορείτε επίσης να το εγκαταστήσετε χειροκίνητα· κατεβάστε τα τελευταία αρχεία έκδοσης απευθείας από το αποθετήριο GitHub.

Δημιουργία PDF από το μηδέν μέσω C

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

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

#include 
#include 

int main(void) {
    pdfio_file_t *pdf;
    pdfio_dict_t *dict;
    pdfio_stream_t *page;
    pdfio_obj_t *font;
    pdfio_rect_t media_box = {0.0, 0.0, 612.0, 792.0};  // US Letter
    pdfio_rect_t crop_box = {36.0, 36.0, 576.0, 756.0}; // 0.5" margins
    
    // Create PDF file
    pdf = pdfioFileCreate("output.pdf", "2.0", 
                          &media_box, &crop_box,
                          NULL, NULL);
    
    if (!pdf) {
        fprintf(stderr, "Unable to create PDF\n");
        return 1;
    }
    
    // Create a font object (Helvetica)
    font = pdfioFileCreateFontObjFromBase(pdf, "Helvetica");
    
    // Create page dictionary
    dict = pdfioDictCreate(pdf);
    pdfioPageDictAddFont(dict, "F1", font);
    
    // Create the page
    page = pdfioFileCreatePage(pdf, dict);
    
    // Draw text
    pdfioContentSetFillColorDeviceGray(page, 0.0);  // Black color
    pdfioContentTextBegin(page);
    pdfioContentSetTextFont(page, "F1", 24.0);
    pdfioContentTextMoveTo(page, 100.0, 700.0);
    pdfioContentTextShow(page, false, "Hello, PDFio!");
    pdfioContentTextEnd(page);
    
    // Close page and file
    pdfioStreamClose(page);
    pdfioFileClose(pdf);
    
    printf("PDF created successfully!\n");
    return 0;
}

Μετατροπή εικόνας σε PDF μέσω βιβλιοθήκης C

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

Πώς να μετατρέψετε μία εικόνα σε PDF μέσω βιβλιοθήκης C;

#include 
#include 
#include 

bool create_pdf_from_image(const char *image_path, 
                           const char *pdf_path,
                           const char *title) {
    pdfio_file_t *pdf;
    pdfio_obj_t *image;
    pdfio_dict_t *page_dict;
    pdfio_stream_t *page_stream;
    pdfio_rect_t media_box;
    double img_width, img_height;
    double page_width, page_height;
    double scale_x, scale_y, scale;
    double x, y;
    
    // Create the image object first to get dimensions
    // We'll use a temporary PDF for this
    pdfio_rect_t temp_box = {0, 0, 612, 792};
    pdf = pdfioFileCreate(pdf_path, "2.0", &temp_box, NULL, NULL, NULL);
    
    if (!pdf) {
        fprintf(stderr, "Error: Cannot create PDF file\n");
        return false;
    }
    
    // Set PDF metadata
    if (title) {
        pdfioFileSetTitle(pdf, title);
    }
    pdfioFileSetAuthor(pdf, "PDFio Image Converter");
    pdfioFileSetCreator(pdf, "image2pdf v1.0");
    
    // Load and embed the image
    image = pdfioFileCreateImageObjFromFile(pdf, image_path, true);
    
    if (!image) {
        fprintf(stderr, "Error: Cannot load image file: %s\n", image_path);
        pdfioFileClose(pdf);
        return false;
    }
    
    // Get image dimensions in pixels
    img_width = pdfioImageGetWidth(image);
    img_height = pdfioImageGetHeight(image);
    
    printf("Image dimensions: %.0f x %.0f pixels\n", img_width, img_height);
    
    // Create page sized to image (assuming 72 DPI)
    // This creates a PDF page that exactly fits the image
    page_width = img_width;
    page_height = img_height;
    
    media_box.x1 = 0.0;
    media_box.y1 = 0.0;
    media_box.x2 = page_width;
    media_box.y2 = page_height;
    
    // Create page dictionary and add image resource
    page_dict = pdfioDictCreate(pdf);
    pdfioDictSetRect(page_dict, "MediaBox", &media_box);
    pdfioPageDictAddImage(page_dict, "IM1", image);
    
    // Create the page
    page_stream = pdfioFileCreatePage(pdf, page_dict);
    
    // Draw image at full size (no scaling)
    pdfioContentDrawImage(page_stream, "IM1", 0, 0, 
                         page_width, page_height);
    
    // Close and save
    pdfioStreamClose(page_stream);
    pdfioFileClose(pdf);
    
    printf("Successfully created PDF: %s\n", pdf_path);
    return true;
}

int main(int argc, char *argv[]) {
    if (argc < 3) {
        fprintf(stderr, "Usage: %s   [title]\n", 
                argv[0]);
        return 1;
    }
    
    const char *title = (argc > 3) ? argv[3] : NULL;
    
    if (!create_pdf_from_image(argv[1], argv[2], title)) {
        return 1;
    }
    
    return 0;
}
 

Ανάγνωση PDF & εξαγωγή κειμένου μέσω της βιβλιοθήκης C

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

Πώς να εξάγετε απλό κείμενο από αρχείο PDF μέσω βιβλιοθήκης C;

#include 
#include 
#include 

// Callback function to handle text objects
static bool text_cb(const pdfio_text_t *text, void *data) {
    // Simply print the text to stdout
    printf("%s", text->utf8);
    return true;
}

int main(void) {
    pdfio_file_t *pdf;
    pdfio_page_t *page;

    // Open the PDF file for reading
    pdf = pdfioFileOpen("example.pdf", NULL, NULL, NULL);
    if (!pdf) {
        fprintf(stderr, "Failed to open example.pdf\n");
        return 1;
    }

    printf("PDF has %d pages.\n", pdfioFileGetNumPages(pdf));

    // Read the first page (pages are 1-indexed)
    page = pdfioFileGetPage(pdf, 1);
    if (!page) {
        fprintf(stderr, "Failed to read page 1\n");
        pdfioFileClose(pdf);
        return 1;
    }

    // Parse the page content and call our text_cb for each text object
    if (!pdfioPageParseContents(page, text_cb, NULL, NULL, NULL)) {
        fprintf(stderr, "Failed to parse page contents\n");
    }

    // Clean up
    pdfioFileClose(pdf);
    return 0;
}

Αποτελεσματική ανάγνωση με βάση τη ροή

Το PDFio έχει σχεδιαστεί για αποδοτικότητα. Κατά την ανάγνωση, δεν φορτώνει ολόκληρο το αρχείο στη μνήμη ταυτόχρονα. Αντίθετα, χρησιμοποιεί μια προσέγγιση pull-parsing, επιτρέποντάς σας να επεξεργάζεστε το αρχείο σε τμήματα. Αυτό είναι κρίσιμο για τη διαχείριση πολύ μεγάλων PDF χωρίς να εξαντλείται η μνήμη του συστήματος. Η συνάρτηση pdfioPageParseContents από το πρώτο παράδειγμα αποτελεί ένα κύριο παράδειγμα αυτού του μοντέλου βασισμένου σε ροές. Διαβάζει τη ροή περιεχομένου της σελίδας διαδοχικά, εκδίδοντας γεγονότα (όπως η κλήση επιστροφής κειμένου μας) καθώς προχωρά.

 Ελληνικά