Các tài liệu XPS và OXPS xác định bố cục, giao diện và thông tin in. Các tài liệu này tương tự như các tệp PDF. Do tính phổ biến cao của định dạng PDF, bạn có thể rơi vào tình huống cần chuyển đổi tài liệu XPS và OXPS sang định dạng PDF. Để đạt được điều đó, bài viết này sẽ hướng dẫn bạn cách chuyển đổi tài liệu XPS và OXPS sang định dạng PDF bằng C ++.
- API C ++ để chuyển đổi tài liệu XPS và OXPS sang định dạng PDF
- Chuyển đổi tài liệu XPS / OXPS sang định dạng PDF
- Chuyển đổi các trang đã chọn của tài liệu XPS / OXPS sang định dạng PDF
API C ++ để chuyển đổi tài liệu XPS và OXPS sang định dạng PDF
Aspose.Page for C ++ là một thư viện C ++ để kết xuất và xử lý các tệp XPS và PostScript. Nó cho phép bạn tạo, đọc và cập nhật các tài liệu XPS. Hơn nữa, API hỗ trợ chuyển đổi các tài liệu XPS và OXPS sang định dạng PDF. Bạn có thể cài đặt API thông qua NuGet hoặc tải xuống trực tiếp từ phần tải xuống.
PM> Install-Package Aspose.Page.Cpp
Chuyển đổi tài liệu XPS / OXPS sang định dạng PDF
Sau đây là các bước để chuyển đổi tài liệu XPS và OXPS sang định dạng PDF.
- Khởi tạo luồng bằng tệp PDF đầu ra.
- Khởi tạo luồng bằng tệp XPS / OXPS nguồn.
- Tạo một phiên bản của lớp XpsDocument bằng luồng XPS / OXPS.
- Tạo một phiên bản của lớp PdfSaveOptions.
- Chỉ định các tùy chọn như JpegQualityLevel và ImageCompression.
- Lưu tệp PDF đầu ra bằng cách sử dụng XpsDocument-> Save (System :: SharedPtr thiết bị, Hệ thống :: SharedPtr tùy chọn) phương pháp.
Đoạn mã mẫu sau đây cho thấy cách chuyển đổi tài liệu XPS / OXPS sang định dạng PDF bằng C ++.
// Tệp đầu ra
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Xóa tài nguyên trong câu lệnh 'using'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// Tệp nguồn
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Xóa tài nguyên trong câu lệnh 'using'
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// Tải tài liệu XPS từ luồng
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// hoặc tải tài liệu XPS trực tiếp từ tệp. Không cần xpsStream sau đó.
// Tài liệu XpsDocument = new XpsDocument (inputFileName, new XpsLoadOptions());
// Khởi tạo đối tượng PdfSaveOptions với các tham số cần thiết.
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;
}();
// Tạo thiết bị kết xuất cho định dạng PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Lưu tệp PDF
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Chuyển đổi các trang đã chọn của tài liệu XPS / OXPS sang định dạng PDF
Trong khi chuyển đổi các tệp XPS và OXPS sang định dạng PDF, bạn cũng có thể chỉ định các trang bạn muốn chuyển đổi. Tệp PDF đầu ra sẽ chỉ chứa các trang bạn chọn. Để đạt được điều này, vui lòng làm theo các bước dưới đây.
- Khởi tạo luồng bằng tệp PDF đầu ra.
- Khởi tạo luồng bằng tệp XPS / OXPS nguồn.
- Tạo một phiên bản của lớp XpsDocument bằng luồng XPS / OXPS.
- Tạo một phiên bản của lớp PdfSaveOptions.
- Chỉ định các tùy chọn như JpegQualityLevel và ImageCompression.
- Chỉ định các trang bạn muốn chuyển đổi bằng cách sử dụng PdfSaveOptions-> setPageNumbers (System :: ArrayPtr giá trị) phương pháp.
- Lưu tệp PDF đầu ra bằng cách sử dụng XpsDocument-> Save (System :: SharedPtr thiết bị, Hệ thống :: SharedPtr tùy chọn) phương pháp.
Đoạn mã mẫu sau đây trình bày cách chuyển đổi các trang được chọn của tài liệu XPS và OXPS sang định dạng PDF bằng C ++.
// Tệp đầu ra
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Xóa tài nguyên trong câu lệnh 'using'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// Tệp nguồn
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Xóa tài nguyên trong câu lệnh 'using'
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// Tải tài liệu XPS từ luồng
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// hoặc tải tài liệu XPS trực tiếp từ tệp. Sau đó không cần xpsStream.
// Tài liệu XpsDocument = new XpsDocument (inputFileName, new XpsLoadOptions());
// Khởi tạo đối tượng PdfSaveOptions với các tham số cần thiết.
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;
}();
// Tạo thiết bị kết xuất cho định dạng PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Lưu tệp PDF
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Nhận giấy phép miễn phí
Bạn có thể dùng thử API mà không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.
Sự kết luận
Trong bài viết này, bạn đã biết cách chuyển đổi tài liệu XPS và OXPS sang định dạng PDF bằng C ++. Ngoài ra, bạn đã thấy cách chuyển đổi các trang được chọn của tài liệu XPS / OXPS sang định dạng PDF bằng cách sử dụng API Aspose.Page cho C ++. API cung cấp nhiều tính năng bổ sung để làm việc với tài liệu XPS mà bạn có thể khám phá chi tiết bằng cách truy cập tài liệu chính thức. Trong trường hợp có bất kỳ câu hỏi nào, vui lòng liên hệ với chúng tôi trên diễn đàn hỗ trợ miễn phí của chúng tôi.