1. Ürün:% s
  2.   PDF
  3.   C++
  4.   PDFio
 
  

PDF Dosyalarını Okuma ve Yazma için Ücretsiz C++ PDF Kütüphanesi

Basit bir Açık Kaynak C tabanlı PDF Kütüphanesi, PDF Belgelerini Okuma, Yazma ve Manipüle Etme imkanı sağlar. Görüntüyü PDF'ye Dönüştürme, İçerik Çıkarma, Akış Tabanlı PDF Okuma ve daha fazlasını C uygulamaları içinde destekler.

PDFio Kütüphanesi Nedir?

PDFio, PDF dosyalarını okuma ve yazma işlemleri için özellikle tasarlanmış, hafif, açık kaynaklı bir C kütüphanesidir; renderleme veya görüntüleme karmaşıklığı olmadan. Michael R Sweet tarafından oluşturulmuş ve Apache License Version 2.0 altında lisanslanmıştır; bu kütüphane geliştiricilere içerik oluşturma, çıkarma ve dönüştürmeye odaklanan, görsel sunumdan ziyade PDF manipülasyonu için basit bir yaklaşım sunar. Kütüphane çok kolay kullanılabilir ve PDF sayfa çıkarma ve birleştirme, veritabanlarından otomatik raporlar, filigran ve damga ekleme, sertifika ve diploma oluşturma, arşivleme için font gömme, meta veri değiştirme ve daha fazlası gibi PDF dosyalarını işlemek için çeşitli yollar sağlar.

PDFio, temel G/Ç işlemlerine odaklanır ve PDF'lerden veri çıkarmak veya daha karmaşık kütüphanelerin ek yükü olmadan yeni PDF'ler oluşturmak isteyen uygulamalar için mükemmeldir. Kütüphane güçlü dönüşüm özelliklerini destekler ve yazılım geliştiricilerin markdown'ı PDF'ye, görüntüyü PDF'ye, HTML'yi PDF'ye dönüştürmelerine ve C uygulamaları içinde PDF'lerde barkod üretmelerine olanak tanır. Görselleştirme yükü olmadan çekirdek işlevselliğe odaklanması, PDF oluşturma veya işleme görsel gösterim gerektirmeyen sunucu tarafı uygulamaları, komut satırı araçları ve gömülü sistemler için ideal kılar. Belge yönetim sistemleri oluşturuyor, otomatik rapor üreteçleri geliştiriyor ya da PDF analizi için araçlar geliştiriyor olun, PDFio C uygulamalarında profesyonel PDF işleme için gerekli temel işlevselliği sunar.

Previous Next

PDFio'ya Başlarken

PDFio'yu kurmanın önerilen yolu NuGet kullanmaktır. Sorunsuz bir kurulum için lütfen aşağıdaki komutu kullanın.

PDFio'yu NuGet ile Kurun

Install-Package pdfio_native 

PDFio'yu GitHub üzerinden Kurun

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

Ayrıca manuel olarak da kurabilirsiniz; en son sürüm dosyalarını doğrudan GitHub deposundan indirin.

C ile Sıfırdan PDF Oluşturma

Açık kaynak PDFio kütüphanesi, C uygulamaları içinde sıfırdan yeni PDF belgesi oluşturma için tam destek eklemiştir. Yeni bir PDF belgesi oluşturmak da aynı derecede basittir ve sadece birkaç satır C kodu ile yazılım geliştiricileri yeni sayfalar ekleyebilir, metin ve basit şekiller çizebilir, görüntüler (JPEG, PNG formatları) ekleyebilir, renk ve dönüşümler uygulayabilir, tablolar ve yapılandırılmış düzenler oluşturabilir ve daha fazlasını yapabilir. İşte C kodu kullanarak özel sayfa boyutu ve içerikle yeni bir PDF belgesi oluşturmayı gösteren basit bir örnek.

C Kütüphanesi ile Özel Sayfa Boyutu ve İçerikli Basit Bir PDF Belgesi Nasıl Oluşturulur?

#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 Kütüphanesi ile Görüntüyü PDF'ye Dönüştürme

Görüntüleri PDF formatına dönüştürmek, en yaygın belge işleme görevlerinden biridir. PDFio kütüphanesi, sayfa boyutlandırma, görüntü yerleştirme, ölçekleme ve meta veriler üzerinde ince kontrol sağlayarak bunu basitleştirir. Yazılım geliştiricileri, tek görüntüleri ve toplu dönüşümleri işleyebilen tam bir görüntüden PDF'ye dönüştürücü oluşturabilir. Aşağıdaki örnek, geliştiricilerin C uygulamaları içinde bir görüntüyü PDF'ye nasıl dönüştürebileceğini göstermektedir.

C Kütüphanesi ile Tek Görüntüyü PDF'ye Nasıl Dönüştürülür?

#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 Kütüphanesi ile PDF Okuma ve Metin Çıkarma

En yaygın görevlerden biri, bir PDF dosyasından metin okuma ve çıkarma işlemidir. Açık kaynaklı PDFio kütüphanesi, geliştiricilerin sayfalar ve içerik akışları arasında dolaşmasına izin vererek bu süreci sezgisel hale getirir. Kütüphane, mevcut PDF'lerden basit metin, meta veriler, gömülü yazı tipleri, sayılar, görüntüler, üzümler, adlar ve daha fazlası gibi yararlı bilgileri çıkarmak için tam destek sağlar. Aşağıdaki örnek, mevcut bir PDF'yi açıp C kütüphanesini kullanarak temel bilgileri nasıl çıkaracağınızı gösterir.

C Kütüphanesi ile PDF Dosyasından Basit Metin Nasıl Çıkarılır?

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

Verimli, Akış Tabanlı Okuma

PDFio verimlilik için tasarlanmıştır. Okuma sırasında, tüm dosyayı bir kerede belleğe yüklemez. Bunun yerine, dosyayı parçalar halinde işlemenizi sağlayan bir çekme-çözümleme yaklaşımı kullanır. Bu, sistem belleğini tüketmeden çok büyük PDF'leri işlemek için çok önemlidir. İlk örnekteki pdfioPageParseContents işlevi, bu akış tabanlı modelin mükemmel bir örneğidir. Sayfanın içerik akışını sıralı olarak okur ve ilerlerken olaylar (örneğin metin geri çağrısı) yayar.

 Türkçe