使用xhtmlrenderer把html转换为PDF后右侧内容不显示

在使用xhtmlrenderer把html转换为PDF后,HTML内容显示不全。

后通过在 html/ ftl 模板页面中增加@page样式解决了这个问题。

     

@page {
  size: A4;
  margin: 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 好的,以下是一个使用iText将HTML转换PDF的帮助类的示例代码: ``` import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.PageSize; import com.itextpdf.text.html.simpleparser.HTMLWorker; import com.itextpdf.text.pdf.PdfWriter; import java.io.*; import java.util.List; public class HtmlToPdfConverter { public static void convert(String htmlFilePath, String pdfFilePath) throws IOException, DocumentException { Document document = new Document(PageSize.A4); PdfWriter.getInstance(document, new FileOutputStream(pdfFilePath)); document.open(); HTMLWorker htmlWorker = new HTMLWorker(document); FileInputStream fileInputStream = new FileInputStream(htmlFilePath); InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); List<?> htmlList = htmlWorker.parseToList(inputStreamReader, null); for (Object element : htmlList) { document.add((com.itextpdf.text.Element) element); } document.close(); } } ``` 在这个帮助类中,我们使用了iText库的`Document`、`PdfWriter`和`HTMLWorker`类来将HTML转换PDF。该类有一个名为`convert`的静态方法,该方法接受两个参数:HTML文件的路径和生成PDF文件的路径。在方法中,我们首先创建一个A4大小的`Document`对象,然后使用`PdfWriter`将其与输出文件流关联起来。接着,我们创建一个`HTMLWorker`对象,然后使用`FileInputStream`和`InputStreamReader`将HTML文件读取为`List`类型的对象,最后通过循环将其添加到`Document`中。最后,我们调用`Document`的`close`方法来关闭生成的PDF文件。 请注意,此示例代码仅用于演示目的,并不是生产环境下完整的代码,您需要根据您的实际需求进行调整和扩展。 ### 回答2: 帮助类的设计思路如下: 首先,我们需要引入iText库,将其添加到项目的依赖中。 接下来定义一个名为HtmlToPdfHelper的类,该类包含一个convert方法,用于将HTML文件转换PDF文件。该方法需要接收两个参数:htmlFilePath(表示待转换HTML文件路径)和pdfFilePath(表示生成的PDF文件路径)。 在convert方法内部,我们需要进行以下操作: 1. 创建一个Document对象,并设置页面大小和页边距。 2. 创建一个PdfWriter对象,将Document对象与pdfFilePath绑定。 3. 使用ITextRenderer类创建一个ITextRenderer对象,并将htmlFilePath传入其构造函数。 4. 调用ITextRenderer对象的layout方法,将HTML文件布局。 5. 调用ITextRenderer对象的createPDF方法,将布局后的文件保存到Document对象中。 6. 关闭Document对象和PdfWriter对象,完成PDF文件的生成。 下面是完整的HtmlToPdfHelper类的代码示例: ```java import com.lowagie.text.Document; import com.lowagie.text.PageSize; import com.lowagie.text.pdf.PdfWriter; import org.xhtmlrenderer.pdf.ITextRenderer; import java.io.FileOutputStream; public class HtmlToPdfHelper { public static void convert(String htmlFilePath, String pdfFilePath) throws Exception { Document document = new Document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdfFilePath)); document.open(); ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(htmlFilePath); renderer.layout(); renderer.createPDF(writer.getDirectContent(), writer.getPageSize()); document.close(); writer.close(); } } ``` 使用上述的帮助类,我们可以将HTML文件转换PDF文件,只需调用convert方法,并传入合适的参数即可。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值