java将html的图文转化为PDF文件输出

首先在我的项目的resource目录下建立相应的目录,如图

java将html的图文转化为PDF文件输出_第1张图片

其中file用来存放一个logo以及生成的PDF文件,font文件夹用来存放font 字体

然后在项目的 pom.xml中添加引用


    org.xhtmlrenderer
    flying-saucer-pdf
    9.1.5

然后写了一个测试类来测试是否成功生成

import com.lowagie.text.pdf.BaseFont;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.FileOutputStream;
import java.io.OutputStream;

/**
 * Created by hongzhenyue on 18/2/28.
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class Html2PdfTest {
    @Test
    public void testHtml2Pdf() throws Exception{
        //指定PDF的存放路径
        String outputFile = "/Users/hongzhenyue/Desktop/backup/spring_boot_demo/src/main/resources/file/test.pdf";
        OutputStream os = new FileOutputStream(outputFile);
        ITextRenderer renderer = new ITextRenderer();
        ITextFontResolver fontResolver = renderer.getFontResolver();
        //指定字体。为了支持中文字体
        fontResolver.addFont("font/arialunicodems.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

        StringBuffer html = new StringBuffer();

        html.append("\n" +
                "\"en\">\n" +
                "\n" +
                "    \"UTF-8\">\n" +
                "    Issue Payment Receipt\n" +
                "    \n" +
                "\n" +
                "\n" +
                "    \"file/logo.png\" style=\"width:160px;height:80px;\">\n" +
                "    
\n" + "
建設銀行
\n" + "
12345678901
\n" + "
1000RMB
\n" + "
姓名:李四
\n" + "
單號:123456
\n" + "
\n" + "\n" + ""); renderer.setDocumentFromString(html.toString()); // 解决图片的相对路径问题 renderer.getSharedContext().setBaseURL("file:/Users/hongzhenyue/Desktop/backup/spring_boot_demo/src/main/resources/file"); renderer.layout(); renderer.createPDF(os); renderer.finishPDF(); renderer = null; os.close(); } }


然后执行测试code,发现在file文件下面已经生成了一个PDF文件

java将html的图文转化为PDF文件输出_第2张图片

打开PDF

java将html的图文转化为PDF文件输出_第3张图片

可见已经输出了我们想要的东西,至此,我们很简单地将html转化成了PDF文件。


你可能感兴趣的:(spring,boot)