Guardar Documento PDF usando C++

Guardar documento PDF en el sistema de archivos

Puede guardar el documento PDF creado o manipulado en el sistema de archivos usando el método Save de la clase Document.

void SaveDocument()
{
    // Cadena para nombre de ruta
    String _dataDir("C:\\Samples\\");

    String originalFileName("SimpleResume.pdf");
    String modifiedFileName("SimpleResumeModified.pdf");

    auto document = MakeObject<Document>(_dataDir + originalFileName);
    // realizar alguna manipulación, por ejemplo, agregar una nueva página vacía
    document->get_Pages()->Add();
    document->Save(_dataDir + modifiedFileName);
}

Guardar documento PDF en flujo

También puede guardar el documento PDF creado o manipulado en un flujo usando sobrecargas de los métodos Save.

void SaveDocumentStream()
{
    // Cadena para nombre de ruta
    String _dataDir("C:\\Samples\\");

    String originalFileName("SimpleResume.pdf");
    String modifiedFileName("SimpleResumeModified.pdf");

    auto document = MakeObject<Document>(_dataDir + originalFileName);

    // realizar alguna manipulación, por ejemplo, agregar una nueva página vacía
    document->get_Pages()->Add();

    auto fileStream = System::IO::File::OpenWrite(_dataDir + modifiedFileName);
    document->Save(fileStream);
}

Guardar en formato PDF/A o PDF/X

PDF/A es una versión del Formato de Documento Portátil (PDF) estandarizada por ISO para su uso en el archivo y la preservación a largo plazo de documentos electrónicos. PDF/A se diferencia de PDF en que prohíbe características no adecuadas para el archivo a largo plazo, como el enlace de fuentes (a diferencia de la incrustación de fuentes) y el cifrado. Los requisitos ISO para los visores de PDF/A incluyen pautas de gestión de color, soporte de fuentes incrustadas y una interfaz de usuario para leer anotaciones incrustadas.

PDF/X es un subconjunto del estándar ISO PDF. El propósito de PDF/X es facilitar el intercambio de gráficos y, por lo tanto, tiene una serie de requisitos relacionados con la impresión que no se aplican a los archivos PDF estándar.

En ambos casos, el método Guardar se utiliza para almacenar los documentos, mientras que los documentos deben ser preparados usando las PdfFormatConversionOptions.

void SaveDocumentAsPDFx()
{
    // String para el nombre de la ruta
    String _dataDir("C:\\Samples\\");

    // String para el nombre del archivo
    String infilename("SimpleResume.pdf");
    String outfilename("SimpleResume_A3U.pdf");

    auto document = MakeObject<Document>(_dataDir + infilename);
    auto options = new PdfFormatConversionOptions(Aspose::Pdf::PdfFormat::PDF_A_3U);
    try
    {
        document->Convert(options);
    }
    catch (const std::exception& e)
    {
        std::cerr << e.what();
    }

    document->Save(_dataDir + outfilename);
}