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

使用iText将HTML转换为LANDSCAPE横版PDF失败问题咨询

iText HTML转PDF横版设置失效解决方案

你尝试的两种方案无效有两个核心原因:

  1. MediaDeviceDescription.setOrientation(LANDSCAPE) 仅用于匹配CSS中的媒体查询规则(如@media (orientation: landscape)),本身不会修改PDF的实际页面方向。
  2. PdfDocument.setDefaultPageSize() 设置的默认页面尺寸,优先级低于HTML文档中定义的@page CSS规则,如果你的HTML里存在明确的页面尺寸配置,会直接覆盖你设置的默认参数。

场景1:可以修改原始HTML内容

直接在HTML的<style>标签中添加页面规则即可,这是最稳定的方案:

@page {
    size: A4 landscape;
    /* 可根据需求调整边距 */
    margin: 20px;
}

场景2:无法修改原始HTML内容

通过添加页面事件监听器,强制所有生成的PDF页面都使用横版尺寸,参考代码如下:

ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
// 定义横版页面尺寸,非A4规格可自行替换
PageSize landscapePage = PageSize.A4.rotate();
PdfWriter writer = new PdfWriter(pdfStream);
PdfDocument pdfDoc = new PdfDocument(writer);
// 强制所有新生成的页面都使用指定横版尺寸
pdfDoc.addEventHandler(PdfDocument.START_PAGE, event -> {
    PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
    docEvent.getPage().setPageSize(landscapePage);
});
// 执行转换
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfDoc, new ConverterProperties());

如果需要其他纸张规格,替换PageSize.A4为对应参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:30:05