Сохранение PDF документа с использованием C++

Сохранение PDF документа в файловую систему

Вы можете сохранить созданный или измененный PDF документ в файловую систему, используя метод Save класса Document.

void SaveDocument()
{
    // Строка для имени пути
    String _dataDir("C:\\Samples\\");

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

    auto document = MakeObject<Document>(_dataDir + originalFileName);
    // выполните некоторые манипуляции, например, добавьте новую пустую страницу
    document->get_Pages()->Add();
    document->Save(_dataDir + modifiedFileName);
}

Сохранение PDF документа в поток

Вы также можете сохранить созданный или измененный PDF документ в поток, используя перегрузки методов Save.

void SaveDocumentStream()
{
    // Строка для имени пути
    String _dataDir("C:\\Samples\\");

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

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

    // выполните некоторые манипуляции, например, добавьте новую пустую страницу
    document->get_Pages()->Add();

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

Сохранение в формате PDF/A или PDF/X

PDF/A — это версия формата Portable Document Format (PDF), стандартизированная ISO, для использования в архивировании и долгосрочном хранении электронных документов. PDF/A отличается от PDF тем, что запрещает функции, не подходящие для долгосрочного архивирования, такие как связывание шрифтов (в отличие от встраивания шрифтов) и шифрование. Требования ISO для просмотрщиков PDF/A включают рекомендации по управлению цветом, поддержку встроенных шрифтов и пользовательский интерфейс для чтения встроенных аннотаций.

PDF/X — это подмножество стандарта PDF ISO. Цель PDF/X — облегчить обмен графикой, и поэтому он имеет ряд требований, связанных с печатью, которые не применяются к стандартным PDF файлам.

В обоих случаях используется метод Save для сохранения документов, при этом документы должны быть подготовлены с использованием PdfFormatConversionOptions.

void SaveDocumentAsPDFx()
{
    // Строка для имени пути
    String _dataDir("C:\\Samples\\");

    // Строка для имени файла
    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);
}