Dokumenten XPS och OXPS definierar layout, utseende och utskriftsinformation. Dessa dokument liknar PDF-filer. På grund av PDF-formatets höga popularitet kan du hamna i situationer där du behöver konvertera XPS- och OXPS-dokument till PDF-format. För detta ändamål kommer den här artikeln att lära dig hur du konverterar XPS- och OXPS-dokument till PDF-format med C++.
- C++ API för att konvertera XPS- och OXPS-dokument till PDF-format
- Konvertera XPS/OXPS-dokument till PDF-format
- Konvertera utvalda sidor av XPS/OXPS-dokument till PDF-format
C++ API för att konvertera XPS- och OXPS-dokument till PDF-format
Aspose.Page for C++ är ett C++-bibliotek för att rendera och manipulera XPS- och PostScript-filer. Det låter dig skapa, läsa och uppdatera XPS-dokument. Dessutom stöder API:et konvertering av XPS- och OXPS-dokument till PDF-format. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet downloads.
PM> Install-Package Aspose.Page.Cpp
Konvertera XPS/OXPS-dokument till PDF-format
Följande är stegen för att konvertera XPS- och OXPS-dokument till PDF-format.
- Initiera en ström med den utgående PDF-filen.
- Initiera en ström med XPS/OXPS-källfilen.
- Skapa en instans av klassen XpsDocument med XPS/OXPS-strömmen.
- Skapa en instans av klassen PdfSaveOptions.
- Ange alternativ som JpegQualityLevel och ImageCompression.
- Spara PDF-filen med XpsDocument->Save(System::SharedPtr enhet, System::SharedPtr alternativ) metod.
Följande exempelkod visar hur du konverterar XPS/OXPS-dokument till PDF-format med C++.
// Utdatafil
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Rensa resurser under "använder" uttalande
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// Källfilen
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Rensa resurser under "använder" uttalande
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// Ladda XPS-dokument från strömmen
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// eller ladda XPS-dokument direkt från filen. Då behövs ingen xpsStream.
// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
// Initiera PdfSaveOptions-objektet med nödvändiga parametrar.
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;
}();
// Skapa renderingsenhet för PDF-format
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Spara PDF-fil
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Konvertera utvalda sidor av XPS/OXPS-dokument till PDF-format
När du konverterar XPS- och OXPS-filer till PDF-format kan du också ange vilka sidor du vill konvertera. Utdata-PDF-filen kommer endast att innehålla de sidor du väljer. För att uppnå detta, följ stegen nedan.
- Initiera en ström med den utgående PDF-filen.
- Initiera en ström med XPS/OXPS-källfilen.
- Skapa en instans av klassen XpsDocument med XPS/OXPS-strömmen.
- Skapa en instans av klassen PdfSaveOptions.
- Ange alternativ som JpegQualityLevel och ImageCompression.
- Ange sidorna som du vill konvertera med hjälp av PdfSaveOptions->setPageNumbers(System::ArrayPtr värde) metod.
- Spara PDF-filen med XpsDocument->Save(System::SharedPtr enhet, System::SharedPtr alternativ) metod.
Följande exempelkod visar hur man konverterar utvalda sidor av XPS- och OXPS-dokument till PDF-format med C++.
// Utdatafil
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Rensa resurser under "använder" uttalande
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// Källfilen
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Rensa resurser under "använder" uttalande
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// Ladda XPS-dokument från strömmen
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// eller ladda XPS-dokument direkt från filen. Då behövs ingen xpsStream.
// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
// Initiera PdfSaveOptions-objektet med nödvändiga parametrar.
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;
}();
// Skapa renderingsenhet för PDF-format
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// Spara PDF-fil
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
Skaffa en gratis licens
Du kan prova API:et utan utvärderingsbegränsningar genom att begära en gratis tillfällig licens.
Slutsats
I den här artikeln har du lärt dig hur du konverterar XPS- och OXPS-dokument till PDF-format med C++. Dessutom har du sett hur man konverterar utvalda sidor i XPS/OXPS-dokumenten till PDF-format med Aspose.Page for C++ API. API:et tillhandahåller många ytterligare funktioner för att arbeta med XPS-dokument som du kan utforska i detalj genom att besöka den officiella dokumentationen. Om du har några frågor är du välkommen att kontakta oss på vårt gratis supportforum.