ITextRenderer将PDF转换为HTML详细教程

引入依赖

   <dependency>
      <groupId>org.xhtmlrenderer</groupId>
      <artifactId>flying-saucer-pdf-itext5</artifactId>
      <version>9.1.18</version>
  </dependency>

 问题一:输出中文字体

下载字体simsun.ttc

下载链接:simsun.ttc · xiulian/fonts - Gitee.com

前端通过以下代码引入

@Font-face{
font-family:"myFont",
src:url("下载的字体的路径")
}

 后端通过一下代码引入

ClassPathResource resource=new ClassPathResource("assets/font/simsun.ttc");
font.addFont(resource.getUrl.toString(),Base.IDENTITY_H,BaseFont.EMBDDED)

问题二:设置页面大小以及页面间距 

@Page{
size:A4;
margin:0
}

问题三:报错<link>没有以</link>结束

解决方案:在html中所有结束符都要加上</..>结束,例如<img></img>、<meta></meta>

问题四:图片和二维码不显示

ip地址加端口号加对应路径,列如本地http://localhost:81/admin/asset/top/png

总代码

前端

前端的html正常写就可以了,需要注意的就是样式里面的@page定义PDF样式的和@font-face引入字体以及每个html标签必须有结束符

后端

@GetMapping()
public String exportPage(){
Ticket detail=ticketService.detail();
model.addAttribute("map",detail);
return "ticket/index";
}
public void export(TicketParam param){
//二维吗生成
String code="图片路径";
File file=FileUtil.file(code);
if(!file.exists()){
FileUtil.mkParentDirs(file);
}
}
QRCodeUtil.generate("字符串",100,100,file);
//获取html
//通过okhttp访问上面的url地址获取html页面

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中有许多库可以将HTML转换PDF文件,其中一些最受欢迎的库包括: 1. Flying Saucer Flying Saucer是一种开源Java库,它可以将HTML和CSS转换PDF文件。它使用iText库来生成PDF文件,同时还支持生成XHTML和SVG文件。 下面是一个使用Flying Saucer将HTML转换PDF文件的简单示例: ``` import java.io.*; import com.lowagie.text.DocumentException; import org.xhtmlrenderer.pdf.ITextRenderer; public class HtmlToPdfConverter { public static void main(String[] args) throws IOException, DocumentException { String inputHtmlPath = "input.html"; String outputPdfPath = "output.pdf"; String html = readHtmlFromFile(inputHtmlPath); OutputStream outputStream = new FileOutputStream(new File(outputPdfPath)); ITextRenderer renderer = new ITextRenderer(); renderer.setDocumentFromString(html); renderer.layout(); renderer.createPDF(outputStream); outputStream.close(); } private static String readHtmlFromFile(String filePath) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8")); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { stringBuilder.append(line); } reader.close(); return stringBuilder.toString(); } } ``` 2. iText iText是一种流行的开源Java库,它可以生成PDF文件。它也可以将HTML转换PDF文件,但需要使用一些额外的库来解析HTML和CSS。 下面是一个使用iText将HTML转换PDF文件的简单示例: ``` import java.io.*; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.xml.XMLWorkerHelper; public class HtmlToPdfConverter { public static void main(String[] args) throws IOException, DocumentException { String inputHtmlPath = "input.html"; String outputPdfPath = "output.pdf"; String html = readHtmlFromFile(inputHtmlPath); OutputStream outputStream = new FileOutputStream(new File(outputPdfPath)); Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, outputStream); document.open(); XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(html.getBytes())); document.close(); outputStream.close(); } private static String readHtmlFromFile(String filePath) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8")); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { stringBuilder.append(line); } reader.close(); return stringBuilder.toString(); } } ``` 以上是两个常用的Java库,可以将HTML转换PDF文件。你可以根据自己的需求选择适合自己的库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值