Aspose.PDF FOSS for C++ Fitur

Aspose.PDF FOSS for C++ Fitur

Aspose.PDF FOSS untuk Fitur C++

Aspose.PDF FOSS for C++ adalah perpustakaan C++20 untuk membuat, membuka, memodifikasi, dan menyimpan dokumen PDF. Halaman ini meninjau area kemampuan utama dan kelas-kelas yang berfungsi sebagai titik masuknya. Setiap area dibahas secara mendalam pada halaman panduan pengembang masing-masing.


Manajemen Dokumen

Aspose::Pdf::Document adalah objek akar untuk setiap operasi. Ia membuka file yang ada dari sebuah jalur, menampilkan koleksi halaman melalui Pages(), dan menyimpan perubahan dengan Save(). Optimize() dan OptimizeResources() mengurangi ukuran file dengan menghapus sumber daya yang tidak terpakai atau duplikat.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    auto& pages = doc.Pages();
    pages.Add();                 // append a blank page
    pages.Delete(1);             // remove the original first page

    doc.Optimize();
    doc.Save("output.pdf");
}

Ekstraksi Teks

Aspose::Pdf::Text::TextAbsorber menelusuri dokumen atau satu halaman dan mengumpulkan teks polos, yang dapat diambil dengan Text() setelah memanggil Visit(). TextFragmentAbsorber melakukan penelusuran yang sama tetapi mengembalikan objek TextFragment individu melalui TextFragments(), memberikan akses ke posisi setiap fragmen dan status teksnya.

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

int main() {
    Aspose::Pdf::Document doc("report.pdf");

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);

    std::cout << absorber.Text() << "\n";
}

Rendering ke Gambar Raster

Perangkat perenderan halaman mengubah Page menjadi gambar raster. BmpDevice, PngDevice, JpegDevice, dan TiffDevice berbagi tanda tangan Process(page, output) yang sama dan dibangun dengan Resolution yang mengatur DPI keluaran.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>

int main() {
    Aspose::Pdf::Document doc("report.pdf");

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

Enkripsi

Document::Encrypt() melindungi dokumen dengan kata sandi pengguna (diperlukan untuk membuka) dan kata sandi pemilik (diperlukan untuk mengubah izin), menggunakan algoritma yang dipilih dari enum CryptoAlgorithm: RC4x40, RC4x128, AESx128, atau AESx256. IsEncrypted() melaporkan status saat ini dan Decrypt() menghapus perlindungan dari dokumen yang sudah terbuka.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions::PrintDocument,
                Aspose::Pdf::CryptoAlgorithm::AESx256);

    doc.Save("encrypted.pdf");
}

Anotasi

Anotasi menempelkan catatan terlihat, bentuk, dan markup ke halaman. Setiap tipe anotasi diturunkan dari Annotation dan dibangun dengan Page target serta Rectangle penempatan, kemudian ditambahkan ke halaman melalui Anotasi() (sebuah AnnotationCollection).

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Annotations::TextAnnotation note(
        page, Aspose::Pdf::Rectangle(50.0, 700.0, 250.0, 740.0, false));
    note.Contents("Reviewed and approved.");

    page.Annotations().Add(note);
    doc.Save("annotated.pdf");
}

Forms

Bidang AcroForm dikelola melalui Aspose::Pdf::Forms::Form, dapat diakses melalui Document::Form(). Jenis bidang seperti TextBoxField dibangun seperti anotasi — dengan Page dan Rectangle — dan didaftarkan dengan Form::Add().

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_box_field.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Forms::TextBoxField field(
        page, Aspose::Pdf::Rectangle(100.0, 650.0, 300.0, 670.0, false));
    field.PartialName("customer_name");
    field.Value("Jane Doe");

    doc.Form().Add(field);
    doc.Save("form_filled.pdf");
}

Tips dan Praktik Terbaik

  • Buka file input dengan path menggunakan konstruktor Document; panggil Save() dengan jalur output yang eksplisit alih-alih menimpa sumber sementara handle lain ke file tersebut masih terbuka.
  • Panggil Optimize() sebelum Save() ketika sebuah dokumen telah banyak diedit — itu menghapus sumber daya yang tidak lagi dirujuk oleh halaman manapun.
  • Bangun perangkat raster (BmpDevice, PngDevice, JpegDevice, TiffDevice) satu kali per resolusi dan gunakan kembali mereka di seluruh halaman alih-alih membuat perangkat baru untuk setiap halaman.
  • Tetapkan baik kata sandi pengguna maupun kata sandi pemilik saat memanggil Encrypt() — kata sandi pengguna kosong memungkinkan siapa pun membuka file, sementara kata sandi pemilik mengontrol perubahan izin.
  • Pertahankan objek anotasi dan bidang (TextAnnotation, TextBoxField, dan sejenisnya) tetap hidup hingga setelah Save() mengembalikan, karena dokumen menyimpan referensi ke konten halaman tempat mereka ditambahkan.

Masalah Umum

MasalahPenyebabPerbaikan
Save() menghasilkan file dengan konten yang tidak berubahPengeditan dilakukan pada salinan halaman atau anotasi, bukan pada objek yang diperoleh dari doc.Pages()Modifikasi objek yang dikembalikan langsung oleh Pages(), Annotations(), atau Form()
Gambar yang dirender kosong atau putihIndeks halaman yang salah diberikan ke Process()PageCollection menggunakan indeks mulai dari 1 — halaman 1 adalah doc.Pages()[1], bukan [0]
Encrypt() menghasilkan file yang tetap dapat dibuka tanpa kata sandiKata sandi pengguna dibiarkan kosongBerikan string yang tidak kosong sebagai argumen userPassword
Teks yang diekstrak kosong untuk PDF yang dipindaiHalaman hanya berisi konten gambar raster, bukan operator teksTextAbsorber membaca operator teks; halaman yang hanya berisi gambar tidak memiliki apa pun untuk diekstrak
Bidang yang ditambahkan dengan Form::Add() tidak muncul di halamanField’s Rectangle berada di luar MediaBox halamanKonfirmasi koordinat persegi panjang berada dalam batas Page::MediaBox()

FAQ

Apakah Aspose.PDF FOSS untuk C++ bergantung pada perpustakaan PDF komersial apa pun?

Tidak. Ini adalah implementasi C++20 dari nol tanpa ketergantungan pada stack PDF komersial apa pun, dirilis di bawah lisensi MIT.

Apakah saya dapat membuat PDF baru dari nol alih-alih membuka yang sudah ada?

Ya. Document memiliki konstruktor default yang membuat dokumen kosong; panggil Pages().Add() untuk menambahkan halaman sebelum menyimpan.

Ke format raster apa saya dapat merender?

BmpDevice, PngDevice, JpegDevice, dan TiffDevice merender halaman individual ke BMP, PNG, JPEG, dan TIFF masing-masing.

Algoritma enkripsi apa yang didukung?

CryptoAlgorithm menawarkan RC4x40, RC4x128, AESx128, dan AESx256, yang diteruskan ke Document::Encrypt().

Ke mana saya harus pergi selanjutnya?

Panduan pengembang mencakup halaman khusus untuk manajemen dokumen dan halaman, grafik dan bentuk asli PDF, anotasi dan formulir interaktif, serta kelas facade tingkat tinggi yang membungkus operasi file umum.


API Reference Ringkasan

Kelas/MetodeDeskripsi
DocumentObjek root — buka, buat, simpan, dan optimalkan PDF
Document.Pages()Mengembalikan PageCollection dokumen
Document.Encrypt() / Decrypt()Lindungi dokumen dengan kata sandi atau hapus perlindungan dari dokumen
Document.Form()Mengembalikan kontainer AcroForm dokumen
TextAbsorberMengekstrak teks biasa dari dokumen atau halaman
TextFragmentAbsorberMengekstrak fragmen teks yang diposisikan
BmpDevice / PngDevice / JpegDevice / TiffDeviceMerender halaman ke format gambar raster
ResolutionDPI output yang diteruskan ke perangkat rendering
CryptoAlgorithmPemilihan algoritma enkripsi: RC4 atau AES, 40–256 bit
PermissionsBendera kontrol akses yang diteruskan ke Encrypt()
Annotation / AnnotationCollectionTipe dasar dan wadah untuk anotasi halaman
TextAnnotationAnotasi catatan teks
FormWadah bidang AcroForm dicapai melalui Document.Form()
TextBoxFieldBidang formulir teks satu baris/banyak baris

Lihat Juga

 Bahasa Indonesia