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.
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.