You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PDFBox动态创建指定格式与方向的PDPage对象

实现方法

最简便的实现不需要硬编码4种页面规格的常量,按拆分参数、匹配尺寸、适配方向的逻辑写工具方法即可,代码可维护性高,也不会出现尺寸错误:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

public class PdfCreateUtils {
    /**
     * 创建带指定规格页面的PDDocument对象
     * @param pageSpec 页面规格,仅支持 A4-Portrait/A4-Landscape/A3-Portrait/A3-Landscape
     * @return 已添加对应规格页面的PDDocument实例
     */
    public static PDDocument createDocWithTargetPage(String pageSpec) {
        String[] specParts = pageSpec.split("-");
        if (specParts.length != 2) {
            throw new IllegalArgumentException("参数格式非法,请按「尺寸-方向」格式传入,如A3-Landscape");
        }

        // 匹配基础纸张尺寸
        PDRectangle baseSize;
        switch (specParts[0]) {
            case "A3":
                baseSize = PDRectangle.A3;
                break;
            case "A4":
                baseSize = PDRectangle.A4;
                break;
            default:
                throw new IllegalArgumentException("暂不支持该纸张尺寸,仅支持A3、A4");
        }

        // 适配页面方向
        PDRectangle finalPageSize;
        switch (specParts[1]) {
            case "Portrait":
                // 竖版直接使用基础尺寸即可
                finalPageSize = baseSize;
                break;
            case "Landscape":
                // 横版直接交换基础尺寸的宽高,无需额外记内置常量
                finalPageSize = new PDRectangle(baseSize.getHeight(), baseSize.getWidth());
                break;
            default:
                throw new IllegalArgumentException("暂不支持该页面方向,仅支持Portrait、Landscape");
        }

        PDDocument document = new PDDocument();
        document.addPage(new PDPage(finalPageSize));
        return document;
    }
}

方案优势

  • 逻辑拆分清晰,后续如果要新增A5、A2等其他纸张尺寸,只需要在尺寸匹配的分支里加对应case即可,方向处理逻辑完全不用改
  • 不需要依赖PDFBox是否提供横版对应的内置常量,交换宽高是PDFBox官方推荐的横版页面实现方式,尺寸精度和内置常量完全一致
  • 自带参数校验,非法输入会抛出明确的异常信息,方便调用方排查问题

调用时直接传入对应参数字符串即可,比如传入"A3-Landscape",就会自动生成A3横版的页面添加到新文档中返回。

内容的提问来源于stack exchange,提问作者Arshad Rehmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:40:37