XPS 문서를 PDF로 병합

여러 XPS 파일을 결합하는 C++ API 솔루션

 

XPS 파일 형식을 사용하면 단일 파일 내에 여러 문서를 저장할 수 있으며 여러 페이지를 포함할 수도 있습니다. C++용 Aspose.Page API 솔루션은 여러 파일을 하나로 병합하는 기능을 제공하여 모든 원본 파일의 결합된 콘텐츠를 포함하는 XPS 또는 PDF 파일을 생성합니다.

여기에서 XPS 파일을 병합하기 위해 API를 사용하는 방법에 대한 코드 예제를 찾을 수 있습니다. 이 기능을 웹 솔루션에 통합하거나 온라인 파일 병합에 사용하는 방법을 알아보려면 크로스 플랫폼 XPS Merger 을 사용해 볼 수 있습니다. 도구.

PS 및 EPS 파일을 병합하려면 다음이 필요합니다.

  • Aspose.Page for C++ API는 기능이 풍부하고 강력하며 사용하기 쉬운 C++ 플랫폼용 문서 조작 및 변환 API입니다.

  • 최신 버전을 직접 다운로드하고 NuGet 패키지 관리자를 열고 Aspose.Page.Cpp를 검색하여 설치할 수 있습니다. 패키지 관리자 콘솔에서 다음 명령을 사용할 수도 있습니다.

Package Manager Console Command


    PM> Install-Package Aspose.Page

C++를 사용하여 여러 XPS 파일을 PDF로 병합하는 단계입니다.

  1. 문서 디렉토리의 경로를 설정하십시오.
  2. PDF 출력 및 XPS 파일 입력 스트림을 초기화합니다.
  3. 생성된 이전 입력 스트림에서 XpsDocument 의 인스턴스를 생성합니다.
  4. PdfSaveOptions 클래스.
  5. PdfDevice 클래스를 사용하여 PDF 형식용 렌더링 장치를 만듭니다.
  6. XPS 파일을 병합하여 XPS 문서를 출력합니다.

XPS를 PDF로 병합하는 C++ 코드

    using Aspose::Page::XPS;
    using Aspose::Page::IO;
    using Aspose::Page::Presentation::Pdf;
    // Input file
    System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(RunExamples::outDir() + u"XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    // Clearing resources under 'using' statement
    System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
    // ------------------------------------------
    try {
	    System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(RunExamples::dataDir() + u"input xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	    // Clearing resources under 'using' statement
	    System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	    // ------------------------------------------

	    try
	    {
		    // Load XPS document form the stream
		    System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		    // or load XPS document directly from file. No xpsStream is needed then.
		    // XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

		    // Initialize options object with necessary parameters.
		    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, 2, 6 })); return tmp_0; }();

		    // Create rendering device for PDF format
		    System::SharedPtr<Aspose::Page::Xps::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::Xps::Presentation::Pdf::PdfDevice>(pdfStream);

		    // Create an array of XPS files that will be merged with the first one
		    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});

		    document->Merge(filesForMerge, device, options);
	    }
	    catch (...)
	    {
		    __dispose_guard_0.SetCurrentException(std::current_exception());
	    }
    }
    catch (...)
    {
	    __dispose_guard_1.SetCurrentException(std::current_exception());
    }

C++를 사용하여 여러 XPS 파일을 단일 파일로 병합하는 단계입니다.

  1. XPS 출력 및 입력 스트림을 초기화합니다.
  2. 첫 번째 파일과 병합할 XPS 파일 배열을 만듭니다.
  3. 생성된 이전 입력 스트림에서 XpsDocument 인스턴스를 생성합니다.
  4. XPS 파일을 병합하여 XPS 문서를 출력합니다.

XPS를 XPS에 병합하는 C++ 코드

    // Output stream
    System::SharedPtr<System::IO::Stream> outStream = System::IO::File::Open(RunExamples::outDir() + u"mergedXPSfiles.xps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    // Clearing resources under 'using' statement
    System::Details::DisposeGuard<1> __dispose_guard_1({ outStream });
    // ------------------------------------------
    try {
	    System::SharedPtr<System::IO::Stream> inStream = System::IO::File::Open(RunExamples::dataDir() + u"input.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	    // Clearing resources under 'using' statement
	    System::Details::DisposeGuard<1> __dispose_guard_0({ inStream });
	    // ------------------------------------------

	    try
	    {
		    // Load XPS document form the stream
		    System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		    // or load XPS document directly from file. No xpsStream is needed then.
		    // XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

		    // Create an array of XPS files that will be merged with the first one
		    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});

		    document->Merge(filesForMerge, outStream);
	    }
	    catch (...)
	    {
		    __dispose_guard_0.SetCurrentException(std::current_exception());
	    }
    }
    catch (...)
    {
	    __dispose_guard_1.SetCurrentException(std::current_exception());
    }

XPS XPS 파일 형식이란 무엇입니까?

XPS 형식은 PDF 형식과 유사합니다. 둘 다 PDL(페이지 설명 언어) 형식입니다. EPS는 PostScript 언어가 아닌 HTML을 기반으로 합니다. .eps 파일은 문서가 어떻게 생겼는지에 대한 정보와 함께 문서 구조의 마크업을 포함할 수 있습니다. 문서를 인쇄하고 렌더링하는 방법에 대한 지침도 추가되었습니다. 형식의 특징은 문서의 설명을 수정한다는 것입니다. 즉, 누가, 어떤 운영 체제에서 문서를 열더라도 동일하게 보일 것입니다.