【发布时间】:2020-11-24 03:14:18
【问题描述】:
InputStream is = this.getClass().getResourceAsStream("/very-wide-table_01.html");
ByteArrayOutputStream os = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(is, os);
当输入 HTML 有一个宽表格时,会看到此消息(表格被截断,数据丢失):
WARN TableWidths 由于单元格的最小宽度,表格宽度超出预期。
如何告诉 iText 缩放内容以适合 PDF 页面,或缩放页面以适合内容?
我确信这可以通过 PDF 完成。 Aspose.PDF 库默认执行此操作。但我需要一种方法来使用 iText。
(编辑)对于 PDF 页面来说,任何表格都太宽了...
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/XHTML">
<head><title>very wide table</title><meta charset="UTF-8"/>
<style>
table {border-collapse: collapse;}
table, td, th {border: 1px solid red;}
th {text-align: center; text-weight: bold;}
</style></head>
<body>
<table>
<tr><td colspan="30">Very wide table</td></tr>
<tr>
<td>1234567890</td><td>1234567890</td><td>1234567890</td><td>1234567890</td>
<td>1234567890</td><td>1234567890</td><td>1234567890</td><td>1234567890</td>
<td>1234567890</td><td>1234567890</td><td>1234567890</td><td>1234567890</td>
<td>1234567890</td><td>1234567890</td><td>1234567890</td><td>1234567890</td>
<td>1234567890</td><td>1234567890</td><td>1234567890</td><td>1234567890</td>
<td>1234567890</td><td>1234567890</td><td>1234567890</td><td>1234567890</td>
<td>1234567890</td><td>1234567890</td><td>1234567890</td><td>1234567890</td>
<td>1234567890</td><td>1234567890</td>
</tr>
</table>
</body>
</html>
【问题讨论】:
-
您可以发布您要转换的表格 (HTML) 吗?
-
您的预期行为是什么?较小的字体?更多行?更宽的 PDF 文档?
-
期望的结果可能是缩放内容以适合页面,或缩放页面以适合内容。这是否意味着改变每英寸的整体点数,或“更宽的文档”,无论如何。仅仅改变字体大小不会改变表格内部和周围的间距,除非你也打算包括所有这些。将列移动到行将更改表格。不要换表。我需要保留原始行和列。
-
改变文档的大小吧! convertPdf 也可以将
PdfDocument作为参数,您可以在其中定义输出 PDF 文档的大小 -
@AndréLemos 我还不能完成这项工作。我也尝试了其他几件事。有人提到通过其中一个属性改变 DPI,但我得到了同样的结果。
标签: java itext pdf-generation itext7 pdfhtml