Aspose.PDF FOSS for C++ Funcționalități

Aspose.PDF FOSS for C++ Funcționalități

Aspose.PDF FOSS pentru C++ Caracteristici

Aspose.PDF FOSS pentru C++ este o bibliotecă C++20 pentru crearea, deschiderea, modificarea și salvarea documentelor PDF. Această pagină prezintă zonele majore de funcționalitate și clasele care servesc ca puncte de intrare. Fiecare zonă este tratată în profunzime pe propria pagină de ghid pentru dezvoltatori.


Gestionarea documentelor

Aspose::Pdf::Document este obiectul rădăcină pentru fiecare operație. Deschide un fișier existent dintr-o cale, expune colecția de pagini prin Pages() și păstrează modificările cu Save(). Optimize() și OptimizeResources() reduc dimensiunea fișierului prin eliminarea resurselor neutilizate sau duplicate.

#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");
}

Extracție de text

Aspose::Pdf::Text::TextAbsorber parcurge un document sau o singură pagină și colectează text simplu, care este obținut cu Text() după apelarea Visit(). TextFragmentAbsorber efectuează aceeași parcurgere, dar returnează obiecte individuale TextFragment prin TextFragments(), oferind acces la poziția și starea de text a fiecărui fragment.

#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";
}

Randare în imagini raster

Dispozitivele de randare a paginilor convertează un Page într-o imagine raster. BmpDevice, PngDevice, JpegDevice și TiffDevice împărtășesc aceeași semnătură Process(page, output) și sunt construite cu un Resolution care stabilește DPI-ul de ieșire.

#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);
}

Criptare

Document::Encrypt() protejează un document cu parola utilizatorului (necesară pentru a-l deschide) și cu parola proprietarului (necesară pentru a modifica permisiunile), utilizând un algoritm selectat din enumerarea CryptoAlgorithm: RC4x40, RC4x128, AESx128 sau AESx256. IsEncrypted() raportează starea curentă și Decrypt() elimină protecția unui document deja deschis.

#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");
}

Anotări

Anotările atașează note vizibile, forme și marcaje unei pagini. Fiecare tip de anotare derivă din Annotation și este construit cu Page țintă și cu o Rectangle de plasare, apoi este adăugat paginii prin Anotări() (un 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

Câmpurile AcroForm sunt gestionate prin Aspose::Pdf::Forms::Form, accesibile prin Document::Form(). Tipurile de câmp, cum ar fi TextBoxField, sunt construite ca și anotările — cu un Page și un Rectangle — și sunt înregistrate la 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");
}

Sfaturi și cele mai bune practici

  • Deschide fișierele de intrare prin cale folosind constructorul Document; apelează Save() cu o cale de ieșire explicită în loc să suprascrii sursa în timp ce alte handle-uri către el pot fi încă deschise.
  • Apelează Optimize() înainte de Save() când un document a fost editat intens — aceasta elimină resursele care nu mai sunt referențiate de nicio pagină.
  • Construiește dispozitivele raster (BmpDevice, PngDevice, JpegDevice, TiffDevice) o singură dată pentru fiecare rezoluție și reutilizează-le pe parcursul paginilor în loc să recreezi un dispozitiv pentru fiecare pagină.
  • Setează atât parola utilizatorului, cât și parola proprietarului când apelezi Encrypt() — o parolă goală pentru utilizator permite oricărui vizualizator să deschidă fișierul, în timp ce parola proprietarului controlează modificările de permisiuni.
  • Păstrează obiectele de adnotare și de câmp (TextAnnotation, TextBoxField și altele similare) active până după ce Save() se întoarce, deoarece documentul păstrează referințe la conținutul paginii la care au fost adăugate.

Probleme comune

ProblemăCauzăRemediere
Save() produce un fișier cu conținut neschimbatAu fost făcute editări la o copie a paginii sau a adnotării în loc de obiectul obținut din doc.Pages()Modificați obiectul returnat direct de Pages(), Annotations() sau Form()
Imaginea redată este goală sau albăIndex de pagină greșit transmis către Process()PageCollection este indexat de la 1 — pagina 1 este doc.Pages()[1], nu [0]
Encrypt() generează un fișier care se deschide în continuare fără parolăParola utilizatorului a rămas goalăTransmite un șir nevid ca argument userPassword
Textul extras este gol pentru un PDF scanatPagina conține doar conținut de imagine raster, nu operatori de textTextAbsorber citește operatori de text; paginile care conțin doar imagini nu au niciunul pentru extragere
Câmpul adăugat cu Form::Add() nu apare pe paginăCâmpul Rectangle se află în afara MediaBox paginiiConfirmați că coordonatele dreptunghiului se încadrează în limitele Page::MediaBox()

FAQ

Depinde Aspose.PDF FOSS pentru C++ de vreo bibliotecă PDF comercială?

Nu. Este o implementare C++20 de la zero, fără nicio dependență de vreun stack PDF comercial, lansată sub licența MIT.

Pot crea un PDF nou de la zero în loc să deschid unul existent?

Da. Document are un constructor implicit care creează un document gol; apelează Pages().Add() pentru a adăuga pagini înainte de salvare.

În ce formate raster pot să redau?

BmpDevice, PngDevice, JpegDevice și TiffDevice redau pagini individuale în BMP, PNG, JPEG și TIFF, respectiv.

Ce algoritmi de criptare sunt suportați?

CryptoAlgorithm oferă RC4x40, RC4x128, AESx128 și AESx256, transmise către Document::Encrypt().

Unde merg mai departe?

Ghidul pentru dezvoltatori include pagini dedicate pentru gestionarea documentelor și a paginilor, grafice și forme native PDF, adnotări și formulare interactive, precum și clasele de fațadă de nivel superior care învelesc operațiunile comune cu fișiere.


API Reference Rezumat

Clasă/MetodăDescriere:
DocumentObiectul rădăcină — deschide, creează, salvează și optimizează un PDF
Document.Pages()Returnează PageCollection documentului
Document.Encrypt() / Decrypt()Protejați cu parolă sau eliminați protecția unui document
Document.Form()Returnează containerul AcroForm al documentului
TextAbsorberExtrage text simplu dintr-un document sau pagină
TextFragmentAbsorberExtrage fragmente de text poziționate
BmpDevice / PngDevice / JpegDevice / TiffDeviceRedă o pagină într-un format de imagine raster
ResolutionDPI de ieșire transmis unui dispozitiv de redare
CryptoAlgorithmSelectarea algoritmului de criptare: RC4 sau AES, 40–256 biți
PermissionsIndicatori de control al accesului transmiși către Encrypt()
Annotation / AnnotationCollectionTip de bază și container pentru adnotările de pagină
TextAnnotationAdnotare de tip notă text
FormContainerul de câmp AcroForm accesat prin Document.Form()
TextBoxFieldCâmp de formular text pe o singură linie/multilinie

Vezi și:

 Română