Kim*_*_do 4 java itext html-to-pdf
我正在尝试使用 iText 将 html 转换为 pdf。这是运行良好的简单代码:
ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfStream)
Run Code Online (Sandbox Code Playgroud)
现在,我想将pdf转换为横向模式,所以我尝试过:
ConverterProperties converterProperties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.setOrientation(LANDSCAPE);
converterProperties.setMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfStream, converterProperties);
Run Code Online (Sandbox Code Playgroud)
并且 :
PdfDocument pdfDoc = new PdfDocument(writer);
pdfDoc.setDefaultPageSize(PageSize.A4.rotate());
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfDoc, new ConverterProperties()).
Run Code Online (Sandbox Code Playgroud)
我也混合了两者,但结果保持不变,最终的 PDF 仍处于默认模式。
将 HTML 转换为 PDF 时实现横向页面大小的最佳方法是提供相应的 CSS 指令以使页面变为横向。
这是通过以下 CSS 完成的:
@page {
size: landscape;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您的输入 HTML 文档位于htmlAsStringToConvert变量中,那么您可以使用 iText 嵌入的库将其作为 HTML 处理Jsoup。基本上我们只是将必要的 CSS 指令添加到我们的<head>:
Document htmlDoc = Jsoup.parse(htmlAsStringToConvert);
htmlDoc.head().append("<style>" +
"@page { size: landscape; } "
+ "</style>");
HtmlConverter.convertToPdf(htmlDoc.outerHtml(), new FileOutputStream(outPdf));
Run Code Online (Sandbox Code Playgroud)
请注意,如果您@page的 HTML 中已经有声明,那么您附加的声明可能会与已有的声明发生冲突 - 在这种情况下,您需要确保将声明作为最新的声明插入(这应该是这种情况)上面的代码,只要您的所有声明都在<head>元素中)。
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |