使用 iText 在横向模式下将 html 转换为 pdf
Convert html to pdf in landscape mode using iText
我正在尝试使用 iText 将 html 转换为 pdf。
这是工作正常的简单代码:
ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfStream)
现在,我想将 pdf 转换为横向模式,所以我试过了:
ConverterProperties converterProperties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.setOrientation(LANDSCAPE);
converterProperties.setMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfStream, converterProperties);
还有:
PdfDocument pdfDoc = new PdfDocument(writer);
pdfDoc.setDefaultPageSize(PageSize.A4.rotate());
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfDoc, new ConverterProperties()).
我也混合了两者,但结果还是一样,最终的PDF仍然是默认模式。
将HTML转为PDF时,实现横向页面大小的最佳方式是提供相应的CSS指令让页面变为横向。
这是通过以下 CSS 完成的:
@page {
size: landscape;
}
现在,如果您在 htmlAsStringToConvert
变量中输入了 HTML 文档,那么您可以使用 iText 嵌入的 Jsoup
库将其作为 HTML 处理。基本上我们只是将必要的 CSS 指令添加到我们的 <head>
:
Document htmlDoc = Jsoup.parse(htmlAsStringToConvert);
htmlDoc.head().append("<style>" +
"@page { size: landscape; } "
+ "</style>");
HtmlConverter.convertToPdf(htmlDoc.outerHtml(), new FileOutputStream(outPdf));
请注意,如果您的 HTML 中已经有 @page
声明,那么您添加的声明可能与您已有的声明冲突 - 在这种情况下,您需要确保将您的声明作为最新的插入(只要您的所有声明都在 <head>
元素中,上面的代码就应该是这种情况)。
我正在尝试使用 iText 将 html 转换为 pdf。 这是工作正常的简单代码:
ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfStream)
现在,我想将 pdf 转换为横向模式,所以我试过了:
ConverterProperties converterProperties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.setOrientation(LANDSCAPE);
converterProperties.setMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfStream, converterProperties);
还有:
PdfDocument pdfDoc = new PdfDocument(writer);
pdfDoc.setDefaultPageSize(PageSize.A4.rotate());
HtmlConverter.convertToPdf(htmlAsStringToConvert, pdfDoc, new ConverterProperties()).
我也混合了两者,但结果还是一样,最终的PDF仍然是默认模式。
将HTML转为PDF时,实现横向页面大小的最佳方式是提供相应的CSS指令让页面变为横向。
这是通过以下 CSS 完成的:
@page {
size: landscape;
}
现在,如果您在 htmlAsStringToConvert
变量中输入了 HTML 文档,那么您可以使用 iText 嵌入的 Jsoup
库将其作为 HTML 处理。基本上我们只是将必要的 CSS 指令添加到我们的 <head>
:
Document htmlDoc = Jsoup.parse(htmlAsStringToConvert);
htmlDoc.head().append("<style>" +
"@page { size: landscape; } "
+ "</style>");
HtmlConverter.convertToPdf(htmlDoc.outerHtml(), new FileOutputStream(outPdf));
请注意,如果您的 HTML 中已经有 @page
声明,那么您添加的声明可能与您已有的声明冲突 - 在这种情况下,您需要确保将您的声明作为最新的插入(只要您的所有声明都在 <head>
元素中,上面的代码就应该是这种情况)。