gpt4 book ai didi

java - 使用iText在横向模式下将html转换为pdf

转载 作者:行者123 更新时间:2023-12-05 02:39:27 38 4
gpt4 key购买 nike

我正在尝试使用 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;
}

现在,如果您的输入 HTML 文档在 htmlAsStringToConvert 中变量,然后您可以使用 Jsoup 将其作为 HTML 处理iText 嵌入的库。基本上我们只是将必要的 CSS 指令添加到我们的 <head> 中。 :

Document htmlDoc = Jsoup.parse(htmlAsStringToConvert);
htmlDoc.head().append("<style>" +
"@page { size: landscape; } "
+ "</style>");

HtmlConverter.convertToPdf(htmlDoc.outerHtml(), new FileOutputStream(outPdf));

请注意,如果您已经拥有 @page HTML 中的声明,那么您附加的声明可能与您已经拥有的声明冲突 - 在这种情况下,您需要确保将声明插入为最新声明(只要上面的代码就是这种情况)你所有的声明都在 <head> 元素中)。

关于java - 使用iText在横向模式下将html转换为pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69141952/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com