1. 제품
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

C++용 Aspose.PDF FOSS

런타임 종속성이 전혀 없는 PDF 문서를 생성, 편집, 렌더링 및 보안하는 오픈 소스 C++ 라이브러리.

Aspose.PDF FOSS — 오픈 소스 C++ PDF 라이브러리

Aspose.PDF FOSS for C++은 PDF 문서를 작업하기 위한 오픈 소스 최신 C++20 라이브러리로, PDF 열기 및 저장, 텍스트 추출, 페이지를 이미지 형식으로 래스터화, 그리고 텍스트, 이미지, 표, 벡터 그래픽, 주석, AcroForm 필드 및 북마크와 같은 요소를 처음부터 구축하는 기능을 제공합니다. 이 라이브러리는 C++ 표준 라이브러리 외에는 아무것에도 링크되지 않으며, TIFF, JPEG, PNG 코덱 및 페이지 래스터라이저를 포함한 모든 기본 요소가 상용 PDF 스택에 의존하지 않고 처음부터 구현되었습니다.

핵심 API은 Document 클래스와 그 Pages() 컬렉션을 중심으로 구축됩니다. 텍스트는 Aspose::Pdf::Text::TextAbsorber를 사용해 추출하고, 페이지는 PngDevice, JpegDevice, BmpDevice, TiffDevice와 같은 디바이스 클래스를 통해 래스터 이미지로 렌더링되며, 문서는 Document.Encrypt()를 사용해 RC4-40, RC4-128, AES-128 또는 AES-256 알고리즘을 CryptoAlgorithm 열거형으로 선택하여 보호할 수 있습니다. 인터랙티브 폼 필드는 Form 클래스로 관리되고, 주석(텍스트 메모, 하이라이트, 도형, 스탬프)은 Annotation 클래스 계층 구조를 통해 추가 및 수정됩니다.

Aspose.PDF FOSS for C++은 MIT 라이선스 하에 배포되며 런타임 비용이나 사용 제한이 없습니다. CMake를 통해 정적 라이브러리로 빌드되며(빌드의 하위 디렉터리로 추가하거나 독립적으로 설치) 다른 런타임 종속성 없이 C++20 컴파일러만 필요합니다. 엔터프라이즈 기능 및 지원에 대해서는 Aspose.PDF for C++ — Enterprise Product를 참고하십시오.

문서 로드 및 페이지 관리

  • 기존 PDF 파일을 열고 Document 로 수정 사항을 저장합니다
  • Document.Pages() (PageCollection) 를 통해 페이지에 접근하고 반복합니다
  • PageCollection.Add()/Insert()/Delete() 로 페이지를 추가, 삽입 및 삭제합니다
  • DocumentInfo (Document.Info()) 를 통해 문서 메타데이터를 읽고 설정합니다
  • Document.Optimize()/OptimizeResources() 로 문서 크기를 최적화합니다

일반적인 사용 사례

  • 보고서 및 인보이스용 PDF 생성 파이프라인 구축
  • 기존 PDF 문서를 병합, 분할 및 재구성
  • 프로그래밍 방식으로 문서 메타데이터 검사 및 업데이트
  • 보관 또는 배포 전에 PDF 파일 크기 감소

텍스트 추출

  • Aspose::Pdf::Text::TextAbsorber를 사용하여 전체 문서에서 일반 텍스트를 추출합니다
  • TextAbsorber.Visit()를 통해 단일 페이지 또는 전체 문서를 방문합니다
  • TextAbsorber.Text()를 통해 추출된 텍스트를 가져옵니다
  • TextFragmentAbsorber.TextFragments()를 사용하여 개별 텍스트 조각을 찾습니다

전형적인 사용 사례

  • 검색을 위한 PDF 내용 인덱싱
  • 청구서 및 구조화된 문서에서 데이터 추출
  • 텍스트 마이닝 또는 콘텐츠 분석 파이프라인 구축
  • 자동화 테스트 스위트에서 문서 내용 확인

래스터 이미지로 렌더링

  • PngDevice를 사용하여 페이지를 PNG로 렌더링
  • JpegDevice, BmpDevice, TiffDevice를 사용하여 페이지를 JPEG, BMP 또는 TIFF로 렌더링
  • Resolution 클래스를 사용하여 출력 해상도 제어
  • {Device}.Process()를 통해 단일 페이지 처리

일반적인 사용 사례

  • 문서 뷰어용 페이지 썸네일 생성
  • 벡터 PDF에서 인쇄용 래스터 출력 생성
  • PDF를 이미지로 변환하는 서비스 구축
  • 생성된 PDF에 대한 시각적 회귀 기준선 생성

암호화 및 보안

  • 사용자와 소유자 비밀번호를 사용하여 Document.Encrypt() 로 문서를 암호화합니다
  • CryptoAlgorithm 열거형을 통해 RC4-40, RC4-128, AES-128, 또는 AES-256 을 선택합니다
  • Permissions 타입으로 부여된 권한을 제어합니다
  • Document.Decrypt() 로 비밀번호로 보호된 문서를 복호화합니다

일반적인 사용 사례

  • 배포 전에 기밀 PDF 보고서를 보호합니다
  • 공유 문서에 인쇄/복사/편집 제한을 적용합니다
  • 생성된 청구서 및 명세서에 비밀번호 보호를 추가합니다
  • 문서 파이프라인의 일부로 문서를 일괄 암호화합니다

주석 및 대화형 양식

  • Annotation 및 AnnotationCollection을 통해 주석을 추가, 수정 및 평면화합니다.
  • Form 클래스를 통해 AcroForm 필드를 관리합니다.
  • Form.Add()/Form.Delete()를 사용하여 필드를 추가 및 제거합니다.
  • Form.Flatten()을 사용하여 대화형 폼을 정적 콘텐츠로 평면화합니다.

전형적인 사용 사례

  • 공유된 PDF에 검토 의견 및 하이라이트 추가
  • 데이터 수집을 위한 입력 가능한 PDF 양식 만들기
  • 보관 전에 제출된 양식 평탄화
  • 프로그래밍 방식으로 양식 필드를 미리 채우고 잠그기

PDF 열기, 텍스트 추출 및 페이지 렌더링

라이브러리를 CMake 하위 디렉터리로 추가하고, 문서를 열어 페이지 수를 세고, TextAbsorber로 텍스트를 추출한 다음, 페이지 1을 150 DPI의 PNG로 렌더링합니다.

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/page_collection.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Pages: " << doc.Pages().Count() << "\n";

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

    Aspose::Pdf::Devices::PngDevice png(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.png", std::ios::binary);
    png.Process(doc.Pages()[1], out);
}

AES-256으로 문서 암호화

문서를 열고 AES-256 암호화를 사용하여 사용자 및 소유자 암호로 보호합니다.

#include <aspose/pdf/document.hpp>
int main() {
    Aspose::Pdf::Document doc("input.pdf");
    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions(),
                Aspose::Pdf::CryptoAlgorithm::AESx256);
    doc.Save("encrypted.pdf");
}

문서 메타데이터 읽기 및 업데이트

기존 /Info 항목을 읽고 DocumentInfo를 통해 문서 제목을 업데이트합니다.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/document_info.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto& info = doc.Info();
    std::cout << "Title: " << info.Title() << "\n";
    std::cout << "Author: " << info.Author() << "\n";

    doc.SetTitle("Updated Report Title");
    doc.Save("output.pdf");
}

자주 묻는 질문

Aspose.PDF FOSS for C++의 라이선스 모델은 무엇입니까?

이 제품은 MIT 라이선스를 사용하며 상업용 및 비상업용 제품에서 자유롭게 사용할 수 있고, 활성화 키나 API 호출 제한이 없습니다.

어떤 컴파일러와 CMake 버전이 필요합니까?

C++20 컴파일러( clang 16+, gcc 13+, 또는 MSVC 2022 17.5+)와 CMake 3.22 이상이 필요합니다. Python 3은 빌드 시에만 필요합니다.

라이브러리에 런타임 종속성이 있나요?

아니요. C++ 표준 라이브러리 외에는 아무 것도 링크하지 않으며 — 런타임에 제3자 PDF, 이미지 또는 압축 종속성이 필요하지 않습니다.

어떤 형식을 읽고 내보낼 수 있나요?

네이티브 PDF 문서를 읽고 저장하며, 렌더링된 페이지를 Bmp, Jpeg, Tiff 및 일반 텍스트로 내보낼 수 있습니다. SVG 콘텐츠를 가져올 수 있습니다.

PDF 문서를 암호화하려면 어떻게 해야 하나요?

Document.Encrypt() 메서드를 사용자 비밀번호, 소유자 비밀번호 및 CryptoAlgorithm(RC4x40, RC4x128, AESx128 또는 AESx256)과 함께 호출합니다.

현재 릴리스에 알려진 제한 사항이 있습니까?

예 — 몇몇 XmpValue 타입 검사 헬퍼(IsDateTime, IsField 등)는 항상 false를 반환하는 스텁입니다; 대신 IsString/IsInteger/IsDouble/IsArray를 사용하십시오.

  

지원 및 학습 자료

 한국어