Aspose.PDF FOSS for C++ เป็นไลบรารีโอเพนซอร์สสมัยใหม่ที่ใช้ C++20 สำหรับทำงานกับเอกสาร PDF — เปิดและบันทึกไฟล์ 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 ที่เลือกผ่าน enum CryptoAlgorithm ฟิลด์ฟอร์มแบบโต้ตอบจะถูกจัดการผ่านคลาส Form และคำอธิบาย — โน้ตข้อความ, ไฮไลท์, รูปร่าง, และตราประทับ — จะถูกเพิ่มและแก้ไขผ่านลำดับชั้นของคลาส Annotation
Aspose.PDF FOSS for C++ ถูกเผยแพร่ภายใต้สัญญาอนุญาต MIT โดยไม่มีค่าธรรมเนียมการรันไทม์หรือข้อจำกัดการใช้งาน มันถูกสร้างเป็นไลบรารีสแตติกผ่าน CMake — เพิ่มเป็นซับดิเรกทอรีของการสร้างของคุณหรือทำการติดตั้งแบบแยกเดี่ยว — และต้องการคอมไพเลอร์ C++20 ที่ไม่มีการพึ่งพาไลบรารีรันไทม์อื่นใด สำหรับคุณลักษณะและการสนับสนุนระดับองค์กร ดู Aspose.PDF for C++ — Enterprise Product.
DocumentDocument.Pages() (PageCollection)PageCollection.Add()/Insert()/Delete()DocumentInfo (Document.Info())Document.Optimize()/OptimizeResources()Aspose::Pdf::Text::TextAbsorberTextAbsorber.Visit()TextAbsorber.Text()TextFragmentAbsorber.TextFragments()PngDeviceJpegDevice, BmpDevice, TiffDeviceResolution{Device}.Process()Document.Encrypt() โดยใช้รหัสผ่านผู้ใช้และเจ้าของCryptoAlgorithmPermissionsDocument.Decrypt()Annotation และ AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()เพิ่มไลบรารีเป็นไดเรกทอรีย่อยของ CMake จากนั้นเปิดเอกสาร, นับจำนวนหน้า, ดึงข้อความด้วย TextAbsorber, และเรนเดอร์หน้า 1 เป็น PNG ที่ความละเอียด 150 DPI.
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++ — ไม่ต้องการการพึ่งพา PDF, รูปภาพ หรือการบีบอัดจากบุคคลที่สามในเวลารันไทม์.
มันสามารถอ่านและบันทึกเอกสาร PDF ดั้งเดิมได้ และส่งออกหน้าที่แสดงผลเป็น Bmp, Jpeg, และ Tiff รวมถึงข้อความธรรมดาได้ อีกทั้งยังสามารถนำเข้าเนื้อหา SVG ได้.
เรียกใช้ Document.Encrypt() พร้อมด้วยรหัสผ่านผู้ใช้ รหัสผ่านเจ้าของ และ CryptoAlgorithm (RC4x40, RC4x128, AESx128 หรือ AESx256).
ใช่ — ตัวช่วยตรวจสอบประเภท XmpValue บางตัว (IsDateTime, IsField, และคล้ายกัน) เป็น stub ที่คืนค่า false เสมอ; ใช้ IsString/IsInteger/IsDouble/IsArray แทน.