【问题标题】:iText 7 converting HTML to PDF - How to see entire wide table?iText 7 将 HTML 转换为 PDF - 如何查看整个宽表?
【发布时间】: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


【解决方案1】:

这回答了如何更改页面大小以适应非常大的表的基本问题。这个答案确实提供任何确定所需宽度的方法,但至少这个代码确实改变了默认页面大小。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument doc = new PdfDocument(new PdfWriter(baos));
doc.setDefaultPageSize(new PageSize(2000, 200));
ConverterProperties props = new ConverterProperties();
HtmlConverter.convertToPdf(this.getClass().getResourceAsStream("/very-wide-table_01.html"), doc, props);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多