1. 제품
  2.   PDF
  3.   C++
  4.   PDFio
 
  

PDF 파일을 읽고 쓰기 위한 무료 C++ PDF 라이브러리

간단한 오픈 소스 C 기반 PDF 라이브러리는 PDF 문서를 읽고, 쓰고, 조작할 수 있게 해줍니다. 이미지에서 PDF로 변환, 내용 추출, 스트림 기반 PDF 읽기 등을 C 애플리케이션 내에서 지원합니다.

PDFio 라이브러리란 무엇인가요?

PDFio는 렌더링이나 뷰잉의 복잡성 없이 PDF 파일을 읽고 쓰도록 특별히 설계된 가볍고 오픈 소스 C 라이브러리입니다. Michael R Sweet가 만들었으며 Apache License Version 2.0 하에 라이선스가 부여된 이 라이브러리는 시각적 표현보다 콘텐츠 생성, 추출 및 변환에 중점을 둔 PDF 조작을 위한 간단한 접근 방식을 개발자에게 제공합니다. 이 라이브러리는 사용이 매우 쉽고 PDF 페이지 추출 및 병합, 데이터베이스 기반 자동 보고서 생성, 워터마크 및 스탬프 삽입, 증명서 및 졸업장 제작, 보관용 글꼴 임베딩, 메타데이터 수정 등 다양한 PDF 처리 방법을 제공합니다.

PDFio는 필수적인 I/O 작업에 집중하여 PDF에서 데이터를 추출하거나 새로운 PDF를 생성해야 하는 애플리케이션에 복잡한 라이브러리의 오버헤드 없이 적합합니다. 이 라이브러리는 강력한 변환 기능을 지원하며 소프트웨어 개발자가 C 애플리케이션 내에서 마크다운을 PDF로, 이미지를 PDF로, HTML을 PDF로 변환하고 PDF에 바코드를 생성할 수 있게 합니다. 렌더링 오버헤드 없이 핵심 기능에 집중함으로써 서버‑사이드 애플리케이션, 커맨드‑라인 도구, 시각적 표시 없이 PDF 생성 또는 처리가 필요한 임베디드 시스템에 이상적입니다. 문서 관리 시스템을 구축하든, 자동 보고서 생성기를 만들든, PDF 분석 도구를 개발하든, PDFio는 C 애플리케이션에서 전문적인 PDF 처리를 위해 필요한 필수 기능을 제공합니다.

Previous Next

PDFio 시작하기

TThe 권장 방법은 NuGet을 사용하여 PDFio를 설치하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.

NuGet을 통해 PDFio 설치

Install-Package pdfio_native 

GitHub을 통해 PDFio 설치

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

수동으로 설치할 수도 있습니다; 최신 릴리스 파일을 GitHub 저장소에서 직접 다운로드하십시오.

C를 사용하여 처음부터 PDF 만들기

오픈 소스 PDFio 라이브러리는 C 애플리케이션 내에서 처음부터 새로운 PDF 문서를 생성하는 완전한 지원을 포함하고 있습니다. 새로운 PDF 문서를 만드는 것은 마찬가지로 간단하며, 몇 줄의 C 코드만으로 소프트웨어 개발자는 새 페이지를 추가하고, 텍스트와 간단한 도형을 그리며, 이미지(JPEG, PNG 형식)를 추가하고, 색상과 변형을 적용하고, 표와 구조화된 레이아웃을 구축하는 등 다양한 작업을 수행할 수 있습니다. 다음은 C 코드를 사용하여 사용자 정의 페이지 크기와 내용을 가진 새로운 PDF 문서를 만드는 방법을 보여주는 간단한 예제입니다.

C 라이브러리를 통해 사용자 정의 페이지 크기와 내용이 포함된 간단한 PDF 문서를 만드는 방법은?

#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 라이브러리를 통한 이미지 PDF 변환

이미지를 PDF 형식으로 변환하는 것은 가장 일반적인 문서 처리 작업 중 하나입니다. PDFio 라이브러리는 페이지 크기, 이미지 배치, 스케일링 및 메타데이터에 대한 세밀한 제어를 제공하면서 이를 간단하게 만들어 줍니다. 소프트웨어 개발자는 단일 이미지와 배치 변환을 모두 처리할 수 있는 완전한 이미지‑to‑PDF 변환기를 구축할 수 있습니다. 다음 예제는 개발자가 C 애플리케이션 내에서 하나의 이미지를 PDF로 변환하는 방법을 보여줍니다.

C 라이브러리를 사용하여 단일 이미지를 PDF로 변환하는 방법?

#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 라이브러리를 사용하여 PDF 읽기 및 텍스트 추출

가장 일반적인 작업 중 하나는 PDF 파일에서 텍스트를 읽고 추출하는 것입니다. 오픈 소스 PDFio 라이브러리는 개발자가 페이지와 해당 콘텐츠 스트림을 반복하도록 허용함으로써 이 과정을 직관적으로 만들어 줍니다. 이 라이브러리는 기존 PDF에서 단순 텍스트, 메타데이터, 내장 폰트, 숫자, 이미지, 포도, 이름 등 유용한 정보를 추출하는 전체 지원을 제공합니다. 다음 예제는 기존 PDF를 열고 C 라이브러리를 사용하여 기본 정보를 추출하는 방법을 보여줍니다.

C 라이브러리를 사용하여 PDF 파일에서 간단한 텍스트를 추출하는 방법?

#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는 효율성을 위해 설계되었습니다. 읽을 때 전체 파일을 한 번에 메모리로 로드하지 않습니다. 대신 풀 파싱 방식을 사용하여 파일을 청크 단위로 처리할 수 있게 합니다. 이는 시스템 메모리를 고갈시키지 않고 매우 큰 PDF를 처리하는 데 필수적입니다. 첫 번째 예제의 pdfioPageParseContents 함수는 이 스트림 기반 모델의 대표적인 예입니다. 이 함수는 페이지의 콘텐츠 스트림을 순차적으로 읽으며 이벤트(예: 텍스트 콜백)를 발생시킵니다.

 한국인