Документы XPS и OXPS определяют макет, внешний вид и информацию для печати. Эти документы аналогичны файлам PDF. Из-за высокой популярности формата PDF вы можете столкнуться с ситуациями, когда вам нужно преобразовать документы XPS и OXPS в формат PDF. С этой целью в этой статье вы узнаете, как конвертировать документы XPS и OXPS в формат PDF с помощью C++.
- C++ API для преобразования документов XPS и OXPS в формат PDF
- Преобразование документов XPS/OXPS в формат PDF
- Преобразование выбранных страниц документов XPS/OXPS в формат PDF
C++ API для преобразования документов XPS и OXPS в формат PDF
Aspose.Page for C++ — это библиотека C++ для рендеринга файлов XPS и PostScript и управления ими. Он позволяет создавать, читать и обновлять XPS-документы. Кроме того, API поддерживает преобразование документов XPS и OXPS в формат PDF. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела загрузки.
PM> Install-Package Aspose.Page.Cpp
Преобразование документов XPS/OXPS в формат PDF
Ниже приведены шаги для преобразования документов XPS и OXPS в формат PDF.
- Инициализируйте поток выходным PDF-файлом.
- Инициализируйте поток исходным файлом XPS/OXPS.
- Создайте экземпляр класса XpsDocument, используя поток XPS/OXPS.
- Создайте экземпляр класса PdfSaveOptions.
- Укажите такие параметры, как JpegQualityLevel и ImageCompression.
- Сохраните выходной файл PDF с помощью команды XpsDocument->Save(System::SharedPtr устройство, Система::SharedPtr варианты) метод.
В следующем примере кода показано, как преобразовать документы XPS/OXPS в формат PDF с помощью C++.
// Выходной файл
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Очистка ресурсов под оператором «using»
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
// Исходный файл
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Очистка ресурсов под оператором «using»
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------------------------------------
try
{
// Загрузить документ XPS из потока
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// или загрузить документ XPS непосредственно из файла. Тогда xpsStream не нужен.
// XpsDocument document = новый XpsDocument (inputFileName, new XpsLoadOptions());
// Инициализируйте объект PdfSaveOptions с необходимыми параметрами.
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
tmp_0->set_JpegQualityLevel(100);
tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
return tmp_0;
}();
// Создать устройство рендеринга для формата PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Сохранить PDF-файл
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Преобразование выбранных страниц документов XPS/OXPS в формат PDF
При преобразовании файлов XPS и OXPS в формат PDF вы также можете указать страницы, которые хотите преобразовать. Выходной файл PDF будет содержать только выбранные вами страницы. Для этого выполните шаги, указанные ниже.
- Инициализируйте поток выходным PDF-файлом.
- Инициализируйте поток исходным файлом XPS/OXPS.
- Создайте экземпляр класса XpsDocument, используя поток XPS/OXPS.
- Создайте экземпляр класса PdfSaveOptions.
- Укажите такие параметры, как JpegQualityLevel и ImageCompression.
- Укажите страницы, которые вы хотите преобразовать, используя PdfSaveOptions->set_PageNumbers(System::ArrayPtr<int32\t> значение) метод.
- Сохраните выходной файл PDF с помощью команды XpsDocument->Save(System::SharedPtr устройство, Система::SharedPtr варианты) метод.
В следующем примере кода показано, как преобразовать выбранные страницы документов XPS и OXPS в формат PDF с помощью C++.
// Выходной файл
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Очистка ресурсов под оператором «using»
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
// Исходный файл
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Очистка ресурсов под оператором «using»
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------------------------------------
try
{
// Загрузить документ XPS из потока
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// или загрузить документ XPS непосредственно из файла. Тогда xpsStream не нужен.
// Документ XpsDocument = новый XpsDocument (inputFileName, new XpsLoadOptions());
// Инициализируйте объект PdfSaveOptions с необходимыми параметрами.
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
tmp_0->set_JpegQualityLevel(100);
tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 3 }));
return tmp_0;
}();
// Создать устройство рендеринга для формата PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Сохранить PDF-файл
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Получить бесплатную лицензию
Вы можете попробовать API без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как конвертировать документы XPS и OXPS в формат PDF с помощью C++. Кроме того, вы увидели, как преобразовать выбранные страницы документов XPS/OXPS в формат PDF с помощью Aspose.Page for C++ API. API предоставляет множество дополнительных функций для работы с XPS-документами, которые вы можете подробно изучить, посетив официальную документацию. Если у вас возникнут какие-либо вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.