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

Aspose.PDF FOSS per C++

Libreria C++ open-source per creare, modificare, renderizzare e proteggere documenti PDF senza dipendenze runtime.

Aspose.PDF FOSS — Libreria PDF C++ Open Source

Aspose.PDF FOSS for C++ è una libreria open-source, moderna C++20 per lavorare con documenti PDF — aprire e salvare PDF, estrarre testo, rasterizzare pagine in formati immagine e creare documenti da zero (testo, immagini, tabelle, grafica vettoriale, annotazioni, campi AcroForm e segnalibri). La libreria si collega solo alla libreria standard C++: ogni primitivo, inclusi i codec TIFF, JPEG e PNG e il rasterizzatore di pagine, è implementato da zero senza dipendenze da alcuno stack PDF commerciale.

Il nucleo API è costruito attorno alla classe Document e alla sua collezione Pages(). Il testo viene estratto con Aspose::Pdf::Text::TextAbsorber, le pagine vengono renderizzate in immagini raster tramite classi dispositivo come PngDevice, JpegDevice, BmpDevice e TiffDevice, e i documenti possono essere protetti con Document.Encrypt() usando gli algoritmi RC4-40, RC4-128, AES-128 o AES-256 selezionati tramite l’enumerazione CryptoAlgorithm. I campi modulo interattivi sono gestiti tramite la classe Form, e le annotazioni — note di testo, evidenziazioni, forme e timbri — vengono aggiunte e modificate tramite la gerarchia di classi Annotation.

Aspose.PDF FOSS for C++ è rilasciato sotto licenza MIT senza costi di runtime o restrizioni d’uso. Viene compilato come libreria statica tramite CMake — aggiungilo come sottodirectory del tuo build o installalo autonomamente — e richiede un compilatore C++20 senza altre dipendenze di runtime. Per funzionalità enterprise e supporto, vedi Aspose.PDF for C++ — Enterprise Product.

Caricamento del documento e gestione delle pagine

  • Apri file PDF esistenti e salva le modifiche con Document
  • Accedi e itera le pagine tramite Document.Pages() (PageCollection)
  • Aggiungi, inserisci e elimina pagine con PageCollection.Add()/Insert()/Delete()
  • Leggi e imposta i metadati del documento tramite DocumentInfo (Document.Info())
  • Ottimizza le dimensioni del documento con Document.Optimize()/OptimizeResources()

Casi d'uso tipici

  • Creare pipeline di generazione PDF per report e fatture
  • Unire, dividere e riorganizzare documenti PDF esistenti
  • Ispezionare e aggiornare programmaticamente i metadati del documento
  • Ridurre le dimensioni del file PDF prima dell’archiviazione o della distribuzione

Estrazione del testo

  • Estrarre il testo semplice da un intero documento con Aspose::Pdf::Text::TextAbsorber
  • Visitare una singola pagina o l’intero documento tramite TextAbsorber.Visit()
  • Recuperare il testo estratto tramite TextAbsorber.Text()
  • Individuare frammenti di testo individuali con TextFragmentAbsorber.TextFragments()

Casi d'uso tipici

  • Indicizzare il contenuto PDF per la ricerca
  • Estrarre dati da fatture e documenti strutturati
  • Creare pipeline di text-mining o analisi del contenuto
  • Verificare il contenuto del documento nei test automatizzati

Rendering di immagini raster

  • Esegui il rendering delle pagine in PNG con PngDevice
  • Esegui il rendering delle pagine in JPEG, BMP o TIFF con JpegDevice, BmpDevice, TiffDevice
  • Controlla la risoluzione di output con la classe Resolution
  • Elabora una singola pagina tramite {Device}.Process()

Casi d'uso tipici

  • Generare miniature di pagina per un visualizzatore di documenti
  • Produrre output raster pronto per la stampa da PDF vettoriali
  • Creare servizi di conversione da PDF a immagine
  • Creare baseline di regressione visiva per i PDF generati

Crittografia e Sicurezza

  • Cifra i documenti con Document.Encrypt() usando una password utente e una password proprietario
  • Scegli RC4-40, RC4-128, AES-128 o AES-256 tramite l’enumerazione CryptoAlgorithm
  • Controlla i permessi concessi con il tipo Permissions
  • Decifra i documenti protetti da password con Document.Decrypt()

Casi d'uso tipici

  • Proteggi i report PDF riservati prima della distribuzione
  • Applica restrizioni di stampa/copia/modifica sui documenti condivisi
  • Aggiungi la protezione con password a fatture e rendiconti generati
  • Cifra in batch i documenti come parte di una pipeline di documenti

Annotazioni e Moduli Interattivi

  • Aggiungere, modificare e appiattire le annotazioni tramite Annotation e AnnotationCollection
  • Gestire i campi AcroForm tramite la classe Form
  • Aggiungere e rimuovere campi con Form.Add()/Form.Delete()
  • Appiattire i moduli interattivi in contenuto statico con Form.Flatten()

Casi d'uso tipici

  • Aggiungere commenti di revisione e evidenziazioni ai PDF condivisi
  • Creare moduli PDF compilabili per la raccolta dei dati
  • Appiattire i moduli inviati prima dell’archiviazione
  • Pre-compilare e bloccare i campi del modulo in modo programmatico

Apri un PDF, estrai il testo e renderizza una pagina

Aggiungi la libreria come sottodirectory CMake, quindi apri un documento, conta le sue pagine, estrai il testo con TextAbsorber e renderizza la pagina 1 in PNG a 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);
}

Cifra un Documento con AES-256

Apri un documento e proteggilo con una password utente e una password proprietario usando la crittografia 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");
}

Leggi e aggiorna i metadati del documento

Leggi le voci /Info esistenti e aggiorna il titolo del documento tramite 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");
}

Domande Frequenti

Qual è il modello di licenza per Aspose.PDF FOSS for C++?

È con licenza MIT e gratuito da usare in prodotti commerciali e non commerciali, senza chiave di attivazione o limiti di chiamata API.

Quali versioni del compilatore e di CMake sono richieste?

Un compilatore C++20 (clang 16+, gcc 13+ o MSVC 2022 17.5+) e CMake 3.22 o versioni successive. Python 3 è richiesto solo al momento della compilazione.

La libreria ha dipendenze di runtime?

No. Si collega solo alla C++ standard library — non è necessaria alcuna dipendenza di terze parti per PDF, immagini o compressione a runtime.

Quali formati può leggere ed esportare?

Legge e salva documenti PDF nativi, ed esporta le pagine renderizzate in Bmp, Jpeg e Tiff, oltre al testo semplice. È possibile importare contenuti SVG.

Come posso cifrare un documento PDF?

Chiama Document.Encrypt() con una password utente, una password proprietario e un CryptoAlgorithm (RC4x40, RC4x128, AESx128 o AESx256).

Ci sono limitazioni note nella versione corrente?

Sì — alcuni helper di verifica del tipo XmpValue (IsDateTime, IsField e simili) sono stub che restituiscono sempre false; usa invece IsString/IsInteger/IsDouble/IsArray.

  

Risorse di Supporto e Apprendimento

 Italiano