1. ผลิตภัณฑ์
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

Aspose.PDF FOSS สำหรับ C++

ไลบรารี C++ แบบโอเพนซอร์สสำหรับสร้าง แก้ไข เรนเดอร์ และรักษาความปลอดภัยเอกสาร PDF โดยไม่มีการพึ่งพา runtime.

Aspose.PDF FOSS — ไลบรารี PDF แบบโอเพนซอร์สสำหรับ C++

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.

การโหลดเอกสารและการจัดการหน้า

  • เปิดไฟล์ PDF ที่มีอยู่แล้วและบันทึกการแก้ไขด้วย Document
  • เข้าถึงและวนลูปหน้าโดยใช้ Document.Pages() (PageCollection)
  • เพิ่ม, แทรก, และลบหน้าโดยใช้ PageCollection.Add()/Insert()/Delete()
  • อ่านและตั้งค่าเมตาดาต้าเอกสารผ่าน DocumentInfo (Document.Info())
  • เพิ่มประสิทธิภาพขนาดเอกสารด้วย Document.Optimize()/OptimizeResources()

กรณีการใช้งานทั่วไป

  • สร้าง pipeline การสร้าง PDF สำหรับรายงานและใบแจ้งหนี้
  • ผสาน, แบ่ง, และจัดระเบียบเอกสาร PDF ที่มีอยู่ใหม่
  • ตรวจสอบและอัปเดตเมตาดาต้าของเอกสารแบบโปรแกรม
  • ลดขนาดไฟล์ PDF ก่อนการจัดเก็บหรือการแจกจ่าย

การสกัดข้อความ

  • สกัดข้อความธรรมดาจากเอกสารทั้งหมดด้วย Aspose::Pdf::Text::TextAbsorber
  • เยี่ยมชมหน้าเดียวหรือทั้งเอกสารผ่าน TextAbsorber.Visit()
  • ดึงข้อความที่สกัดได้ผ่าน TextAbsorber.Text()
  • ค้นหาชิ้นส่วนข้อความแต่ละส่วนด้วย TextFragmentAbsorber.TextFragments()

กรณีการใช้งานทั่วไป

  • ทำดัชนีเนื้อหา PDF เพื่อการค้นหา
  • ดึงข้อมูลจากใบแจ้งหนี้และเอกสารที่มีโครงสร้าง
  • สร้าง pipeline สำหรับการทำเหมืองข้อความหรือการวิเคราะห์เนื้อหา
  • ตรวจสอบเนื้อหาเอกสารในชุดทดสอบอัตโนมัติ

การเรนเดอร์เป็นภาพแรสเตอร์

  • แสดงผลหน้าเป็น PNG ด้วย PngDevice
  • แสดงผลหน้าเป็น JPEG, BMP หรือ TIFF ด้วย JpegDevice, BmpDevice, TiffDevice
  • ควบคุมความละเอียดของผลลัพธ์ด้วยคลาส Resolution
  • ประมวลผลหน้าเดียวผ่าน {Device}.Process()

กรณีการใช้งานทั่วไป

  • สร้างภาพย่อของหน้าเพื่อใช้ในตัวดูเอกสาร
  • สร้างเอาต์พุตแรสเตอร์พร้อมพิมพ์จาก PDF แบบเวกเตอร์
  • สร้างบริการแปลง PDF เป็นภาพ
  • สร้างฐานข้อมูลการเปรียบเทียบภาพเชิงวิชวลสำหรับ PDF ที่สร้างขึ้น

การเข้ารหัสและความปลอดภัย

  • เข้ารหัสเอกสารด้วย Document.Encrypt() โดยใช้รหัสผ่านผู้ใช้และเจ้าของ
  • เลือก RC4-40, RC4-128, AES-128 หรือ AES-256 ผ่าน enum CryptoAlgorithm
  • ควบคุมสิทธิ์ที่ให้ด้วยประเภท Permissions
  • ถอดรหัสเอกสารที่มีการป้องกันด้วยรหัสผ่านด้วย Document.Decrypt()

กรณีการใช้งานทั่วไป

  • ปกป้องรายงาน PDF ที่เป็นความลับก่อนการแจกจ่าย
  • บังคับข้อจำกัดการพิมพ์/คัดลอก/แก้ไขบนเอกสารที่แชร์
  • เพิ่มการป้องกันด้วยรหัสผ่านให้กับใบแจ้งหนี้และใบแจ้งยอดที่สร้างขึ้น
  • เข้ารหัสเอกสารเป็นชุดเป็นส่วนหนึ่งของกระบวนการเอกสาร

คำอธิบายและแบบฟอร์มเชิงโต้ตอบ

  • เพิ่ม, แก้ไข และทำให้ annotation แบนผ่าน Annotation และ AnnotationCollection
  • จัดการฟิลด์ AcroForm ผ่านคลาส Form
  • เพิ่มและลบฟิลด์ด้วย Form.Add()/Form.Delete()
  • ทำให้ฟอร์มโต้ตอบเป็นเนื้อหาแบบคงที่ด้วย Form.Flatten()

กรณีการใช้งานทั่วไป

  • เพิ่มความคิดเห็นการตรวจสอบและการไฮไลท์ใน PDF ที่แชร์
  • สร้างแบบฟอร์ม PDF ที่สามารถกรอกข้อมูลได้สำหรับการเก็บข้อมูล
  • ทำให้ฟอร์มที่ส่งมาถูกแปลงเป็นแบนก่อนการเก็บถาวร
  • เติมข้อมูลล่วงหน้าและล็อกฟิลด์ฟอร์มโดยอัตโนมัติผ่านโปรแกรม

เปิด PDF, ดึงข้อความ, แล้วแสดงผลหน้า

เพิ่มไลบรารีเป็นไดเรกทอรีย่อยของ 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

เปิดเอกสารและปกป้องด้วยรหัสผ่านของผู้ใช้และผู้เป็นเจ้าของโดยใช้การเข้ารหัส 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++ — ไม่ต้องการการพึ่งพา PDF, รูปภาพ หรือการบีบอัดจากบุคคลที่สามในเวลารันไทม์.

มันสามารถอ่านและส่งออกรูปแบบใดได้บ้าง?

มันสามารถอ่านและบันทึกเอกสาร PDF ดั้งเดิมได้ และส่งออกหน้าที่แสดงผลเป็น Bmp, Jpeg, และ Tiff รวมถึงข้อความธรรมดาได้ อีกทั้งยังสามารถนำเข้าเนื้อหา SVG ได้.

ฉันจะเข้ารหัสเอกสาร PDF อย่างไร?

เรียกใช้ Document.Encrypt() พร้อมด้วยรหัสผ่านผู้ใช้ รหัสผ่านเจ้าของ และ CryptoAlgorithm (RC4x40, RC4x128, AESx128 หรือ AESx256).

มีข้อจำกัดที่ทราบอยู่ในรุ่นปัจจุบันหรือไม่?

ใช่ — ตัวช่วยตรวจสอบประเภท XmpValue บางตัว (IsDateTime, IsField, และคล้ายกัน) เป็น stub ที่คืนค่า false เสมอ; ใช้ IsString/IsInteger/IsDouble/IsArray แทน.

  

ทรัพยากรสนับสนุนและการเรียนรู้

 ภาษาไทย