Dokumen XPS dan OXPS mirip dengan file PDF dan menentukan tata letak, tampilan, dan informasi pencetakan untuk dokumen. Mungkin ada skenario di mana Anda mungkin perlu mengonversi dokumen XPS dan OXPS ke format gambar JPG dan PNG. Untuk itu, artikel ini akan mengajarkan Anda cara mengonversi dokumen XPS dan OXPS ke format gambar JPG dan PNG menggunakan C++.
- C++ API untuk Mengonversi File XPS, OXPS ke Format JPG atau PNG
- Konversikan Dokumen XPS/OXPS ke Format JPG
- Konversikan Dokumen XPS/OXPS ke Format PNG
C++ API untuk Mengonversi File XPS, OXPS ke Format JPG atau PNG
Aspose.Page for C++ adalah pustaka C++ untuk merender dan memanipulasi file XPS dan PostScript. Ini memungkinkan Anda membuat, membaca, dan memperbarui dokumen XPS. Selain itu, API mendukung konversi dokumen XPS dan OXPS ke format gambar JPG dan PNG. Anda dapat menginstal API melalui NuGet atau mengunduhnya langsung dari bagian unduhan.
PM> Install-Package Aspose.Page.Cpp
Konversikan Dokumen XPS/OXPS ke Format JPG
Berikut langkah-langkah untuk mengubah dokumen XPS dan OXPS ke format JPG.
- Inisialisasi streaming dengan file sumber XPS/OXPS.
- Buat instance kelas XpsDocument menggunakan aliran XPS/OXPS.
- Buat instance dari kelas JpegSaveOptions.
- Tentukan opsi seperti SmoothingMode dan Resolution.
- Buat instance dari kelas ImageDevice.
- Simpan dokumen XPS/OXPS ke ImageDevice menggunakan XpsDocument->Save(System::SharedPtr perangkat, Sistem::SharedPtr pilihan) metode.
- Ulangi melalui partisi dokumen.
- Inisialisasi aliran keluaran dan simpan gambar JPG.
Kode contoh berikut menunjukkan cara mengonversi dokumen XPS/OXPS ke format JPG menggunakan C++.
// berkas masukan
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Berkas keluaran
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// Inisialisasi aliran input XPS
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------------
try
{
// Muat dokumen XPS dari aliran
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// atau muat dokumen XPS langsung dari file. Tidak diperlukan xpsStream.
// Dokumen XpsDocument = XpsDocument baru(inputFileName, XpsLoadOptions baru());
// Inisialisasi objek JpegSaveOptions dengan parameter yang diperlukan.
System::SharedPtr<JpegSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<JpegSaveOptions>();
tmp_0->set_SmoothingMode(System::Drawing::Drawing2D::SmoothingMode::HighQuality);
tmp_0->set_Resolution(300);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 2, 6 }));
return tmp_0;
}();
// Buat perangkat rendering untuk format JPG
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Iterasi melalui partisi dokumen (dokumen tetap, dalam istilah XPS)
for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
{
for (int32_t j = 0; j < device->get_Result()[i]->get_Length(); j++)
{
// Inisialisasi aliran keluaran gambar
{
System::SharedPtr<System::IO::Stream> imageStream = System::IO::File::Open(System::IO::Path::GetDirectoryName(outputFileName) + u"\\" + System::IO::Path::GetFileNameWithoutExtension(outputFileName) + u"_" + (i + 1) + u"_" + (j + 1) + System::IO::Path::GetExtension(outputFileName), System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
System::Details::DisposeGuard<1> __dispose_guard_0({ imageStream });
// ------------------------------------------------
try
{
imageStream->Write(device->get_Result()[i][j], 0, device->get_Result()[i][j]->get_Length());
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
}
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
Konversikan Dokumen XPS/OXPS ke Format PNG
Berikut langkah-langkah untuk mengubah dokumen XPS dan OXPS ke format PNG.
- Inisialisasi streaming dengan file sumber XPS/OXPS.
- Buat instance kelas XpsDocument menggunakan aliran XPS/OXPS.
- Buat instance dari kelas PngSaveOptions.
- Tentukan opsi seperti SmoothingMode dan Resolution.
- Buat instance dari kelas ImageDevice.
- Simpan dokumen XPS/OXPS ke ImageDevice menggunakan XpsDocument->Save(System::SharedPtr perangkat, Sistem::SharedPtr pilihan) metode.
- Ulangi melalui partisi dokumen.
- Inisialisasi aliran keluaran dan simpan gambar PNG.
Kode contoh berikut menunjukkan cara mengonversi dokumen XPS/OXPS ke format PNG menggunakan C++.
// berkas masukan
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Berkas keluaran
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// Inisialisasi aliran input XPS
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------------
try
{
// Muat dokumen XPS dari aliran
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// atau muat dokumen XPS langsung dari file. Tidak diperlukan xpsStream.
// Dokumen XpsDocument = XpsDocument baru(inputFileName, XpsLoadOptions baru());
// Inisialisasi objek PngSaveOptions dengan parameter yang diperlukan.
System::SharedPtr<PngSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<PngSaveOptions>();
tmp_0->set_SmoothingMode(System::Drawing::Drawing2D::SmoothingMode::HighQuality);
tmp_0->set_Resolution(300);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 2, 6 }));
return tmp_0;
}();
// Buat perangkat rendering untuk format PNG
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Iterasi melalui partisi dokumen (dokumen tetap, dalam istilah XPS)
for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
{
for (int32_t j = 0; j < device->get_Result()[i]->get_Length(); j++)
{
// Inisialisasi aliran keluaran gambar
{
System::SharedPtr<System::IO::Stream> imageStream = System::IO::File::Open(System::IO::Path::GetDirectoryName(outputFileName) + u"\\" + System::IO::Path::GetFileNameWithoutExtension(outputFileName) + u"_" + (i + 1) + u"_" + (j + 1) + System::IO::Path::GetExtension(outputFileName), System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
System::Details::DisposeGuard<1> __dispose_guard_0({ imageStream });
// ------------------------------------------------
try
{
imageStream->Write(device->get_Result()[i][j], 0, device->get_Result()[i][j]->get_Length());
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
}
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
Dapatkan Lisensi Gratis
Anda dapat mencoba API tanpa batasan evaluasi dengan meminta lisensi sementara gratis.
Kesimpulan
Pada artikel ini, Anda telah mempelajari cara mengonversi dokumen XPS dan OXPS ke format gambar JPG dan PNG menggunakan C++. Selanjutnya, Aspose.Page for C++ API menyediakan berbagai format tambahan untuk Anda gunakan. Anda dapat menjelajahi API secara mendetail dengan mengunjungi dokumentasi resmi. Jika ada pertanyaan, jangan ragu untuk menghubungi kami di [forum dukungan gratis] kami25.