1. Produk
  2.   PDF
  3.   C++
  4.   PDFio
 
  

Perpustakaan PDF C++ Gratis untuk Membaca & Menulis File PDF

Perpustakaan PDF berbasis C sederhana dan sumber terbuka memungkinkan Membaca, Menulis, dan Memanipulasi Dokumen PDF. Ini mendukung Konversi Gambar ke PDF, Ekstraksi Konten, Pembacaan PDF berbasis aliran, dan lainnya, di dalam aplikasi C.

Apa itu Perpustakaan PDFio?

PDFio adalah perpustakaan C ringan dan sumber terbuka yang dirancang khusus untuk membaca dan menulis file PDF tanpa kompleksitas rendering atau penampilan. Dibuat oleh Michael R Sweet dan dilisensikan di bawah Apache License Versi 2.0, perpustakaan ini memberikan pengembang pendekatan yang sederhana untuk manipulasi PDF yang berfokus pada pembuatan, ekstraksi, dan transformasi konten daripada presentasi visual. Perpustakaan ini sangat mudah digunakan dan menyediakan berbagai cara untuk memanipulasi file PDF seperti ekstraksi dan penggabungan halaman PDF, laporan otomatis dari basis data, penambahan watermark dan stempel, pembuatan sertifikat dan diploma, penyematan font untuk arsip, modifikasi metadata, dan banyak lagi.

PDFio berfokus pada operasi I/O esensial, menjadikannya sempurna untuk aplikasi yang perlu mengekstrak data dari PDF atau membuat PDF baru tanpa beban library yang lebih kompleks. Library ini mendukung fitur konversi yang kuat dan memungkinkan pengembang perangkat lunak mengonversi markdown ke PDF, gambar ke PDF, HTML ke PDF serta menghasilkan barcode dalam PDF di dalam aplikasi C. Fokusnya pada fungsionalitas inti tanpa beban rendering membuatnya ideal untuk aplikasi sisi server, alat baris perintah, dan sistem tertanam di mana pembuatan atau pemrosesan PDF diperlukan tanpa tampilan visual. Baik Anda membangun sistem manajemen dokumen, membuat generator laporan otomatis, atau mengembangkan alat untuk analisis PDF, PDFio menawarkan fungsionalitas esensial yang dibutuhkan untuk penanganan PDF profesional dalam aplikasi C.

Previous Next

Memulai dengan PDFio

Cara yang direkomendasikan untuk menginstal PDFio adalah menggunakan NuGet. Silakan gunakan perintah berikut untuk instalasi yang lancar.

Instal PDFio melalui NuGet

Install-Package pdfio_native 

Instal PDFio melalui GitHub

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

Anda juga dapat menginstalnya secara manual; unduh file rilis terbaru langsung dari GitHub repositori.

Membuat PDF dari Awal menggunakan C

Perpustakaan PDFio sumber terbuka telah menyertakan dukungan lengkap untuk membuat dokumen PDF baru dari awal di dalam aplikasi C. Membuat dokumen PDF baru sama mudahnya dan dengan hanya beberapa baris kode C, pengembang perangkat lunak dapat menambahkan halaman baru, menggambar teks dan bentuk sederhana, menambahkan gambar (format JPEG, PNG), menerapkan warna dan transformasi, membangun tabel dan tata letak terstruktur, serta banyak lagi. Berikut contoh sederhana yang menunjukkan cara membuat dokumen PDF baru dengan ukuran halaman khusus dan konten menggunakan kode C.\n\n\n

\n

Bagaimana Membuat Dokumen PDF Sederhana dengan Ukuran Halaman Kustom & Konten melalui Perpustakaan C?

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

Konversi Gambar ke PDF melalui Perpustakaan C

\n

Mengonversi gambar ke format PDF adalah salah satu tugas pemrosesan dokumen yang paling umum. Perpustakaan PDFio membuat proses ini sederhana sekaligus memberikan kontrol yang halus atas ukuran halaman, penempatan gambar, skala, dan metadata. Pengembang perangkat lunak dapat membangun konverter gambar-ke-PDF lengkap yang menangani baik gambar tunggal maupun konversi batch. Contoh berikut menunjukkan bagaimana pengembang dapat mengonversi satu gambar menjadi PDF di dalam aplikasi C.

Cara Mengonversi Gambar Tunggal menjadi PDF melalui Perpustakaan 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;
}
 

Membaca PDF & Mengekstrak Teks melalui Perpustakaan C

Salah satu tugas paling umum adalah membaca dan mengekstrak teks dari file PDF. Perpustakaan sumber terbuka PDFio membuat proses ini intuitif dengan memungkinkan pengembang mengiterasi halaman dan aliran kontennya. Perpustakaan ini menyediakan dukungan penuh untuk mengekstrak informasi berguna dari PDF yang ada, seperti teks sederhana, metadata, font yang disematkan, angka, gambar, anggur, nama, dan lainnya. Contoh berikut menunjukkan cara membuka PDF yang ada dan mengekstrak informasi dasar darinya menggunakan pustaka C.

Cara Mengekstrak Teks Sederhana dari File PDF melalui Perpustakaan 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;
}

Pembacaan Efisien Berbasis Stream

PDFio dirancang untuk efisiensi. Saat membaca, ia tidak memuat seluruh file ke memori sekaligus. Sebaliknya, ia menggunakan pendekatan pull-parsing, memungkinkan Anda memproses file dalam potongan. Ini penting untuk menangani PDF yang sangat besar tanpa menghabiskan memori sistem. Fungsi pdfioPageParseContents dari contoh pertama adalah contoh utama dari model berbasis aliran ini. Ia membaca aliran konten halaman secara berurutan, memancarkan peristiwa (seperti callback teks kami) saat berjalan.

 Indonesia