Dokumenty XPS i OXPS definiują układ, wygląd i informacje o drukowaniu. Dokumenty te są podobne do plików PDF. Ze względu na dużą popularność formatu PDF możesz znaleźć się w sytuacji, w której musisz przekonwertować dokumenty XPS i OXPS do formatu PDF. W tym celu w tym artykule dowiesz się, jak konwertować dokumenty XPS i OXPS do formatu PDF za pomocą C++.
- C++ API do konwersji dokumentów XPS i OXPS do formatu PDF
- Konwertuj dokumenty XPS/OXPS do formatu PDF
- Konwertuj wybrane strony dokumentów XPS/OXPS do formatu PDF
C++ API do konwersji dokumentów XPS i OXPS do formatu PDF
Aspose.Page for C++ to biblioteka C++ do renderowania i manipulowania plikami XPS i PostScript. Pozwala tworzyć, czytać i aktualizować dokumenty XPS. Ponadto API obsługuje konwersję dokumentów XPS i OXPS do formatu PDF. Możesz zainstalować API przez NuGet lub pobrać bezpośrednio z sekcji downloads.
PM> Install-Package Aspose.Page.Cpp
Konwertuj dokumenty XPS/OXPS do formatu PDF
Poniżej przedstawiono kroki konwersji dokumentów XPS i OXPS do formatu PDF.
- Zainicjuj strumień z wyjściowym plikiem PDF.
- Zainicjuj strumień ze źródłowym plikiem XPS/OXPS.
- Utwórz instancję klasy XpsDocument przy użyciu strumienia XPS/OXPS.
- Utwórz instancję klasy PdfSaveOptions.
- Określ opcje, takie jak JpegQualityLevel i ImageCompression.
- Zapisz wyjściowy plik PDF za pomocą polecenia XpsDocument->Save(System::SharedPtr urządzenie, System::SharedPtr opcje) metoda.
Poniższy przykładowy kod pokazuje, jak konwertować dokumenty XPS/OXPS do formatu PDF przy użyciu języka C++.
// Plik wyjściowy
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Czyszczenie zasobów w instrukcji „używanie”.
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
// Plik źródłowy
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Czyszczenie zasobów w instrukcji „używanie”.
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------------------------------------
try
{
// Załaduj dokument XPS ze strumienia
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// lub załaduj dokument XPS bezpośrednio z pliku. Wtedy nie jest potrzebny xpsStream.
// Dokument XpsDocument = nowy XpsDocument(inputFileName, nowy XpsLoadOptions());
// Zainicjuj obiekt PdfSaveOptions z niezbędnymi parametrami.
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;
}();
// Utwórz urządzenie renderujące dla formatu PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Zapisz plik PDF
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Konwertuj wybrane strony dokumentów XPS/OXPS do formatu PDF
Podczas konwertowania plików XPS i OXPS do formatu PDF możesz także określić strony, które chcesz przekonwertować. Wyjściowy plik PDF będzie zawierał tylko wybrane strony. Aby to osiągnąć, wykonaj czynności podane poniżej.
- Zainicjuj strumień z wyjściowym plikiem PDF.
- Zainicjuj strumień ze źródłowym plikiem XPS/OXPS.
- Utwórz instancję klasy XpsDocument przy użyciu strumienia XPS/OXPS.
- Utwórz instancję klasy PdfSaveOptions.
- Określ opcje, takie jak JpegQualityLevel i ImageCompression.
- Określ strony, które chcesz przekonwertować, używając opcji PdfSaveOptions->setPageNumbers(System::ArrayPtr wartość) metoda.
- Zapisz wyjściowy plik PDF za pomocą polecenia XpsDocument->Save(System::SharedPtr urządzenie, System::SharedPtr opcje) metoda.
Poniższy przykładowy kod demonstruje, jak konwertować wybrane strony dokumentów XPS i OXPS do formatu PDF przy użyciu języka C++.
// Plik wyjściowy
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Czyszczenie zasobów w instrukcji „używanie”.
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
// Plik źródłowy
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Czyszczenie zasobów w instrukcji „używanie”.
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------------------------------------
try
{
// Załaduj dokument XPS ze strumienia
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// lub załaduj dokument XPS bezpośrednio z pliku. Wtedy nie jest potrzebny xpsStream.
// Dokument XpsDocument = nowy XpsDocument(inputFileName, nowy XpsLoadOptions());
// Zainicjuj obiekt PdfSaveOptions z niezbędnymi parametrami.
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;
}();
// Utwórz urządzenie renderujące dla formatu PDF
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Zapisz plik PDF
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Uzyskaj bezpłatną licencję
Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.
Wniosek
W tym artykule nauczyłeś się konwertować dokumenty XPS i OXPS do formatu PDF za pomocą C++. Dodatkowo widziałeś jak konwertować wybrane strony dokumentów XPS/OXPS do formatu PDF za pomocą Aspose.Page for C++ API. Interfejs API zapewnia wiele dodatkowych funkcji do pracy z dokumentami XPS, które można szczegółowo poznać, odwiedzając oficjalną dokumentację. W przypadku jakichkolwiek pytań skontaktuj się z nami na naszym darmowym forum wsparcia.