XPS 및 OXPS 문서는 레이아웃, 모양 및 인쇄 정보를 정의합니다. 이 문서는 PDF 파일과 유사합니다. PDF 형식의 높은 인기로 인해 XPS 및 OXPS 문서를 PDF 형식으로 변환해야 하는 상황에 처할 수 있습니다. 이를 위해 이 기사에서는 C++를 사용하여 XPS 및 OXPS 문서를 PDF 형식으로 변환하는 방법을 설명합니다.
XPS 및 OXPS 문서를 PDF 형식으로 변환하기 위한 C++ API
Aspose.Page for C++는 XPS 및 PostScript 파일을 렌더링하고 조작하기 위한 C++ 라이브러리입니다. XPS 문서를 만들고 읽고 업데이트할 수 있습니다. 또한 API는 XPS 및 OXPS 문서를 PDF 형식으로 변환하는 것을 지원합니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.
PM> Install-Package Aspose.Page.Cpp
XPS/OXPS 문서를 PDF 형식으로 변환
다음은 XPS 및 OXPS 문서를 PDF 형식으로 변환하는 단계입니다.
- 출력 PDF 파일로 스트림을 초기화합니다.
- 소스 XPS/OXPS 파일로 스트림을 초기화합니다.
- XPS/OXPS 스트림을 사용하여 XpsDocument 클래스의 인스턴스를 만듭니다.
- PdfSaveOptions 클래스의 인스턴스를 만듭니다.
- JpegQualityLevel 및 ImageCompression와 같은 옵션을 지정합니다.
- XpsDocument->Save(System::SharedPtr)를 사용하여 출력 PDF 파일을 저장합니다. 장치, 시스템::SharedPtr 옵션) 메서드.
다음 샘플 코드는 C++를 사용하여 XPS/OXPS 문서를 PDF 형식으로 변환하는 방법을 보여줍니다.
// 결과물 파일
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// 'using' 문에서 리소스 지우기
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// 소스 파일
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// 'using' 문에서 리소스 지우기
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// 스트림에서 XPS 문서 로드
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// 또는 파일에서 직접 XPS 문서를 로드합니다. 그러면 xpsStream이 필요하지 않습니다.
// XpsDocument 문서 = new XpsDocument(inputFileName, new XpsLoadOptions());
// 필요한 매개변수를 사용하여 PdfSaveOptions 개체를 초기화합니다.
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;
}();
// PDF 형식용 렌더링 장치 만들기
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// PDF 파일 저장
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
XPS/OXPS 문서의 선택한 페이지를 PDF 형식으로 변환
XPS 및 OXPS 파일을 PDF 형식으로 변환하는 동안 변환할 페이지를 지정할 수도 있습니다. 출력 PDF 파일에는 선택한 페이지만 포함됩니다. 이를 달성하려면 아래에 제공된 단계를 따르십시오.
- 출력 PDF 파일로 스트림을 초기화합니다.
- 소스 XPS/OXPS 파일로 스트림을 초기화합니다.
- XPS/OXPS 스트림을 사용하여 XpsDocument 클래스의 인스턴스를 만듭니다.
- PdfSaveOptions 클래스의 인스턴스를 만듭니다.
- JpegQualityLevel 및 ImageCompression와 같은 옵션을 지정합니다.
- PdfSaveOptions->set_PageNumbers(System::ArrayPtr)를 사용하여 변환할 페이지를 지정합니다.<int32\t> 값) 메서드입니다.
- XpsDocument->Save(System::SharedPtr)를 사용하여 출력 PDF 파일을 저장합니다. 장치, 시스템::SharedPtr 옵션) 메서드.
다음 샘플 코드는 XPS 및 OXPS 문서의 선택된 페이지를 C++를 사용하여 PDF 형식으로 변환하는 방법을 보여줍니다.
// 결과물 파일
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// 'using' 문에서 리소스 지우기
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// 소스 파일
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// 'using' 문에서 리소스 지우기
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// 스트림에서 XPS 문서 로드
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// 또는 파일에서 직접 XPS 문서를 로드합니다. 그러면 xpsStream이 필요하지 않습니다.
// XpsDocument 문서 = new XpsDocument(inputFileName, new XpsLoadOptions());
// 필요한 매개변수를 사용하여 PdfSaveOptions 개체를 초기화합니다.
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;
}();
// PDF 형식용 렌더링 장치 만들기
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// PDF 파일 저장
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
무료 라이선스 받기
임시 무료 라이선스를 요청하면 평가 제한 없이 API를 사용해 볼 수 있습니다.
결론
이 기사에서는 C++를 사용하여 XPS 및 OXPS 문서를 PDF 형식으로 변환하는 방법을 배웠습니다. 또한 Aspose.Page for C++ API를 사용하여 XPS/OXPS 문서의 선택된 페이지를 PDF 형식으로 변환하는 방법을 살펴보았습니다. API는 공식 문서를 방문하여 자세히 탐색할 수 있는 XPS 문서 작업을 위한 많은 추가 기능을 제공합니다. 질문이 있는 경우 무료 지원 포럼을 통해 언제든지 문의하십시오.