1. Produk
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

Aspose.PDF FOSS untuk C++

Perpustakaan C++ sumber terbuka untuk membuat, menyunting, merender, dan mengamankan dokumen PDF dengan nol dependensi runtime.

Aspose.PDF FOSS — Perpustakaan PDF C++ Sumber Terbuka

Aspose.PDF FOSS for C++ adalah perpustakaan C++20 sumber terbuka modern untuk bekerja dengan dokumen PDF — membuka dan menyimpan PDF, mengekstrak teks, meraster halaman ke format gambar, dan membangun dokumen dari awal (teks, gambar, tabel, grafik vektor, anotasi, bidang AcroForm, dan bookmark). Perpustakaan ini hanya terhubung dengan pustaka standar C++: setiap primitif, termasuk codec TIFF, JPEG, dan PNG serta rasteriser halaman, diimplementasikan dari awal tanpa ketergantungan pada stack PDF komersial.

Inti API dibangun di sekitar kelas Document dan koleksi Pages()-nya. Teks diekstrak dengan Aspose::Pdf::Text::TextAbsorber, halaman dirender ke gambar raster melalui kelas perangkat seperti PngDevice, JpegDevice, BmpDevice, dan TiffDevice, dan dokumen dapat diamankan dengan Document.Encrypt() menggunakan algoritma RC4-40, RC4-128, AES-128, atau AES-256 yang dipilih melalui enum CryptoAlgorithm. Bidang formulir interaktif dikelola melalui kelas Form, dan anotasi — catatan teks, sorotan, bentuk, dan cap — ditambahkan serta dimodifikasi melalui hirarki kelas Annotation.

Aspose.PDF FOSS for C++ dirilis di bawah lisensi MIT tanpa biaya runtime atau pembatasan penggunaan. Ia dibangun sebagai perpustakaan statis melalui CMake — tambahkan sebagai subdirektori dari build Anda atau instal secara mandiri — dan memerlukan kompilator C++20 tanpa dependensi runtime lainnya. Untuk fitur enterprise dan dukungan, lihat Aspose.PDF for C++ — Enterprise Product.

Memuat Dokumen dan Manajemen Halaman

  • Buka file PDF yang ada dan simpan modifikasi dengan Document
  • Akses dan iterasi halaman melalui Document.Pages() (PageCollection)
  • Tambahkan, sisipkan, dan hapus halaman dengan PageCollection.Add()/Insert()/Delete()
  • Baca dan atur metadata dokumen melalui DocumentInfo (Document.Info())
  • Optimalkan ukuran dokumen dengan Document.Optimize()/OptimizeResources()

Kasus penggunaan umum

  • Membuat pipeline pembuatan PDF untuk laporan dan faktur
  • Menggabungkan, membagi, dan mengatur kembali dokumen PDF yang ada
  • Memeriksa dan memperbarui metadata dokumen secara programatik
  • Mengurangi ukuran file PDF sebelum pengarsipan atau distribusi

Ekstraksi Teks

  • Ekstrak teks biasa dari seluruh dokumen dengan Aspose::Pdf::Text::TextAbsorber
  • Kunjungi satu halaman atau seluruh dokumen melalui TextAbsorber.Visit()
  • Ambil teks yang diekstrak melalui TextAbsorber.Text()
  • Temukan fragmen teks individu dengan TextFragmentAbsorber.TextFragments()

Kasus penggunaan umum

  • Indeks konten PDF untuk pencarian
  • Ekstrak data dari faktur dan dokumen terstruktur
  • Bangun pipeline penambangan teks atau analisis konten
  • Verifikasi konten dokumen dalam rangkaian pengujian otomatis

Rendering ke Gambar Raster

  • Render halaman ke PNG dengan PngDevice
  • Render halaman ke JPEG, BMP, atau TIFF dengan JpegDevice, BmpDevice, TiffDevice
  • Kontrol resolusi output dengan kelas Resolution
  • Proses satu halaman melalui {Device}.Process()

Kasus penggunaan umum

  • Menghasilkan thumbnail halaman untuk penampil dokumen
  • Menghasilkan output raster siap cetak dari PDF vektor
  • Membangun layanan konversi PDF-ke-gambar
  • Membuat baseline regresi visual untuk PDF yang dihasilkan

Enkripsi dan Keamanan

  • Enkripsi dokumen dengan Document.Encrypt() menggunakan kata sandi pengguna dan pemilik
  • Pilih RC4-40, RC4-128, AES-128, atau AES-256 melalui enum CryptoAlgorithm
  • Kendalikan izin yang diberikan dengan tipe Permissions
  • Dekripsi dokumen yang diproteksi kata sandi dengan Document.Decrypt()

Kasus penggunaan umum

  • Lindungi laporan PDF rahasia sebelum distribusi
  • Terapkan pembatasan cetak/salin/edit pada dokumen yang dibagikan
  • Tambahkan perlindungan kata sandi pada faktur dan pernyataan yang dihasilkan
  • Enkripsi massal dokumen sebagai bagian dari alur kerja dokumen

Anotasi dan Formulir Interaktif

  • Tambahkan, ubah, dan ratakan anotasi melalui Annotation dan AnnotationCollection
  • Kelola bidang AcroForm melalui kelas Form
  • Tambahkan dan hapus bidang dengan Form.Add()/Form.Delete()
  • Ratakan formulir interaktif menjadi konten statis dengan Form.Flatten()

Kasus penggunaan umum

  • Tambahkan komentar ulasan dan sorotan ke PDF yang dibagikan
  • Buat formulir PDF yang dapat diisi untuk pengumpulan data
  • Ratakan formulir yang diserahkan sebelum pengarsipan
  • Isi sebelumnya secara programatis dan kunci bidang formulir

Buka PDF, Ekstrak Teks, dan Render Halaman

Tambahkan perpustakaan sebagai subdirektori CMake, kemudian buka dokumen, hitung halamannya, ekstrak teks dengan TextAbsorber, dan render halaman 1 ke PNG pada 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);
}

Enkripsi Dokumen dengan AES-256

Buka dokumen dan lindungi dengan kata sandi pengguna dan pemilik menggunakan enkripsi 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");
}

Baca dan Perbarui Metadata Dokumen

Baca entri /Info yang ada dan perbarui judul dokumen melalui 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");
}

Pertanyaan yang Sering Diajukan

Apa model lisensi untuk Aspose.PDF FOSS for C++?

Ini berlisensi MIT dan gratis digunakan dalam produk komersial maupun non-komersial, tanpa kunci aktivasi atau batas panggilan API.

Versi kompiler dan CMake apa yang diperlukan?

Sebuah kompiler C++20 (clang 16+, gcc 13+, atau MSVC 2022 17.5+) dan CMake 3.22 atau yang lebih baru. Python 3 diperlukan hanya pada waktu build.

Apakah perpustakaan memiliki ketergantungan runtime?

Tidak. Ini hanya terhubung dengan pustaka standar C++ — tidak ada ketergantungan pihak ketiga untuk PDF, gambar, atau kompresi yang diperlukan pada waktu berjalan.

Format apa yang dapat dibaca dan diekspor?

Ia membaca dan menyimpan dokumen PDF asli, serta mengekspor halaman yang dirender ke Bmp, Jpeg, dan Tiff, plus teks biasa. Konten SVG dapat diimpor.

Bagaimana cara saya mengenkripsi dokumen PDF?

Panggil Document.Encrypt() dengan kata sandi pengguna, kata sandi pemilik, dan CryptoAlgorithm (RC4x40, RC4x128, AESx128, atau AESx256).

Apakah ada keterbatasan yang diketahui dalam rilis saat ini?

Ya — beberapa pembantu pemeriksaan tipe XmpValue (IsDateTime, IsField, dan serupa) adalah stub yang selalu mengembalikan false; gunakan IsString/IsInteger/IsDouble/IsArray sebagai gantinya.

  

Sumber Daya Dukungan dan Pembelajaran

 Bahasa Indonesia