1. Məhsullar
  2.   PDF
  3.   C++
  4.   PDFio
 
  

PDF Fayllarını Oxumaq və Yazmaq üçün Pulsuz C++ PDF Kitabxanası

Sadə Açıq Mənbəli C‑əsaslı PDF Kitabxanası PDF Sənədlərini Oxumağa, Yazmağa və İdarə etməyə imkan verir. O, Şəkili PDF‑ə Çevirmə, Məzmunun Çıxarılması, Axın‑əsaslı PDF Oxuma və daha çoxunu C tətbiqləri daxilində dəstəkləyir.

PDFio Kitabxanası nədir?

PDFio, renderləmə və ya görüntüləmə mürəkkəbliyi olmadan PDF fayllarını oxumaq və yazmaq üçün xüsusi olaraq hazırlanmış yüngül, açıq mənbəli C kitabxanasıdır. Michael R Sweet tərəfindən yaradılıb və Apache License Version 2.0 altında lisenziyalanıb, bu kitabxana inkişaf etdiricilərə vizual təqdimatdan çox məzmun yaradılması, çıxarılması və transformasiyasına yönəlmiş PDF manipulyasiyası üçün sadə bir yanaşma təqdim edir. Kitabxana çox asan idarə olunur və PDF səhifələrinin çıxarılması və birləşdirilməsi, verilənlər bazasından avtomatlaşdırılmış hesabatlar, watermark və möhürləmə, sertifikat və diplom yaradılması, arxivləşdirmə üçün şriftlərin daxil edilməsi, metadata dəyişdirilməsi və daha bir çox kimi PDF fayllarının işlənməsi üçün müxtəlif yollar təklif edir.

PDFio əsas I/O əməliyyatlarına yönəlir, bu da PDF-lərdən məlumat çıxarmaq və ya yeni PDF-lər yaratmaq üçün daha mürəkkəb kitabxanaların əlavə yükü olmadan tətbiqlər üçün mükəmməl edir. Kitabxana güclü konvertasiya xüsusiyyətlərini dəstəkləyir və proqramçılara markdown-u PDF-ə, şəkili PDF-ə, HTML-i PDF-ə çevirməyə, həmçinin C tətbiqlərində PDF-lərdə barkod yaratmağa imkan verir. Rendering əlavə yükü olmadan əsas funksionallığa yönəlməsi onu server tərəfi tətbiqləri, komanda xətti alətləri və PDF yaradılması və ya emalı vizual görüntü olmadan tələb olunan gömülü sistemlər üçün ideal edir. Sənəd idarəetmə sistemləri qurursunuzsa, avtomatlaşdırılmış hesabat generatorları yaradırsınızsa və ya PDF təhlili üçün alətlər inkişaf etdirirsinizsə, PDFio C tətbiqlərində peşəkar PDF idarəçiliyi üçün lazım olan əsas funksionallığı təklif edir.

Previous Next

PDFio ilə Başlamaq

PDFio-nu quraşdırmağın tövsiyə olunan yolu NuGet istifadə etməkdir. Zəhmət olmasa, problemsiz quraşdırma üçün aşağıdakı əmri istifadə edin.

PDFio‑nu NuGet vasitəsilə quraşdırın

Install-Package pdfio_native 

PDFio‑nu GitHub vasitəsilə quraşdırın

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

Siz həmçinin onu əl ilə quraşdıra bilərsiniz; son buraxılış fayllarını birbaşa GitHub deposundan yükləyin.

C vasitəsilə sıfırdan PDF yaratmaq

Açıq mənbəli PDFio kitabxanası C tətbiqlərində sıfırdan yeni PDF sənədi yaratmaq üçün tam dəstəyi daxil etmişdir. Yeni PDF sənədi yaratmaq da eyni dərəcədə sadədir və yalnız bir neçə C kod sətiri ilə proqramçılar yeni səhifələr əlavə edə, mətn və sadə formalar çəkmək, şəkillər (JPEG, PNG formatları) əlavə etmək, rənglər və transformasiyalar tətbiq etmək, cədvəllər və strukturlaşdırılmış tərtibatlar qurmaq və daha çox şey edə bilərlər. Budur, C kodu ilə xüsusi səhifə ölçüsü və məzmunu olan yeni PDF sənədi necə yaradılacağını göstərən sadə bir nümunə.

Xüsusi Səhifə Ölçüsü və Məzmunu ilə Sadə PDF Sənədi Necə Yaratmaq olar C Kitabxanası vasitəsilə?

#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;
}

C Kitabxanası vasitəsilə Şəkili PDF-ə Çevirmək

Şəkilləri PDF formatına çevirmək ən yaygın sənəd emalı tapşırıqlarından biridir. PDFio kitabxanası bunu sadə edir və səhifə ölçüləri, şəkil yerləşdirilməsi, miqyaslandırma və metadata üzərində incə nəzarət təmin edir. Proqramçılar tək şəkilləri və toplu çevirmələri idarə edən tam bir şəkildən PDF-ə çevirici yarada bilərlər. Aşağıdakı nümunə, inkişaf etdiricilərin C tətbiqlərində bir şəkili PDF-ə necə çevirə biləcəyini göstərir.

C Kitabxanası vasitəsilə Tək Şəkili PDF-ə Necə Çevirmək Olar?

#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;
}
 

C Kitabxanası vasitəsilə PDF oxumaq və mətn çıxarmaq

Ən yaygın vəzifələrdən biri PDF faylından mətn oxumaq və çıxarmaqdır. Açıq mənbəli PDFio kitabxanası bu prosesi intuitiv edir, inkişaf etdiricilərə səhifələr və onların məzmun axınları üzərində iterasiya etməyə imkan verir. Kitabxana mövcud PDF-lərdən faydalı məlumatları, məsələn sadə mətn, metadata, yerləşdirilmiş şriftlər, ədədlər, şəkillər, üzüm, adlar və daha çoxunu çıxarmaq üçün tam dəstək verir. Aşağıdakı nümunə C kitabxanası istifadə edərək mövcud PDF-i necə açmaq və ondan əsas məlumatları çıxarmaq olduğunu göstərir.

C Kitabxanası vasitəsilə PDF Fayldan Sadə Mətn Necə Çıxarmaq Olar?

#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;
}

Səmərəli, Axın-əsaslı oxuma

PDFio səmərəlilik üçün dizayn edilmişdir. Oxuyarkən, bütün faylı bir anda yaddaşa yükləmir. Bunun yerinə, faylı hissələr şəklində emal etməyə imkan verən pull-parsing yanaşmasından istifadə edir. Bu, sistem yaddaşını tükətmədən çox böyük PDF-lərlə işləmək üçün vacibdir. İlk nümunədən pdfioPageParseContents funksiyası bu axın‑əsaslı modelin əsas nümunəsidir. O, səhifənin məzmun axınını ardıcıllıqla oxuyur və proses zamanı hadisələr (məsələn, mətn geri çağırma funksiyamız) yayır.

 Azəri