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

如何在iText html2pdf中通过CSS @page规则启用页面方向支持

解决iText html2pdf不识别@page规则实现横竖混合页面的方案

先修正现有代码的错误

你提供的CSS存在两个会导致规则失效的问题:

  • 拼写错误:@page page-portrait 中 orientation 的值写为了portait,少了字母r,正确值为portrait
  • @page的页面尺寸规则可以直接合并写到size属性里,iText对这种写法的兼容性比单独写orientation更高

修正后的HTML代码

<html>
  <head>
    <title>UnitTest</title>
    <style type="text/css">
      * {
        box-sizing: border-box;
      }
      body {
        font-family: Arial, sans-serif;
      }
      /* 直接在size属性里指定纸张大小和方向 */
      @page page-portrait {
        size: A4 portrait;
      }
      @page page-landscape {
        size: A4 landscape;
      }
      .page-portrait {
        page-break-after: always;
        page: page-portrait;
      }
      .page-landscape {
        page-break-after: always;
        page: page-landscape;
      }
    </style>
  </head>
  <body>
    <div class="page-portrait">
        <p>This should be a portrait page</p>
    </div>
    <div class="page-landscape">
        <p>This should be a landscape page</p>
    </div>
    <div class="page-portrait">
        <p>This should be a portrait page</p>
    </div>
    <div class="page-landscape">
        <p>This should be a landscape page</p>
    </div>
  </body>
</html>

iText端转换配置要求

  1. 版本要求:必须使用iText 7的pdfHTML(html2pdf)插件3.0.0及以上版本,旧版本不支持CSS的page属性绑定自定义@page规则
  2. 转换时不要硬编码全局页面大小,不要设置defaultPageSize参数,否则会覆盖CSS里的页面规则
    Java端转换示例代码:
import com.itextpdf.html2pdf.HtmlConverter;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Html2PdfTest {
    public static void main(String[] args) throws Exception {
        FileInputStream htmlStream = new FileInputStream("你的html文件路径");
        FileOutputStream pdfStream = new FileOutputStream("输出pdf路径");
        // 直接使用默认转换方法即可,不要额外设置全局页面大小
        HtmlConverter.convertToPdf(htmlStream, pdfStream);
    }
}

C#端转换逻辑和Java一致,仅语法稍有不同。

验证效果

修改后转换出来的PDF会按照配置依次生成纵向、横向、纵向、横向共4页,符合预期。

内容的提问来源于stack exchange,提问作者jan.swaelens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:45:04