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를 참고하십시오.
Document 로 수정 사항을 저장합니다Document.Pages() (PageCollection) 를 통해 페이지에 접근하고 반복합니다PageCollection.Add()/Insert()/Delete() 로 페이지를 추가, 삽입 및 삭제합니다DocumentInfo (Document.Info()) 를 통해 문서 메타데이터를 읽고 설정합니다Document.Optimize()/OptimizeResources() 로 문서 크기를 최적화합니다Aspose::Pdf::Text::TextAbsorber를 사용하여 전체 문서에서 일반 텍스트를 추출합니다TextAbsorber.Visit()를 통해 단일 페이지 또는 전체 문서를 방문합니다TextAbsorber.Text()를 통해 추출된 텍스트를 가져옵니다TextFragmentAbsorber.TextFragments()를 사용하여 개별 텍스트 조각을 찾습니다PngDevice를 사용하여 페이지를 PNG로 렌더링JpegDevice, BmpDevice, TiffDevice를 사용하여 페이지를 JPEG, BMP 또는 TIFF로 렌더링Resolution 클래스를 사용하여 출력 해상도 제어{Device}.Process()를 통해 단일 페이지 처리Document.Encrypt() 로 문서를 암호화합니다CryptoAlgorithm 열거형을 통해 RC4-40, RC4-128, AES-128, 또는 AES-256 을 선택합니다Permissions 타입으로 부여된 권한을 제어합니다Document.Decrypt() 로 비밀번호로 보호된 문서를 복호화합니다Annotation 및 AnnotationCollection을 통해 주석을 추가, 수정 및 평면화합니다.Form 클래스를 통해 AcroForm 필드를 관리합니다.Form.Add()/Form.Delete()를 사용하여 필드를 추가 및 제거합니다.Form.Flatten()을 사용하여 대화형 폼을 정적 콘텐츠로 평면화합니다.라이브러리를 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 암호화를 사용하여 사용자 및 소유자 암호로 보호합니다.
#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");
}
이 제품은 MIT 라이선스를 사용하며 상업용 및 비상업용 제품에서 자유롭게 사용할 수 있고, 활성화 키나 API 호출 제한이 없습니다.
C++20 컴파일러( clang 16+, gcc 13+, 또는 MSVC 2022 17.5+)와 CMake 3.22 이상이 필요합니다. Python 3은 빌드 시에만 필요합니다.
아니요. C++ 표준 라이브러리 외에는 아무 것도 링크하지 않으며 — 런타임에 제3자 PDF, 이미지 또는 압축 종속성이 필요하지 않습니다.
네이티브 PDF 문서를 읽고 저장하며, 렌더링된 페이지를 Bmp, Jpeg, Tiff 및 일반 텍스트로 내보낼 수 있습니다. SVG 콘텐츠를 가져올 수 있습니다.
Document.Encrypt() 메서드를 사용자 비밀번호, 소유자 비밀번호 및 CryptoAlgorithm(RC4x40, RC4x128, AESx128 또는 AESx256)과 함께 호출합니다.
예 — 몇몇 XmpValue 타입 검사 헬퍼(IsDateTime, IsField 등)는 항상 false를 반환하는 스텁입니다; 대신 IsString/IsInteger/IsDouble/IsArray를 사용하십시오.