
XPS 및 OXPS 문서는 PDF 파일과 유사하며 문서의 레이아웃, 모양 및 인쇄 정보를 정의합니다. XPS 및 OXPS 문서를 JPG 및 PNG 이미지 형식으로 변환해야 하는 시나리오가 있을 수 있습니다. 이를 위해 이 기사에서는 C++를 사용하여 XPS 및 OXPS 문서를 JPG 및 PNG 이미지 형식으로 변환하는 방법을 설명합니다.
XPS, OXPS 파일을 JPG 또는 PNG 형식으로 변환하기 위한 C++ API
Aspose.Page for C++는 XPS 및 PostScript 파일을 렌더링하고 조작하기 위한 C++ 라이브러리입니다. XPS 문서를 만들고 읽고 업데이트할 수 있습니다. 또한 API는 XPS 및 OXPS 문서를 JPG 및 PNG 이미지 형식으로 변환하는 것을 지원합니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.
PM> Install-Package Aspose.Page.Cpp
XPS/OXPS 문서를 JPG 형식으로 변환
다음은 XPS 및 OXPS 문서를 JPG 형식으로 변환하는 단계입니다.
- 소스 XPS/OXPS 파일로 스트림을 초기화합니다.
- XPS/OXPS 스트림을 사용하여 XpsDocument 클래스의 인스턴스를 만듭니다.
- JpegSaveOptions 클래스의 인스턴스를 만듭니다.
- SmoothingMode 및 Resolution와 같은 옵션을 지정합니다.
- ImageDevice 클래스의 인스턴스를 만듭니다.
- [XpsDocument->Save(System::SharedPtr)를 사용하여 XPS/OXPS 문서를 ImageDevice에 저장합니다. 장치, 시스템::SharedPtr 옵션)]15 메서드.
- 문서 파티션을 반복합니다.
- 출력 스트림을 초기화하고 JPG 이미지를 저장합니다.
다음 샘플 코드는 C++를 사용하여 XPS/OXPS 문서를 JPG 형식으로 변환하는 방법을 보여줍니다.
// 입력 파일
System::String inputFileName = u"SourceDirectory\\sample.xps";
//결과물 파일
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// XPS 입력 스트림 초기화
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// 'using' 문에서 리소스 지우기
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// 스트림에서 XPS 문서 로드
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// 또는 파일에서 직접 XPS 문서를 로드합니다. 그러면 xpsStream이 필요하지 않습니다.
// XpsDocument 문서 = new XpsDocument(inputFileName, new XpsLoadOptions());
// 필요한 매개변수를 사용하여 JpegSaveOptions 개체를 초기화합니다.
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;
}();
// JPG 형식의 렌더링 장치 만들기
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// 문서 파티션을 통해 반복(고정 문서, 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++)
{
// 이미지 출력 스트림 초기화
{
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);
// 'using' 문에서 리소스 지우기
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());
}
}

샘플 코드로 생성된 JPG 이미지
XPS/OXPS 문서를 PNG 형식으로 변환
다음은 XPS 및 OXPS 문서를 PNG 형식으로 변환하는 단계입니다.
- 소스 XPS/OXPS 파일로 스트림을 초기화합니다.
- XPS/OXPS 스트림을 사용하여 XpsDocument 클래스의 인스턴스를 만듭니다.
- PngSaveOptions 클래스의 인스턴스를 만듭니다.
- SmoothingMode 및 Resolution와 같은 옵션을 지정합니다.
- ImageDevice 클래스의 인스턴스를 만듭니다.
- [XpsDocument->Save(System::SharedPtr)를 사용하여 XPS/OXPS 문서를 ImageDevice에 저장합니다. 장치, 시스템::SharedPtr 옵션)]22 메서드.
- 문서 파티션을 반복합니다.
- 출력 스트림을 초기화하고 PNG 이미지를 저장합니다.
다음 샘플 코드는 C++를 사용하여 XPS/OXPS 문서를 PNG 형식으로 변환하는 방법을 보여줍니다.
// 입력 파일
System::String inputFileName = u"SourceDirectory\\sample.xps";
//결과물 파일
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// XPS 입력 스트림 초기화
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// 'using' 문에서 리소스 지우기
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// 스트림에서 XPS 문서 로드
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// 또는 파일에서 직접 XPS 문서를 로드합니다. 그러면 xpsStream이 필요하지 않습니다.
// XpsDocument 문서 = new XpsDocument(inputFileName, new XpsLoadOptions());
// 필요한 매개변수를 사용하여 PngSaveOptions 개체를 초기화합니다.
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;
}();
// PNG 형식의 렌더링 장치 만들기
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// 문서 파티션을 통해 반복(고정 문서, 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++)
{
// 이미지 출력 스트림 초기화
{
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);
// 'using' 문에서 리소스 지우기
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());
}
}

샘플 코드로 생성된 PNG 이미지
무료 라이선스 받기
무료 임시 라이선스를 요청하면 평가 제한 없이 API를 사용해 볼 수 있습니다.
결론
이 기사에서는 C++를 사용하여 XPS 및 OXPS 문서를 JPG 및 PNG 이미지 형식으로 변환하는 방법을 배웠습니다. 또한 Aspose.Page for C++ API는 사용할 수 있는 다양한 추가 형식을 제공합니다. 공식문서에서 API를 자세히 살펴볼 수 있다. 질문이 있는 경우 무료 지원 포럼을 통해 언제든지 문의하십시오.