使用 itext7 itextpdf html转pdf 时
我的pdf大小设置如下 420 为div 宽 单位px 420 为div高 单位单位px
PageSize pageSize = new PageSize(420 *72/96 ,294 *72/96 );
pdfDocument.setDefaultPageSize(pageSize);
我的每个div 设置了page-break-after: always; 用来分页
但是 生成的pdf 会 多出一个空白页 (第一页正常 第二页空白)
我感觉是 pdf 宽高设置有问题
但是 按比例增加pdf 宽高后 内容在一页了 但是 内容偏坐上
我想得到一个 与div 同比例的 pdf
我帮你想想解决方法
需要确保在设置 PageSize 时,将页面的宽度设置为相同比例的大小。换句话说,如果 div 的宽度是 420 像素,就页面的高度也应该设置为同样比例的大小,例如 294 像素。
另外如果在将 HTML 转换为 PDF 时遇到了空白页的问题,可以试试在 HTML 中使用 page-break-before: always; 来避免空白页的出现。
此外如果在将内容填充到 PDF 文档中时遇到了内容偏坐上的问题,可以试试使用 iText 的布局功能来调整内容的位置。例如可以使用 setFixedPosition 方法将内容固定在指定的位置,或者使用 setVerticalAlignment 方法将内容垂直居中。
仅供参考,望采纳,谢谢。
你看看这个实例思路,链接:https://blog.csdn.net/xxbai123456/article/details/120099283
不知道你解决了没?
如果没有解决,我们可以聊聊。
在html中使用css样式设置空白页的背景色为透明
使用itext7的pdfHTML插件进行转换时设置"NoNewPageBetweenElements"参数为true,这将会在元素之间不插入新的页面
在pdf文档中删除多余的空白页,可以使用itext7的PdfPageEventHelper类的onEndPage方法进行处理。在该方法中,可以使用PdfContentByte的getUnderContent方法获取当前页面的下层内容,然后使用PdfContentByte的getCurrentPage和getNumberOfPages方法获取当前页面和总页数,最后判断当前页是否为空白页,如果是,则使用PdfContentByte的removePage方法删除该页。
这个要根据你的pdf尺寸,然后结合你的内容的高度进行设置,推荐使用WkHtmlToPdfDotNet 来生成pdf,java对应也有相应的类库,可以直接指定html内容生成你想要的pdf
使用 iText 7 将 HTML 转换为 PDF 文档时出现了多余的空白页,可以尝试使用以下方法来处理
使用 MarginMirroring 属性:在 iText 7 中,可以使用 MarginMirroring 属性来控制页面的边距是否对称。如果启用了该属性,iText 会自动复制左边距到右边距,右边距到左边距,从而避免出现多余的空白页。
使用 NoNewPageParagraph:iText 7 中还提供了 NoNewPageParagraph 类,可以用于阻止段落跨越多个页面。如果在添加段落时使用了这个类,iText 将不会在段落之间插入空白页。
使用 keepTogether 属性:如果想要保持某些内容在同一页面内,可以使用 keepTogether 属性。当启用该属性时,iText 将尽量避免在这些内容之间插入空白页。
你是不是没有设置这个属性setSplitLate,它默认属性是true,当当前页放不下时,自动跳转到下一页。当属性值为false的时候,强制为当前页优先显示,也就是当前页能放多少就放多少,不够再放到下一页。
PdfTable pdf = new PdfpTable(4);
pdf.setSplitLate(false);
您可以尝试使用 iText 7 的 ConverterProperties 类来解决您的问题。ConverterProperties 类允许您设置转换 HTML 到 PDF 时的一些选项,包括设置屏幕大小和分辨率。
下面是一个使用 ConverterProperties 解决多余空白页问题的例子:
// 设置屏幕大小和分辨率
ScreenSize screenSize = new ScreenSize(420, 294);
float dpi = 96;
ConverterProperties converterProperties = new ConverterProperties();
converterProperties.setBaseUri(baseUri);
converterProperties.setScreenSize(screenSize);
converterProperties.setDotsPerPoint(dpi/72f);
// 使用 ConverterProperties 将 HTML 转换为 PDF
HtmlConverter.convertToPdf(new FileInputStream(htmlFile), pdfDocument, converterProperties);
希望这能帮到您!如果您还有其他问题,请随时联系我。望采纳。
在 iText 7 中转换 HTML 到 PDF 时,您需要确保您的 HTML 文档的大小与您设置的 PDF 页面大小相符。您可以通过使用 PageSize 类来设置 PDF 的大小。
您提到的问题可能是由于 HTML 文档的大小与 PDF 页面大小不匹配导致的。您可以尝试使用 MediaDeviceDescription 将 HTML 文档的大小与 PDF 页面大小匹配。
ConverterProperties properties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.setWidth(420);
properties.setMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.convertToPdf(html, pdfDoc, properties);
此外,您可以在HTML 样式中设置 page-break-before: avoid; 使它不会产生空白页。或者设置另外一个分页属性值。
如果这些方法仍然不起作用,您可以尝试手动检查您的 HTML 文档的大小,并确保它与您设置的 PDF 页面大小相匹配。
另外, 您也可以使用viewport meta 标签,设置文档的宽度与设备屏幕的宽度相等。
<meta name="viewport" content="width=device-width, initial-scale=1.0">
我希望这些建议能帮助您解决问题.,望采纳。