Salvar Documento PDF usando C++

Salvar documento PDF no sistema de arquivos

Você pode salvar o documento PDF criado ou manipulado no sistema de arquivos usando o método Save da classe Document.

void SaveDocument()
{
    // String para nome do caminho
    String _dataDir("C:\\Samples\\");

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

    auto document = MakeObject<Document>(_dataDir + originalFileName);
    // fazer alguma manipulação, por exemplo, adicionar nova página vazia
    document->get_Pages()->Add();
    document->Save(_dataDir + modifiedFileName);
}

Salvar documento PDF em fluxo

Você também pode salvar o documento PDF criado ou manipulado em fluxo usando sobrecargas dos métodos Save.

void SaveDocumentStream()
{
    // String para nome do caminho
    String _dataDir("C:\\Samples\\");

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

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

    // fazer alguma manipulação, por exemplo, adicionar nova página vazia
    document->get_Pages()->Add();

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

Salvar no formato PDF/A ou PDF/X

PDF/A é uma versão do Formato de Documento Portátil (PDF) padronizada pela ISO para uso em arquivamento e preservação a longo prazo de documentos eletrônicos. O PDF/A difere do PDF na medida em que proíbe recursos não adequados para arquivamento a longo prazo, como vinculação de fontes (em oposição à incorporação de fontes) e criptografia. Os requisitos ISO para visualizadores de PDF/A incluem diretrizes de gerenciamento de cores, suporte a fontes incorporadas e uma interface de usuário para leitura de anotações incorporadas.

PDF/X é um subconjunto do padrão ISO PDF. O objetivo do PDF/X é facilitar a troca de gráficos e, portanto, possui uma série de requisitos relacionados à impressão que não se aplicam aos arquivos PDF padrão.

Em ambos os casos, o método Save é usado para armazenar os documentos, enquanto os documentos devem ser preparados usando o PdfFormatConversionOptions.

void SaveDocumentAsPDFx()
{
    // String para o nome do caminho
    String _dataDir("C:\\Samples\\");

    // String para o nome do arquivo
    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);
}