精华内容
下载资源
问答
  • Java实现HTML页面转PDF解决方案添加maven依赖com.itextpdf.toolxmlworker5.5.9com.itextpdfitext-asian5.2.0org.xhtmlrendererflying-saucer-pdf-itext59.0.3复制代码代码实现public class FileTypeConvertUtil {/**...

    Java实现HTML页面转PDF解决方案

    添加maven依赖

    com.itextpdf.tool

    xmlworker

    5.5.9

    com.itextpdf

    itext-asian

    5.2.0

    org.xhtmlrenderer

    flying-saucer-pdf-itext5

    9.0.3

    复制代码

    代码实现

    public class FileTypeConvertUtil {

    /**

    * 将HTML转成PD格式的文件。html文件的格式比较严格

    * @param htmlFile

    * @param pdfFile

    * @throws Exception

    */

    //

    public static void html2pdf(String htmlFile, String pdfFile) throws Exception {

    // step 1

    String url = new File(htmlFile).toURI().toURL().toString();

    System.out.println(url);

    // step 2

    OutputStream os = new FileOutputStream(pdfFile);

    ITextRenderer renderer = new ITextRenderer();

    renderer.setDocument(url);

    // 图片为本地的绝对路径时,如http://www.baidu.com/a.jpg,则为a.jpg

    renderer.getSharedContext().setBaseURL("http://www.baidu.com/");

    // 图片为HTTP链接时,src只需填写相对路径,如D:/a.jpg,则为a.jpg

    renderer.getSharedContext().setBaseURL("file:/D:/");

    // step 3 解决中文支持

    ITextFontResolver fontResolver = renderer.getFontResolver();

    if("linux".equals(getCurrentOperatingSystem())){

    fontResolver.addFont("/usr/share/fonts/chiness/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

    }else{

    fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

    }

    renderer.layout();

    renderer.createPDF(os);

    os.close();

    System.out.println("create pdf done!!");

    }

    public static String getCurrentOperatingSystem(){

    String os = System.getProperty("os.name").toLowerCase();

    System.out.println("---------当前操作系统是-----------" + os);

    return os;

    }

    public static void main(String[] args) {

    String htmlFile = "E:/ami.html";

    String pdfFile = "E:/ami.pdf";

    try {

    FileTypeConvertUtil.html2pdf(htmlFile, pdfFile);

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    复制代码

    注意:

    输入的HTML页面必须是标准的XHTML页面。页面的顶上必须是这样的格式:

    语法必须是标准的HTML语法:所有标签都必须闭合

    CSS中必须指定字体,然后在java代码中设置相应的字体

    展开全文
  • Atitit pdf转文本 pdfutiljava -jar C:\Users\attilax\Pictures\pdfbox-app-2.0.9.jar ExtractText "C:\atibeks517\l4 doc v3 r7a ori exted\_0index\一种简单的基于字符形状的验证码识别技术.pdf" c:\logs\识别技术...

    Atitit pdf转文本 pdfutil

    java -jar C:\Users\attilax\Pictures\pdfbox-app-2.0.9.jar ExtractText "C:\atibeks517\l4 doc v3 r7a ori exted\_0index\一种简单的基于字符形状的验证码识别技术.pdf" c:\logs\识别技术.pdf.txt

    转html

    -console

    false

    Send text to console instead of file.

    -html

    false

    Output in HTML format instead of raw text.

    TextToPDF

    This application will create a PDF document from a text file.

    Usage: java -jar pdfbox-app-2.y.z.jar TextToPDF [OPTIONS]

    Command-Line Parameter

    Default

    Description

    -standardFont

    Helvetica

    The font to use for the text. Either this or -ttf should be specified but not both.

    -ttf

    The TTF font to use for the text. Either this or -standardFont should be specified but not both.

    java——PDF转换txt - 乞彦 - 博客园.html

    w GoSYU�y

    展开全文
  • Java实现Html转PDF

    2019-05-28 14:46:21
    Java实现Html转PDFJava实现Html转PDF 2015年07月07日 10:35:10 死神的丧钟 阅读数:38929 标签: Java HTML转PDF 更多 个人分类: Web Java 项目上的客户提出一个需求,把政务流程中的表单数据导出成pdf或者图片...
    文章目录[隐藏]

    Java实现Html转PDF

    2015年07月07日 10:35:10
    死神的丧钟
    阅读数:38929


    标签:
    Java HTML转PDF
    更多

    个人分类:
    Web Java

    项目上的客户提出一个需求,把政务流程中的表单数据导出成pdf或者图片格式,用来作电子档案材料。表单基于公司的电子政务构建平台实现,在数据库保存的都是html格式,因此打算直接把表单html转成pdf或者图片。由于表单是已经写好了html页面,那我要做的就是能完美解析html+css的pdf生成工具。在百度上搜索html转pdf的结果,大部分都是用itext,itext的确是java开源组件的第一选择。不过itext也有局限,就是要自己写模版,系统中的表单数量有好几百个,为每个表单做一个导出模版不现实。 

    最后,wkhtmltopdf进入了我的选择范围。wkhtmltopdf是一个使用webkit网页渲染引擎开发的用来将 html转成 pdf的工具,可以跟多种脚本语言进行集成来转换文档。

    官网地址 http://wkhtmltopdf.org/

    github地址
    https://github.com/wkhtmltopdf/wkhtmltopdf

    wkhtmltopdf把html转成pdf很简单,只要在windows命令行中输入

    c:wkhtmltopdf.exe http://www.csdn.net c:csdn.pdf

    就可以把csdn网页转成pdf,并保存到C盘根目录。

    在java中调用wkhtmltopdf的命令Runtime.getRuntime().exec(“c:wkhtmltopdf.exe http://www.csdn.net c:csdn.pdf”)就可以实现转换。

    下面把命令封装成java工具类,方便调用。

    1
    import java.io.File;
    2
    3
    public class HtmlToPdf {
    4
    //wkhtmltopdf在系统中的路径
    5
    private static final String toPdfTool = "c:\wkhtmltopdf.exe";
    6
    7
    /**
    8
    * html转pdf
    9
    * @param srcPath html路径,可以是硬盘上的路径,也可以是网络路径
    10
    * @param destPath pdf保存路径
    11
    * @return 转换成功返回true
    12
    */
    13
    public static boolean convert(String srcPath, String destPath){
    14
    File file = new File(destPath);
    15
    File parent = file.getParentFile();
    16
    //如果pdf保存路径不存在,则创建路径
    17
    if(!parent.exists()){
    18
    parent.mkdirs();
    19
    }
    20
    21
    StringBuilder cmd = new StringBuilder();
    22
    cmd.append(toPdfTool);
    23
    cmd.append(" ");
    24
    cmd.append(srcPath);
    25
    cmd.append(" ");
    26
    cmd.append(destPath);
    27
    28
    boolean result = true;
    29
    try{
    30
    Process proc = Runtime.getRuntime().exec(cmd.toString());
    31
    HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream());
    32
    HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream());
    33
    error.start();
    34
    output.start();
    35
    proc.waitFor();
    36
    }catch(Exception e){
    37
    result = false;
    38
    e.printStackTrace();
    39
    }
    40
    41
    return result;
    42
    }
    43
    }



    接收Process的输入和错误信息时,需要创建另外的线程,否则当前线程会一直等待(在Tomcat中有这种现象)。

    1
    import java.io.BufferedReader;
    2
    import java.io.IOException;
    3
    import java.io.InputStream;
    4
    import java.io.InputStreamReader;
    5
    6
    /**
    7
    * 当java调用wkhtmltopdf时,用于获取wkhtmltopdf返回的内容
    8
    */
    9
    public class HtmlToPdfInterceptor extends Thread {
    10
    private InputStream is;
    11
    12
    public HtmlToPdfInterceptor(InputStream is){
    13
    this.is = is;
    14
    }
    15
    16
    public void run(){
    17
    try{
    18
    InputStreamReader isr = new InputStreamReader(is, "utf-8");
    19
    BufferedReader br = new BufferedReader(isr);
    20
    String line = null;
    21
    while ((line = br.readLine()) != null) {
    22
    System.outlprintln(line.toString()); //输出内容
    23
    }
    24
    }catch (IOException e){
    25
    e.printStackTrace();
    26
    }
    27
    }
    28
    }



    在Servlet中调用

    1
    /**
    2
    * Html转PDF
    3
    */
    4
    @WebServlet("/htmltopdf/servlet")
    5
    public class HtmlToPdfServlet extends HttpServlet {
    6
    private static final long serialVersionUID = 1L;
    7
    8
    /**
    9
    * Servlet接收参数path,获取html的url
    10
    */
    11
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    12
    String path = request.getParameter("path");
    13
    if(path == null || path.equals("")){
    14
    return;
    15
    }
    16
    17
    //获取pdf的临时保存路径
    18
    //tmp为网站下的目录
    19
    //把生成的pdf放到网站下以便下载
    20
    String pdfPath = request.getSession().getServletContext().getRealPath("/tmp");
    21
    String pdfName = UUID.randomUUID().toString() + ".pdf";
    22
    23
    if(HtmlToPdf.convert(path, pdfPath + "/" + pdfName)){
    24
    response.sendRedirect(request.getContextPath() + "/tmp/" + pdfName);
    25
    }
    26
    }
    27
    }



    在浏览器中输入http://<网站路径>/htmltopdf/servlet?path=http://blog.csdn.net

    resize,m_fill,w_1704,h_890#

    展开全文
  • java实现html转pdf

    2019-10-16 10:01:51
    java实现html网页转pdf,如果需求只是将一些简单的html元素转成pdf,那么使用 itext 或者FlyingSaucer 就可以搞定,但是真正的网页url类型的html涉及到的 html 语法和 css语法实在是太复杂,itext 和FlyingSaucer ...

    java实现将html网页转pdf,如果需求只是将一些简单的html元素转成pdf,那么使用 itext 或者 FlyingSaucer 就可以搞定,但是真正的网页url类型的html涉及到的 html 语法和 css语法实在是太复杂,itext 和 FlyingSaucer 根本没法搞定。

    最后发现使用 phantomjs 可以完美将html转换为pdf,大概思路如下:

    一、下载phantomjs

    https://phantomjs.org/download.html  根据操作系统下载对应的phantomjs版本

    二、编写 html2pdf.js

    内容如下:

    var page = require('webpage').create();
    var system = require('system');
    
    // 读取命令行参数,也就是js文件路径。
    if (system.args.length === 1) {
      console.log('Usage: phantomjs html2pdf.js <html URL> <pdf_width> <pdf_height> <pdfPath>');
      //这行代码很重要。凡是结束必须调用。否则phantomjs不会停止
      phantom.exit();
    }
    page.settings.loadImages = true;  //加载图片
    page.settings.resourceTimeout = 30000;//超过30秒放弃加载
    
    var address = system.args[1];
    // server in windows: width + 'mm', linux: (width * 3.7794).toFixed(1) + 'px'
    // 下面是从命令行中获取 pdf的高度、宽度 和 pdf文件的路径
    var width2 = system.args[2];
    var height2 = system.args[3];
    var pdfPath = system.args[4];
    console.log(width2);
    console.log(height2);
    // 如果对pdf尺寸没有特殊要求也可以将宽度和高度写死
    page.paperSize = { width: width2,height:height2};
    
    page.open(address, function (status) {
        if (status !== 'success') {
            console.log('Unable to load the address!');
            phantom.exit(1);
        } else {
            window.setTimeout(function () {
                console.log("begin...");
                page.render(pdfPath);
                console.log(pdfPath);
                phantom.exit(); // 一定要调用这个方法
                console.log("end...");
            }, 1000);
        }
    });

    三、执行命令行语句验证pdf生成的效果

    /test/phantomjs /test/html2pdf.js http://www.baidu.com 1000px 1000px /test/a.pdf

    执行这条命令,检查生成pdf是否符合要求。如果不行则尝试调整参数或者脚本

    四、java中调用命令

    public static void html2Pdf(String phantomjs, String url, String html2pdfjs
    		, Integer width, Integer height, String pdfPath) {
    	InputStream is = null;
    	try {
    		System.out.println(url);
    		File pdfFile = new File(pdfPath);
    		File parentFile = pdfFile.getParentFile();
    		if(!parentFile.exists()) {
    			parentFile.mkdirs();
    		}
    		String os = System.getProperty("os.name").toLowerCase();
    		String w = null, h = null;
    		if(os.contains("linux")) {
    			w = String.format("%.2f", width * 3.7794) + "px";
    			h = String.format("%.2f", height * 3.7794) + "px";
    		} else {
    			w = width + "mm";
    			h = height + "mm";
    		}
    		System.out.println(os + "===" + w + "=======" + h);
    		//执行phantomjs 生成js
    		Runtime rt = Runtime.getRuntime();
    		String cmd = phantomjs + " " + html2pdfjs + " " + url + " " + w + " " + h + " " + pdfPath;
    		System.out.println("cmd===" + cmd);
    		Process p = rt.exec(cmd);
    		is = p.getInputStream();
    		BufferedReader br = new BufferedReader(new InputStreamReader(is));
    		StringBuffer sbf = new StringBuffer();
    		String tmp = "";
    		while ((tmp = br.readLine()) != null) {
    			sbf.append(tmp);
    		}
    		String resultstr = sbf.toString();
    		System.out.println(resultstr);
    		p.waitFor(); // 等待运行结束
    	} catch (Exception e) {
    		e.printStackTrace();
    	} finally {
    		if(is != null) {
    			try {
    				is.close();
    			} catch (Exception e) {
    			}
    		}
    	}
    	return null;
    }

    width 和 height 两个参数在windos环境和在linux环境下传给phantomjs达到的效果竟然不一样,所以上面的程序专门做了不同的处理。

    五、踩过的坑

    1、linux下java调用命令及参数中如果带了 & 符号,会导致命令执行失败,同时又找不到原因。因为 & 符号在linux命令下有特殊的含义,因此 网页的url中如果带了&符号(比如url中的&是传递参数的)则pdf会生成不正确

    2、如果尝试将带&的网页url 用引号包起来,在linux命令行下可以顺利执行,但是java的Runtime.exec()去执行命令还是不能正确生成pdf文件,好像是因为Runtime.exec()对参数中的引号进行特殊的处理。

    因此,如果能自己控制网页url,则需要将网页url中的&替换掉,改成其他方式传参。如果是别人的网页url,在linux似乎没有好的办法解决。

    六、参考资料

    phantomjs 参考资料如下:
    https://phantomjs.org/download.html
    https://www.npmjs.com/package/phantom-html2pdf
    https://phantomjs.org/api/webpage/property/paper-size.html

    本文内容到此结束,更多内容可关注公众号和个人微信号:

     

    展开全文
  • Java 实现 Html pdf

    万次阅读 2019-01-12 23:38:47
    本博客主要演示使用 itextpdf-5.4.3.jar 和 xmlworker-5.4.3.jar 把 Html 转换 pdf 文件。但是效果还不如直接用内容生成的 pdf 。 本 Demo 涉及了 html、css、js,不过 js 并不起作用 ,所以涉及 js 赋值的 html ...
  • 实现html转换成PDF文件的方法有许多,但实现批量html转换成PDF文件就不是太简单了,不过RPA技术就可以简单实现。比如UiBot Store中现成的批量html转换成PDF机器人。批量html转PDF机器人是一款可以在后台直接将您指定...
  • wkhtmltopdf是一个使用webkit网页渲染引擎开发的用来将 html转成 pdf的工具,可以跟多种脚本语言进行集成来转换文档。因为需要下载插件:wkhtmltopdf把html转成pdf很简单,只要在windows命令行中输入D:\wkhtmltox\...
  • wkhtmltopdf是一个使用webkit网页渲染引擎开发的用来将 html转成 pdf的工具,可以跟多种脚本语言进行集成来转换文档。因为需要下载插件:wkhtmltopdf把html转成pdf很简单,只要在windows命令行中输入D:\wkhtmltox\...
  • 我们日常个工作和生活中经常会遇到一些场景,需要将html页面转成pdf,比如有一个表单需要转成pdf,或者遇到一个比较好的文章想要转成pdf保存下来,现在就给大家推荐一种可以使用htmlpdf的方法。网络的地址或者本地...
  • 本文将实现利用Java 8,Spring Boot, Wkhtmltopdf, Thymeleaf将HTML页面导出成PDF文本。2.总纲在我们实现具体功能前,我们先看看创建一个PDF文档的过程大约分三步走:a) 浏览器(服务端)发送一个HTTP请求到我们的后台...
  • [Java教程]纯js实现html转pdf0 2017-02-16 00:00:30项目开发中遇到了一个变态需求,需要把一整个页面导出为pdf格式,而且要保留页面上的所有的表格、svg图片和样式。简而言之,就是希望像截图一样,把整个页面截下来...
  • 1、下载xpdf最新版本,地址:http://www.foolabs.com/xpdf/download.html我下载的是xpdf-3.02pl2-win32.zip2、下载中文支持包我下载的是xpdf-chinese-simplified.tar.gz3、下载pdftohtml支持包地址:...
  • java将Word/Excel/PDF文件转换成HTML整理项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:一、使用Jacob转换Word,Excel为HTML“JACOB一个Java-COM中间件.通过这个组件...
  • 而目前开源的组件中,Itext的确是一个First Choice,如果各位单纯是做把图片转成PDF或者自己写了Velocity或者FreeMarker模板生成了HTML是非常推荐直接用Itext来进行的。而如果,大家像我这样已经有前人写好了HTML...
  • 展开全部java将Word/Excel/PDF文件转换成HTML整理项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显e68a843231313335323631343130323136353331333361313336示格式,现在将实现方式整理如下:一、使用...
  • java实现word转pdf

    2018-09-12 08:49:30
    最近遇到一个项目需要把word 转成pdf,百度了一下网上的方案有很多,比如虚拟打印、给word 装扩展插件等,这些方案都依赖于ms word 程序,在java代码中也得使用诸如jacob或jcom这类java com bridge,使得服务器开发...
  • 点击上方Coding这件小事,选择星标公众号重磅资讯、干货,第一时间送达来源:https://segmentfault.com/a/1190000022115110在日常工作...本文就将通过使用Java程序来演示如何将Word文档转换成PDF格式。使用工具:htt...
  • Java实现HTML文件转PDF文件

    热门讨论 2013-11-22 08:45:16
    实现思路: 1、通过URL获取当前HMTL页面的内容: URL urls = new URL(url);...4、把设置发了的HTML文件转化成PDF文件 //把HTML文件转化成PDF文件 htmlToPdf2(urlsource, fileName); 下载下来可以直接使用
  • 首先贴个好东西,一个方案文档,这是我已经实现过两...需求比较简单,我的想法是:pdf可以直接打开预览所以这个可以不用考虑,doc/docx的话需要作格式转换,在线预览将其转成pdf或者html/htm页面的方式。doc是97-20...
  • https://www.cnblogs.com/qianzf/p/6888357.htmlimport java.io.*;import java.net.*;public class DownloadPdf {/*** 从网络Url中下载文件* @param urlStr pdf网页的url* @param fileName 下载到本地的文件名* @...
  • 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:一、使用Jacob转换Word,Excel为HTML“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win...
  • java开发的都知道,java生成pdf大部分都是用itext,itext的确是java开源组件的第一选择。不过itext也有局限,就是要自己写模版,系统中的表单数量有好几百个,为每个表单做一个导出模版不现实。 所以找了个直接...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 251
精华内容 100
关键字:

java实现pdf转成html

java 订阅