0

我的打印机不支持我需要的功能。

打印机打印A2纸张尺寸。我想打印两个A3尺寸的页面,可以放在一张A2纸上,但我的打印机不支持这个。

我已经打电话给公司的支持,但他们告诉我需要购买一台新的,因为我的打印机不支持此功能。(这很有趣,因为该打印机的更旧版本确实支持此功能)。

所以我尝试使用 Apache PDFBox,我可以像这样加载我的 pdf 文件:

File pdfFile = new File(path);
PDDocument pdfDocument = load(pdfFile);

我加载的文件是 size A3。我认为如果我能得到一个具有A2纸张大小的新 PDDocument 就足够了。然后把我装好的pdfFile两次放在一张A2纸里。

总而言之,我需要在一页上加载两次的文件。我只是不知道该怎么做。

此致。

4

1 回答 1

0

您可能想查看PageCombinationSample.java,根据其 JavaDoc,它几乎可以满足您的需求:

此示例演示如何使用表单 XObjects [PDF:1.6:4.9] 将多个页面组合成单个更大的页面(例如,将两个 A4 模块组合成一个 A3 模块)。

表单 XObject 是一种将多个页面上的内容多次表示为模板的便捷方式。

中心代码:

// 1. Opening the source PDF file...
File sourceFile = new File(filePath);

// 2. Instantiate the target PDF file!
File file = new File();

// 3. Source page combination into target file.
Document document = file.getDocument();
Pages pages = document.getPages();
int pageIndex = -1;
PrimitiveComposer composer = null;
Dimension2D targetPageSize = PageFormat.getSize(SizeEnum.A4);
for(Page sourcePage : sourceFile.getDocument().getPages())
{
    pageIndex++;
    int pageMod = pageIndex % 2;
    if(pageMod == 0)
    {
        if(composer != null)
        {composer.flush();}

        // Add a page to the target document!
        Page page = new Page(
            document,
            PageFormat.getSize(SizeEnum.A3, OrientationEnum.Landscape)
        ); // Instantiates the page inside the document context.
        pages.add(page); // Puts the page in the pages collection.
        // Create a composer for the target content stream!
        composer = new PrimitiveComposer(page);
    }

    // Add the form to the target page!
    composer.showXObject(
        sourcePage.toXObject(document), // Converts the source page into a form inside the target document.
        new Point2D.Double(targetPageSize.getWidth() * pageMod, 0),
        targetPageSize,
        XAlignmentEnum.Left,
        YAlignmentEnum.Top,
        0
    );
}
composer.flush();

// 4. Serialize the PDF file!
serialize(file, "Page combination", "combining multiple pages into single bigger ones", "page combination");

// 5. Closing the PDF file...
sourceFile.close();
于 2013-05-20T20:29:01.307 回答