我在前端使用富文本编辑器让用户创建 PDF 文件(使用 java + itext)。问题是当用户输入大量空格(按空格键)时,会导致文本超出 PDF 文件的右边距。
这是我用来生成 PDF 的 HTML 模板:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style>@page { size: A4; margin: 15mm 15mm 30mm 15mm; @bottom-left { font-family: Verdana; font-size: 10.0pt; content: "Página " counter(page) " de " counter(pages); } } body { font-family: Verdana; font-size: 10.0pt; } table { border-collapse: collapse; border-spacing: 0; table-layout: auto; -fs-table-paginate: paginate;}
</style>
</head>
<body>
<table style="width: 100%;">
<thead>
<tr>
<th style="width: 100%;">
some header
</th>
</tr>
</thead>
<tfoot>
<tr>
<td style="width: 100%;">
some footer
</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>
text from rich editor goes here
</td>
</tr>
</tbody>
</table>
</body>
</html>
我已经尝试将表格和正文设置为以像素为单位的特定宽度,但它会生成具有相同问题的 PDF。
这是生成 PDF 的代码:
private void createPdfFile(Documento documento, String pathPdf) throws DocumentException, IOException {
PdfWriter pdfWriter = new PdfWriter(new FileOutputStream(pathPdf));
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
PdfDocumentInfo pdfInfo = pdfDocument.getDocumentInfo();
pdfInfo.setCreator(creatorText);
if (!StringUtils.isEmpty(documento.getTitleMetadata())) {
pdfInfo.setTitle(documento.getTitleMetadata());
}
if (!StringUtils.isEmpty(documento.getAuthorMetadata())) {
pdfInfo.setAuthor(documento.getAuthorMetadata());
}
if (!StringUtils.isEmpty(documento.getSubjectMetadata())) {
pdfInfo.setSubject(documento.getSubjectMetadata());
}
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.convertToPdf(htmlHeader + documento.getBodyHtml() + htmlFooter, pdfDocument, converterProperties);
pdfDocument.close();
}