iText 7 преобразование HTML в PDF - Как увидеть всю широкую таблицу? - PullRequest
0 голосов
/ 04 августа 2020
InputStream is = this.getClass().getResourceAsStream("/very-wide-table_01.html");
ByteArrayOutputStream os = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(is, os);

Когда вход HTML имеет широкую таблицу, отображается это сообщение (и таблица усекается, данные теряются):

WARN TableWidths Ширина таблицы больше ожидаемой из-за до минимальной ширины ячеек.

Как я могу указать iText либо масштабировать содержимое, чтобы соответствовать странице PDF, либо масштабировать страницу, чтобы соответствовать содержимому?

I Я уверен, что это можно сделать с помощью 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>

1 Ответ

0 голосов
/ 10 августа 2020

Это отвечает на основной c вопрос о том, как изменить размер страницы для учета очень больших таблиц. Этот ответ не предоставляет какие-либо средства определения требуемой ширины, но, по крайней мере, этот код меняет размер страницы по умолчанию.

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);
...