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

Aspose.PDF FOSS para C++

Biblioteca C++ de código abierto para crear, editar, renderizar y proteger documentos PDF sin dependencias en tiempo de ejecución.

Aspose.PDF FOSS — Biblioteca PDF de C++ de código abierto

Aspose.PDF FOSS for C++ es una biblioteca de código abierto y moderna en C++20 para trabajar con documentos PDF — abrir y guardar PDFs, extraer texto, rasterizar páginas a formatos de imagen y crear documentos desde cero (texto, imágenes, tablas, gráficos vectoriales, anotaciones, campos AcroForm y marcadores). La biblioteca se enlaza solo con la biblioteca estándar de C++: cada primitivo, incluidos los códecs TIFF, JPEG y PNG y el rasterizador de páginas, está implementado desde cero sin dependencia de ningún stack PDF comercial.

El núcleo API se construye alrededor de la clase Document y su colección Pages(). El texto se extrae con Aspose::Pdf::Text::TextAbsorber, las páginas se renderizan a imágenes rasterizadas mediante clases de dispositivo como PngDevice, JpegDevice, BmpDevice y TiffDevice, y los documentos pueden asegurarse con Document.Encrypt() usando algoritmos RC4-40, RC4-128, AES-128 o AES-256 seleccionados a través del enum CryptoAlgorithm. Los campos de formulario interactivos se gestionan a través de la clase Form, y las anotaciones — notas de texto, resaltados, formas y sellos — se añaden y modifican mediante la jerarquía de clases Annotation.

Aspose.PDF FOSS for C++ se publica bajo la licencia MIT sin tarifas de tiempo de ejecución ni restricciones de uso. Se compila como una biblioteca estática mediante CMake — añádela como subdirectorio de tu compilación o instálala de forma independiente — y requiere un compilador C++20 sin otras dependencias en tiempo de ejecución. Para funciones empresariales y soporte, consulta Aspose.PDF for C++ — Enterprise Product.

Carga de Documentos y Gestión de Páginas

  • Abrir archivos PDF existentes y guardar modificaciones con Document
  • Acceder e iterar páginas a través de Document.Pages() (PageCollection)
  • Añadir, insertar y eliminar páginas con PageCollection.Add()/Insert()/Delete()
  • Leer y establecer los metadatos del documento mediante DocumentInfo (Document.Info())
  • Optimizar el tamaño del documento con Document.Optimize()/OptimizeResources()

Casos de uso típicos

  • Crear tuberías de generación de PDF para informes y facturas
  • Combinar, dividir y reorganizar documentos PDF existentes
  • Inspeccionar y actualizar metadatos del documento de forma programática
  • Reducir el tamaño del archivo PDF antes del archivado o la distribución

Extracción de texto

  • Extraer texto plano de todo un documento con Aspose::Pdf::Text::TextAbsorber
  • Visitar una sola página o todo el documento mediante TextAbsorber.Visit()
  • Obtener el texto extraído a través de TextAbsorber.Text()
  • Localizar fragmentos de texto individuales con TextFragmentAbsorber.TextFragments()

Casos de uso típicos

  • Indexar contenido PDF para búsqueda
  • Extraer datos de facturas y documentos estructurados
  • Construir tuberías de minería de texto o análisis de contenido
  • Verificar el contenido del documento en suites de pruebas automatizadas

Renderizado a Imágenes Raster

  • Renderizar páginas a PNG con PngDevice
  • Renderizar páginas a JPEG, BMP o TIFF con JpegDevice, BmpDevice, TiffDevice
  • Controlar la resolución de salida con la clase Resolution
  • Procesar una sola página mediante {Device}.Process()

Casos de uso típicos

  • Generar miniaturas de página para un visor de documentos
  • Producir salida raster lista para impresión a partir de PDFs vectoriales
  • Construir servicios de conversión de PDF a imagen
  • Crear líneas base de regresión visual para PDFs generados

Cifrado y Seguridad

  • Encripta documentos con Document.Encrypt() usando una contraseña de usuario y una de propietario
  • Elige RC4-40, RC4-128, AES-128 o AES-256 a través del enumerado CryptoAlgorithm
  • Controla los permisos concedidos con el tipo Permissions
  • Desencripta documentos protegidos con contraseña usando Document.Decrypt()

Casos de uso típicos

  • Proteger informes PDF confidenciales antes de la distribución
  • Aplicar restricciones de impresión/copia/edición en documentos compartidos
  • Añadir protección con contraseña a facturas y estados de cuenta generados
  • Cifrar por lotes documentos como parte de una canalización de documentos

Anotaciones y Formularios Interactivos

  • Agregar, modificar y aplanar anotaciones a través de Annotation y AnnotationCollection
  • Administrar campos AcroForm a través de la clase Form
  • Agregar y eliminar campos con Form.Add()/Form.Delete()
  • Aplanar formularios interactivos a contenido estático con Form.Flatten()

Casos de uso típicos

  • Añadir comentarios de revisión y resaltados a PDFs compartidos
  • Crear formularios PDF rellenables para la recopilación de datos
  • Aplanar formularios enviados antes del archivado
  • Prellenar y bloquear programáticamente los campos del formulario

Abrir un PDF, extraer texto y renderizar una página

Add the library as a CMake subdirectory, then open a document, count its pages, extract text with TextAbsorber, and render page 1 to PNG at 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);
}

Cifrar un documento con AES-256

Abra un documento y protégalo con una contraseña de usuario y de propietario usando cifrado 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");
}

Leer y actualizar metadatos del documento

Lea las entradas existentes de /Info y actualice el título del documento a travé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");
}

Preguntas frecuentes

¿Cuál es el modelo de licenciamiento para Aspose.PDF FOSS for C++?

Tiene licencia MIT y es gratuito para usar en productos comerciales y no comerciales, sin clave de activación ni límites de llamadas a API.

¿Qué versiones del compilador y de CMake se requieren?

Un compilador C++20 (clang 16+, gcc 13+ o MSVC 2022 17.5+) y CMake 3.22 o posterior. Python 3 es necesario solo en tiempo de compilación.

¿La biblioteca tiene alguna dependencia en tiempo de ejecución?

No. Enlaza únicamente contra la biblioteca estándar de C++ — no se requiere ninguna dependencia de PDF, imagen o compresión de terceros en tiempo de ejecución.

¿Qué formatos puede leer y exportar?

Lee y guarda documentos PDF nativos, y exporta páginas renderizadas a Bmp, Jpeg y Tiff, además de texto plano. El contenido SVG puede importarse.

¿Cómo cifro un documento PDF?

Llame a Document.Encrypt() con una contraseña de usuario, una contraseña de propietario y un CryptoAlgorithm (RC4x40, RC4x128, AESx128 o AESx256).

¿Hay alguna limitación conocida en la versión actual?

Sí — algunos ayudantes de verificación de tipo de XmpValue (IsDateTime, IsField y similares) son stubs que siempre devuelven false; use IsString/IsInteger/IsDouble/IsArray en su lugar.

  

Recursos de soporte y aprendizaje

 Español