在 Java 中合并 EPS、PostScript (PS) 和 XPS 文档

使用 Aspose.Page for Java 以编程方式将多个 EPS、PostScript (PS) 和 XPS 文件合并为单个多页 PDF 文档。无需依赖 Adobe Acrobat、Distiller 或 Windows 原生打印实用程序,即可在不同文档格式之间无缝合并单独的矢量图形、打印文件或页面流。

 

Aspose.Page for Java 提供专用的渲染设备 (PdfDeviceImageDevice) 和保存选项,用于将多个输入文件转换并合并为统一的输出流。

  • 要将独立的矢量图形和 EPS 插图合并为一个整合的 PDF 文档集,请使用 PsDocument.mergeToPdf() 方法。
  • 要将多个文件的 PostScript 打印作业和报告合并为一个可打印的 PDF 文件,请使用 PsDocument.mergeToPdf() 方法。
  • 要将不同的 XPS 文件、发票或批量页面输出合并为一个 XPS 或 PDF 包,请使用 XpsDocument.merge() 方法。

将多个 EPS 文件合并为单个 PDF

将多个独立的 EPS 矢量图形文件合并为一个多页 PDF 文档。

import com.aspose.page.eps.PsDocument;
import com.aspose.page.eps.device.PdfSaveOptions;
import com.aspose.page.eps.device.PdfDevice;
import java.io.FileOutputStream;

public class MergeEpsFilesToPdf {
    public static void main(String[] args) throws Exception {
        // Define array of input EPS files to merge
        String[] epsFiles = new String[] {
            "C:/Project/Input/graphic1.eps",
            "C:/Project/Input/graphic2.eps",
            "C:/Project/Input/graphic3.eps"
        };

        // Initialize output stream for the merged PDF
        FileOutputStream outStream = new FileOutputStream("C:/Project/Output/merged_eps_output.pdf");

        // SOpen the first EPS document as the base document
        PsDocument baseDocument = new PsDocument(epsFiles[0]);

        // Configure PDF save options
        PdfSaveOptions options = new PdfSaveOptions();
        options.setJpegQualityLevel(100);

        // Merge additional EPS files and save to PDF stream
        baseDocument.mergeToPdf(outStream, epsFiles, options);

        outStream.close();
        System.out.println("EPS files successfully merged into a single PDF document.");
    }
}

将多个 PostScript (PS) 文档合并为单个 PDF

使用自定义字体搜索路径和选项,将多个多页 PostScript 文件合并为一个整合的 PDF 流。

import com.aspose.page.eps.PsDocument;
import com.aspose.page.eps.device.PdfSaveOptions;
import java.io.FileOutputStream;

public class MergePsFilesToPdf {
    public static void main(String[] args) throws Exception {
        // Specify list of PS files
        String[] psFiles = new String[] {
            "C:/Project/Input/report_part1.ps",
            "C:/Project/Input/report_part2.ps"
        };

        FileOutputStream outStream = new FileOutputStream("C:/Project/Output/merged_report.pdf");

        // Load base PS document
        PsDocument basePsDoc = new PsDocument(psFiles[0]);

        // Set options and configure font folders if custom fonts are used
        PdfSaveOptions options = new PdfSaveOptions();
        options.setAdditionalFontsFolders(new String[] { "C:/Project/Fonts/" });

        // Merge files to PDF
        basePsDoc.mergeToPdf(outStream, psFiles, options);

        outStream.close();
        System.out.println("PostScript documents merged to PDF successfully.");
    }
}

将多个 XPS 文档合并为单个 XPS 文件

将不同的 XPS 包或生成的发票页面合并为一个多页 XPS 文件。

import com.aspose.page.xps.XpsDocument;

public class MergeXpsFiles {
    public static void main(String[] args) throws Exception {
        // Open base XPS document
        XpsDocument baseDocument = new XpsDocument("C:/Project/Input/document1.xps");

        // Define array of additional XPS documents to append
        String[] xpsFilesToMerge = new String[] {
            "C:/Project/Input/document2.xps",
            "C:/Project/Input/document3.xps"
        };

        // Execute merge operation and save output
        baseDocument.merge(xpsFilesToMerge, "C:/Project/Output/merged_document.xps");

        baseDocument.close();
        System.out.println("XPS documents merged into a single XPS package successfully.");
    }
}

安装和设置

将 Aspose.Page for Java 添加到您的 Maven:

Package Manager Console Command

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-page</artifactId>
    <version>Latest</version>
</dependency>

FAQ

1. 我可以直接将 XPS 文档合并为 PDF,而不是 XPS 吗?

可以。您可以使用 XpsDocument 加载 XPS 文档,并使用 PdfDevice 将其与辅助文件一起渲染,从而直接根据 XPS 输入创建合并的 PDF 文件。

2. Aspose.Page 在合并 PS 或 EPS 文件时如何处理缺失的字体?

如果输入的 EPS/PS 文件引用了自定义字体,您可以使用 PdfSaveOptions.setAdditionalFontsFolders() 提供其位置。如果字体缺失,Aspose.Page 会使用内置的默认字体替换逻辑来完成渲染,而不会抛出致命异常。

3. 在批量处理大型文件集时,是否能够保持内存使用效率?

可以。Aspose.Page 在 PDF 设备执行期间按顺序处理输入页面流,从而能够以较低的内存开销高效地合并大型企业打印作业。