iText7设置PageSize后Paragraph无法正常生效问题求助
iText7 Paragraph 无法适配自定义PageSize问题解决方案
问题根因
iText 7中PageSize构造函数传入的数值单位为点(pt),1pt≈0.35mm,你定义的55pt页面本身尺寸极小,叠加上下左右各1pt的边距设置后,页面实际可渲染内容的区域仅为33pt,远小于默认字体的基础行高,导致Paragraph无法正常适配显示。
修复方案
- 首先修正原代码中
PdfWriter构造参数的字符串引号不闭合问题,避免编译报错 - 调整自定义页面尺寸到合理范围:如果无特殊极小页面需求,可直接使用预设尺寸如
PageSize.A4;若需自定义小尺寸,建议宽高至少设置为100pt*50pt以上,保证文字有足够的渲染空间 - 若必须使用小尺寸页面,可同步调整Paragraph的字体、行高参数适配页面,参考修改后代码如下:
// 自定义页面尺寸调整为100*50pt,可根据需求自行修改 PageSize objPageSize = new PageSize(100, 50); // 修正原代码字符串引号缺失问题 PdfWriter writer = new PdfWriter("D:\\Test.pdf"); iText.Kernel.Pdf.PdfDocument pdf = new iText.Kernel.Pdf.PdfDocument(writer); iText.Layout.Document document = new iText.Layout.Document(pdf, objPageSize); document.SetMargins(1, 1, 1, 1); Paragraph objParagraph = new Paragraph("HEADER") // 调整字体大小适配小页面 .SetFontSize(8) // 调整行高减少多余留白 .SetMultipliedLeading(1); document.Add(objParagraph); document.Close();
- 若确实需要使用5*5pt的极小尺寸页面,可额外配置Paragraph的溢出处理规则,设置超出部分自动隐藏或拆分,避免内容溢出报错。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

