C++를 사용하여 XPS 또는 OXPS 파일을 PDF 형식으로 변환

XPSOXPS 문서는 레이아웃, 모양 및 인쇄 정보를 정의합니다. 이 문서는 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 형식으로 변환하는 단계입니다.

다음 샘플 코드는 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());
}
샘플 코드로 생성된 출력 PDF 파일의 이미지

샘플 코드로 생성된 출력 PDF 파일의 이미지

XPS/OXPS 문서의 선택한 페이지를 PDF 형식으로 변환

XPS 및 OXPS 파일을 PDF 형식으로 변환하는 동안 변환할 페이지를 지정할 수도 있습니다. 출력 PDF 파일에는 선택한 페이지만 포함됩니다. 이를 달성하려면 아래에 제공된 단계를 따르십시오.

다음 샘플 코드는 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());
}
샘플 코드로 생성된 출력 PDF 파일의 이미지

샘플 코드로 생성된 출력 PDF 파일의 이미지

무료 라이선스 받기

임시 무료 라이선스를 요청하면 평가 제한 없이 API를 사용해 볼 수 있습니다.

결론

이 기사에서는 C++를 사용하여 XPS 및 OXPS 문서를 PDF 형식으로 변환하는 방법을 배웠습니다. 또한 Aspose.Page for C++ API를 사용하여 XPS/OXPS 문서의 선택된 페이지를 PDF 형식으로 변환하는 방법을 살펴보았습니다. API는 공식 문서를 방문하여 자세히 탐색할 수 있는 XPS 문서 작업을 위한 많은 추가 기능을 제공합니다. 질문이 있는 경우 무료 지원 포럼을 통해 언제든지 문의하십시오.

또한보십시오