Pendahuluan

Aspose.PDF FOSS untuk C++ adalah perpustakaan open-source baru untuk bekerja dengan dokumen PDF dari kode C++20. Perpustakaan ini dirilis di bawah lisensi MIT dan tidak memiliki ketergantungan runtime selain pustaka standar C++ — enkoder BMP, JPEG, dan TIFF, rasteriser halaman, serta parser PDF diimplementasikan secara internal, sehingga tidak ada tautan ke mesin PDF komersial, codec gambar eksternal, atau perpustakaan kriptografi pihak ketiga.

Perpustakaan diatur di sekitar kelas Aspose::Pdf::Document, yang memuat PDF dari jalur file dan mengekspos isinya melalui Document.Pages(), sebuah PageCollection dari objek Page individu. Dari sana, API mencakup ekstraksi teks, rasterisasi halaman, enkripsi dokumen, anotasi, dan bidang AcroForm — operasi yang diperlukan untuk membaca, memeriksa, dan memodifikasi file PDF yang ada, atau menyusun yang baru dari awal.

Rilis ini ditujukan bagi pengembang yang membutuhkan pemrosesan PDF di dalam basis kode C++ tanpa menambahkan lisensi komersial atau rantai ketergantungan pihak ketiga: pipeline dokumen, layanan ekstraksi konten, alat konversi PDF-ke-gambar, dan aplikasi yang perlu mengenkripsi atau membaca kembali data formulir sebagai bagian dari build yang lebih besar.


Apa yang Disertakan

Memuat Dokumen dan Akses Halaman

Membuka PDF yang sudah ada cukup dengan satu pemanggilan konstruktor. Document menguraikan file dan mengekspos halamannya melalui Pages(), yang mengembalikan PageCollection yang mendukung indeks berbasis 1, Count(), serta Add()/Insert()/Delete() untuk menyusun ulang urutan halaman.

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

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Page count: " << doc.Pages().Count() << "\n";

    auto page = doc.Pages()[1];
    std::cout << "First page number: " << page.Number() << "\n";
}

Ekstraksi Teks

Aspose::Pdf::Text::TextAbsorber menelusuri sebuah Document atau satu Page dan mengumpulkan konten teks yang ditemukan. Panggil Visit() dengan dokumen atau halaman, lalu baca hasilnya dengan Text(). HasErrors() melaporkan apakah absorber menemukan konten yang tidak dapat diproses.

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

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

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

    if (absorber.HasErrors()) {
        std::cerr << "Some content could not be extracted\n";
    }
}

Rendering ke Gambar Raster

Halaman dirender ke BMP, JPEG, atau TIFF melalui kelas BmpDevice, JpegDevice, dan TiffDevice. Setiap perangkat dibuat dengan Resolution dan mengekspos metode Process(page, output) yang menulis gambar yang dirender ke aliran output.

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

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

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

Enkripsi

Document.Encrypt() melindungi dokumen dengan kata sandi pengguna, kata sandi pemilik, nilai izin, dan pilihan CryptoAlgorithm. Enum tersebut mencakup RC4-40 (RC4x40), RC4-128 (RC4x128), AES-128 (AESx128), dan AES-256 (AESx256). Document.Decrypt() membalikkan operasi tersebut, dan IsEncrypted() melaporkan apakah dokumen saat ini dienkripsi.

#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

Setiap Page mengekspos AnnotationCollection melalui Annotations(). Sebuah TextAnnotation dibuat terhadap dokumen pemilik, diposisikan dengan Rectangle, dan ditambahkan ke koleksi halaman dengan Add().

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

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

    Aspose::Pdf::Annotations::TextAnnotation note(doc);
    note.Rect(Aspose::Pdf::Rectangle(100.0, 700.0, 200.0, 720.0, false));
    note.Contents("Reviewed - see section 2");

    doc.Pages()[1].Annotations().Add(note);
    doc.Save("annotated.pdf");
}

Bidang AcroForm

Document.Form() mengembalikan Form dokumen, yang mengekspos bidang yang ada melalui Fields() sebagai std::vector<Field*>. Setiap Field melaporkan namanya dan nilai saat ini melalui PartialName() dan Value(), dan Form.Flatten() menggabungkan tampilan setiap bidang ke dalam konten halaman, menghapus interaktivitas.

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

int main() {
    Aspose::Pdf::Document doc("form.pdf");
    auto& form = doc.Form();

    std::cout << "Field count: " << form.Count() << "\n";
    for (auto* field : form.Fields()) {
        std::cout << field->PartialName() << " = " << field->Value() << "\n";
    }

    form.Flatten();
    doc.Save("flattened.pdf");
}

Panduan Cepat

Tambahkan perpustakaan sebagai subdirektori CMake dan tautkan terhadap target aspose_pdf_foss:

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

Buka sebuah dokumen, cetak jumlah halamannya, ekstrak teksnya, dan render halaman pertama ke file BMP:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/bmp_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::BmpDevice bmp(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.bmp", std::ios::binary);
    bmp.Process(doc.Pages()[1], out);
}

Format yang Didukung

FormatEkstensiBacaTulis
BMP.bmp
JPEG.jpg
TIFF.tiff
Text.txt
SVG.svg

BMP, JPEG, dan TIFF adalah output rendering halaman yang dihasilkan oleh kelas perangkat masing-masing. Teks diekstrak dari PDF melalui TextAbsorber. SVG diimpor sebagai konten vektor melalui jalur pemuatan SVG perpustakaan.


Sumber Terbuka & Lisensi

Aspose.PDF FOSS untuk C++ didistribusikan di bawah lisensi MIT, dengan kode sumber lengkap tersedia di github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp. Lisensi mengizinkan penggunaan komersial, modifikasi, dan redistribusi tanpa perjanjian terpisah.


Memulai

Sumber Daya Terkait