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

Aspose.PDF FOSS para C++

Biblioteca C++ de código aberto para criar, editar, renderizar e proteger documentos PDF sem dependências em tempo de execução.

Aspose.PDF FOSS — Biblioteca PDF Open Source em C++

Aspose.PDF FOSS for C++ é uma biblioteca moderna de C++20 de código aberto para trabalhar com documentos PDF — abrir e salvar PDFs, extrair texto, rasterizar páginas para formatos de imagem e criar documentos do zero (texto, imagens, tabelas, gráficos vetoriais, anotações, campos AcroForm e marcadores). A biblioteca vincula-se apenas à biblioteca padrão C++: cada primitivo, incluindo os codecs TIFF, JPEG e PNG e o rasterizador de página, é implementado do zero sem dependência de qualquer pilha PDF comercial.

O núcleo API é construído em torno da classe Document e sua coleção Pages(). O texto é extraído com Aspose::Pdf::Text::TextAbsorber, as páginas são renderizadas em imagens rasterizadas por meio de classes de dispositivo como PngDevice, JpegDevice, BmpDevice e TiffDevice, e os documentos podem ser protegidos com Document.Encrypt() usando os algoritmos RC4-40, RC4-128, AES-128 ou AES-256 selecionados através do enum CryptoAlgorithm. Os campos de formulário interativos são gerenciados pela classe Form, e as anotações — notas de texto, realces, formas e carimbos — são adicionadas e modificadas através da hierarquia de classes Annotation.

Aspose.PDF FOSS for C++ é lançado sob a licença MIT sem taxas de tempo de execução ou restrições de uso. Ele é compilado como uma biblioteca estática via CMake — adicione-o como um subdiretório da sua compilação ou instale-o de forma independente — e requer um compilador C++20 sem outras dependências em tempo de execução. Para recursos e suporte empresariais, veja Aspose.PDF for C++ — Enterprise Product.

Carregamento de Documento e Gerenciamento de Páginas

  • Abrir arquivos PDF existentes e salvar modificações com Document
  • Acessar e iterar páginas via Document.Pages() (PageCollection)
  • Adicionar, inserir e excluir páginas com PageCollection.Add()/Insert()/Delete()
  • Ler e definir metadados do documento através de DocumentInfo (Document.Info())
  • Otimizar o tamanho do documento com Document.Optimize()/OptimizeResources()

Casos de uso típicos

  • Construir pipelines de geração de PDF para relatórios e faturas
  • Mesclar, dividir e reorganizar documentos PDF existentes
  • Inspecionar e atualizar programaticamente os metadados do documento
  • Reduzir o tamanho do arquivo PDF antes de arquivamento ou distribuição

Extração de Texto

  • Extrair texto simples de um documento inteiro com Aspose::Pdf::Text::TextAbsorber
  • Visitar uma única página ou o documento inteiro via TextAbsorber.Visit()
  • Recuperar o texto extraído através de TextAbsorber.Text()
  • Localizar fragmentos de texto individuais com TextFragmentAbsorber.TextFragments()

Casos de uso típicos

  • Indexar conteúdo PDF para pesquisa
  • Extrair dados de faturas e documentos estruturados
  • Construir pipelines de mineração de texto ou análise de conteúdo
  • Verificar o conteúdo do documento em suítes de teste automatizadas

Renderização para Imagens Raster

  • Renderizar páginas em PNG com PngDevice
  • Renderizar páginas em JPEG, BMP ou TIFF com JpegDevice, BmpDevice, TiffDevice
  • Controlar a resolução de saída com a classe Resolution
  • Processar uma única página via {Device}.Process()

Casos de uso típicos

  • Gerar miniaturas de página para um visualizador de documentos
  • Produzir saída raster pronta para impressão a partir de PDFs vetoriais
  • Construir serviços de conversão de PDF para imagem
  • Criar linhas de base de regressão visual para PDFs gerados

Criptografia e Segurança

  • Criptografe documentos com Document.Encrypt() usando uma senha de usuário e de proprietário
  • Escolha RC4-40, RC4-128, AES-128 ou AES-256 via o enum CryptoAlgorithm
  • Controle as permissões concedidas com o tipo Permissions
  • Descriptografe documentos protegidos por senha com Document.Decrypt()

Casos de uso típicos

  • Proteger relatórios PDF confidenciais antes da distribuição
  • Aplicar restrições de impressão/cópia/edição em documentos compartilhados
  • Adicionar proteção por senha a faturas e extratos gerados
  • Criptografar documentos em lote como parte de um fluxo de documentos

Anotações e Formulários Interativos

  • Adicionar, modificar e achatar anotações através de Annotation e AnnotationCollection
  • Gerenciar campos AcroForm através da classe Form
  • Adicionar e remover campos com Form.Add()/Form.Delete()
  • Achatar formulários interativos para conteúdo estático com Form.Flatten()

Casos de uso típicos

  • Adicionar comentários de revisão e realces a PDFs compartilhados
  • Criar formulários PDF preenchíveis para coleta de dados
  • Aplanar formulários enviados antes do arquivamento
  • Pré-preencher e bloquear programaticamente campos de formulário

Abrir um PDF, Extrair Texto e Renderizar uma Página

Adicione a biblioteca como um subdiretório CMake, então abra um documento, conte suas páginas, extraia o texto com TextAbsorber e renderize a página 1 para 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);
}

Criptografar um Documento com AES-256

Abra um documento e proteja-o com uma senha de usuário e de proprietário usando criptografia 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");
}

Ler e Atualizar Metadados do Documento

Leia as entradas existentes de /Info e atualize o título do documento através de 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");
}

Perguntas Frequentes

Qual é o modelo de licenciamento para Aspose.PDF FOSS for C++?

É MIT-licensed e gratuito para uso em produtos comerciais e não comerciais, sem chave de ativação ou limites de chamadas API.

Quais versões do compilador e do CMake são necessárias?

Um compilador C++20 (clang 16+, gcc 13+ ou MSVC 2022 17.5+) e CMake 3.22 ou posterior. Python 3 é necessário apenas no tempo de compilação.

A biblioteca tem alguma dependência em tempo de execução?

Não. Ele vincula apenas à biblioteca padrão do C++. — nenhuma dependência de PDF, imagem ou compressão de terceiros é necessária em tempo de execução.

Quais formatos ele pode ler e exportar?

Ele lê e salva documentos PDF nativos e exporta páginas renderizadas para Bmp, Jpeg e Tiff, além de texto simples. O conteúdo SVG pode ser importado.

Como criptografo um documento PDF?

Chame Document.Encrypt() com uma senha de usuário, uma senha de proprietário e um CryptoAlgorithm (RC4x40, RC4x128, AESx128 ou AESx256).

Existem limitações conhecidas na versão atual?

Sim — alguns auxiliares de verificação de tipo XmpValue (IsDateTime, IsField e semelhantes) são stubs que sempre retornam false; use IsString/IsInteger/IsDouble/IsArray em vez disso.

  

Recursos de Suporte e Aprendizado

 Português