Объединение документов PS в PDF

API решение для C++ для объединения нескольких файлов PostScript

 

Формат файла PostScript может содержать несколько страниц, но он не имеет возможности объединять несколько файлов в один документ, как формат XPS. Решение Aspose.Page API для C++ предоставляет вам возможность объединять несколько файлов PS или EPS в один документ PDF.

В следующем примере кода показано, как объединить файлы PostScript с помощью C++. Если вам нужно узнать, как эту функциональность можно интегрировать в веб-решение или объединить файлы онлайн, вы можете попробовать кроссплатформенный инструмент PS Merger .

Чтобы объединить файлы PS и EPS, нам нужно:

  • Aspose.Page for C++ API — многофункциональное, мощное и простое в использовании API решение для обработки и преобразования документов для платформы C++.

  • Вы можете загрузить его последнюю версию напрямую, просто откройте диспетчер пакетов NuGet, найдите Aspose.Page.Cpp и установите. Вы также можете использовать следующую команду из консоли диспетчера пакетов.

Package Manager Console Command


    PM> Install-Package Aspose.Page

Шаги по объединению файлов PostScript с C++

  1. Инициализируйте выходные данные PDF и входные потоки PostScript.
  2. Создайте массив файлов PS для слияния.
  3. Используйте класс PdfSaveOptions , чтобы указать необходимые параметры. Этот класс позволяет вам устанавливать дополнительные параметры при слиянии.
  4. Создайте экземпляр PdfDevice из созданного ранее выходного потока и укажите размер и формат изображения.
  5. Объедините файлы. Чтобы узнать больше об этой функции, перейдите на Aspose.Page Документация .

Код С++ для объединения PS в PDF

    using Aspose::Page::IO;
    using Aspose::Page::Presentation::Pdf;
    // Initialize PDF output stream
    System::SharedPtr<System::IO::FileStream> pdfStream = System::MakeObject<System::IO::FileStream>(outDir() + u"outputPDF_out.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    
    // Initialize PostScript input stream
    System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(dataDir() + u"input.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
    System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

    // Create an array of PostScript files that will be merged with the first one
    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.ps", dataDir() + u"input3.ps"});
 
    //Initialize options object with necessary parameters.
    System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(suppressErrors);
    // If you want to add special folder where fonts are stored. Default fonts folder in OS is always included.
    options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

    // Default page size is 595x842 and it is not mandatory to set it in PdfDevice
    System::SharedPtr<Aspose::Page::EPS::Device::PdfDevice> device = System::MakeObject<Aspose::Page::EPS::Device::PdfDevice>(pdfStream);


    {
	    auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream, &pdfStream]()
	    {
		    psStream->Close();
		    pdfStream->Close();
	    });

	    try
	    {
		    document->Merge(filesForMerge, device, options);
	    }
	    catch (...)
	    {
		    throw;
	    }
    }

Объединение инкапсулированных файлов PostScript с помощью C++

Чтобы объединить EPS в PDF, вам нужно будет выполнить те же действия, что и для объединения PS в PDF. Чтобы изучить более подробный пример кода, перейдите на Aspose.Page Документация .

Код С++ для объединения EPS в PDF

    // Initialize PDF output stream
    System::SharedPtr<System::IO::FileStream> pdfStream = System::MakeObject<System::IO::FileStream>(outDir() + u"outputPDF_out.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    
    // Initialize EPS input stream
    System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(dataDir() + u"input.eps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
    System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

    // Create an array of EPS files that will be merged with the first one
    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.eps", dataDir() + u"input3.eps"});
 
    //Initialize options object with necessary parameters.
    System::SharedPtr<PdfSaveOptions> options = System::MakeObject<PdfSaveOptions>(suppressErrors);
    // If you want to add special folder where fonts are stored. Default fonts folder in OS is always included.
    options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

    // Default page size is 595x842 and it is not mandatory to set it in PdfDevice
    System::SharedPtr<Aspose::Page::EPS::Device::PdfDevice> device = System::MakeObject<Aspose::Page::EPS::Device::PdfDevice>(pdfStream);


    {
	    auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream, &pdfStream]()
	    {
		    psStream->Close();
		    pdfStream->Close();
	    });

	    try
	    {
		    document->Merge(filesForMerge, device, options);
	    }
	    catch (...)
	    {
		    throw;
	    }
    }

PS Формат файла PS

Формат PS является одним из форматов языка описания страниц (PDL). Он способен содержать как графическую, так и текстовую информацию на странице. Именно поэтому формат поддерживался большинством программ для редактирования изображений. Сам файл postscript является своеобразной инструкцией для принтеров. Он содержит информацию о том, что и как печатать со своей страницы.