精华内容
下载资源
问答
  • Java 将HTML文件转换成PDF(Windows和linux)

    千次阅读 2017-09-04 01:44:05
    package lijiong.pdf.htmltopdfv2; import java.io.IOException; public class PDFTool { //wkhtmltopdf在系统中的路径 private static final String toPdfTool = "D:/IT/Java/wkhtmltopdf/bin/wkhtml

    核心代码

    package lijiong.pdf.htmltopdfv2;
    
    import java.io.IOException;
    
    public class PDFTool {  
      
        //wkhtmltopdf在系统中的路径
        private static final String toPdfTool = "D:/IT/Java/wkhtmltopdf/bin/wkhtmltopdf.exe";
        
    
    
        public String getCommand(String htmlName , String pdfName){  
            String system = System.getProperty("os.name");  
            if("Windows XP".equalsIgnoreCase(system)||"Windows 10".equalsIgnoreCase(system)||"Windows 7".equalsIgnoreCase(system))   //xp系统  
                return toPdfTool + " "  + htmlName + " " + pdfName;  
            else  if("Linux".equalsIgnoreCase(system))  //linux 系统  
                return "wkhtmltopdf-amd64 " + htmlName + " " + pdfName;  
            return ""   ;  
        }  
        
        public static void main(String[] args){  
        	PDFTool pdfTool = new PDFTool();  
            String command1 = pdfTool.getCommand("http://www.jikexueyuan.com", "d:/javaSpring.pdf");  
            System.out.println(command1);  
            try {   
                Runtime.getRuntime().exec(command1);  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        } 
    }  
    



    公司工作文档的需要将HTML格式转换成PDF文档备份,网上也有很多在线工具可以使用,但是大部分工具有些限制且广告太多,在找工具的时候看到Wkhtmltopdf工具可以直接在Linux直接安装使用,Wkhtmltopdf是一个开源的将webkit浏览器把网页生成pdf的开源组件。

    根据介绍Wkhtmltopdf有Windows和Linux版本,这里老左直接在CentOS系统中安装和转换看看效果。

    第一、Wkhtmltopdf 下载

    A - 64位

    wget http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

    B - 32位

    wget http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-i386.tar.xz

    第二、解压、安装

    A - 64位

    tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

    B -32位

    tar -xvzf wkhtmltox-0.12.4_linux-generic-i386.tar.xz

    根据我们下载版本解压。

    cp wkhtmltox/bin/wkhtmltopdf /usr/bin/

    将程序拷贝到/usr/bin/目录中,这样可以任意目录执行。

    第三、如何使用Wkhtmltopdf

    wkhtmltopdf http://www.wpbeginner.com/plugins/7-best-wordpress-backup-plugins-compared-pros-and-cons/ 7-best-wordpress-backup.pdf

    这里老左随便找一个页面,然后设置需要转换的HTML页面 和PDF文档。

    Linux利用Wkhtmltopdf工具将HTML转换PDF格式文档

    执行完毕之后,我们可以在当前目录中看到转换好的PDF文档,可以下载到本地打开看看。



    展开全文
  • java编程将HTML文件转换成PDF文件

    万次阅读 多人点赞 2012-07-16 21:52:21
    网上有好几种方法可以将将HTML文件转换成PDF文件但是有些对HTML文件格式要求比较严格,稍微错了一些就不能生成我们所要的PDF文件,这里我推荐一个 PD4ML,它可以解决HTML文件格式不正确的问题,可以生成一个比较好...
    网上有好几种方法可以将将HTML文件转换成PDF文件但是有些对HTML文件格式要求比较严格,稍微错了一些就不能生成我们所要的PDF文件,这里我推荐一个
    

    PD4ML,它可以解决HTML文件格式不正确的问题,可以生成一个比较好的PDF文件,其处理速度快,而且对CSS文件兼容的非常好。下面是最基本的

    PD4ML编程:

    package samples;
    
    import java.awt.Insets;
    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.security.InvalidParameterException;
    
    import org.zefer.pd4ml.PD4Constants;
    import org.zefer.pd4ml.PD4ML;
    
    public class GettingStarted1 {
    	protected int topValue = 10;
    	protected int leftValue = 20;
    	protected int rightValue = 10;
    	protected int bottomValue = 10;
    	protected int userSpaceWidth = 1300;
    
    	public static void main(String[] args) {
    		try {
    			GettingStarted1 jt = new GettingStarted1();
    			jt.doConversion("http://pd4ml.com/sample.htm", "c:/pd4ml.pdf");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void doConversion( String url, String outputPath ) 
    				throws InvalidParameterException, MalformedURLException, IOException {
    		File output = new File(outputPath);
    		java.io.FileOutputStream fos = new java.io.FileOutputStream(output);
    
    		PD4ML pd4ml = new PD4ML();
    			
    		pd4ml.setHtmlWidth(userSpaceWidth); // set frame width of "virtual web browser" 
    			
    		// choose target paper format and "rotate" it to landscape orientation
    		pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4)); 
    			
    		// define PDF page margins
    		pd4ml.setPageInsetsMM(new Insets(topValue, leftValue, bottomValue, rightValue)); 
    
    		// source HTML document also may have margins, could be suppressed this way 
    		// (PD4ML *Pro* feature):
    		pd4ml.addStyle("BODY {margin: 0}", true);
    			
    		// If built-in basic PDF fonts are not sufficient or 
    		// if you need to output non-Latin texts,
    		// TTF embedding feature should help (PD4ML *Pro*)
    		pd4ml.useTTF("c:/windows/fonts", true);
    
    		pd4ml.render(new URL(url), fos); // actual document conversion from URL to file
    		fos.close();
    			
    		System.out.println( outputPath + "\ndone." );
    	}
    }
    

    The following Java class slightly changes the above example. Now it pre-reads source HTML to a string and passes it to render()method wrapped to StringReader. First it writes PDF bytes to ByteArrayOutputStream, which makes possible to measure size of the resulting document.

    A disadvantage of the method is a bigger RAM utilization.


    package samples;
    
    import java.awt.Insets;;
    import java.io.BufferedInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.StringReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.security.InvalidParameterException;
    
    import org.zefer.pd4ml.PD4Constants;
    import org.zefer.pd4ml.PD4ML;
    
    public class GettingStarted2 {
    	protected int topValue = 10;
    	protected int leftValue = 20;
    	protected int rightValue = 10;
    	protected int bottomValue = 10;
    	protected int userSpaceWidth = 1300;
    
    	public static void main(String[] args) {
    		try {
    			GettingStarted2 jt = new GettingStarted2();
    			String html = readFile("c:/sample.htm", "UTF-8");
    			jt.doConversion2(html, "c:/pd4ml.pdf");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void doConversion2( String htmlDocument, String outputPath ) 
    				throws InvalidParameterException, MalformedURLException, IOException {
    
    		PD4ML pd4ml = new PD4ML();
    			
    		pd4ml.setHtmlWidth(userSpaceWidth); // set frame width of "virtual web browser" 
    			
    		// choose target paper format
    		pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4)); 
    			
    		// define PDF page margins
    		pd4ml.setPageInsetsMM(new Insets(topValue, leftValue, bottomValue, rightValue)); 
    
    		// source HTML document also may have margins, could be suppressed this way 
    		// (PD4ML *Pro* feature):
    		pd4ml.addStyle("BODY {margin: 0}", true);
    			
    		// If built-in basic PDF fonts are not sufficient or 
    		// if you need to output non-Latin texts, TTF embedding feature should help 
    		// (PD4ML *Pro*)
    		pd4ml.useTTF("c:/windows/fonts", true);
    
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		// actual document conversion from HTML string to byte array
    		pd4ml.render(new StringReader(htmlDocument), baos); 
    		// if the HTML has relative references to images etc, 
    		// use render() method with baseDirectory parameter instead
    		baos.close();
    		
    		System.out.println( "resulting PDF size: " + baos.size() + " bytes" );
    		// in Web scenarios it is a good idea to send the size with 
    		// "Content-length" HTTP header
    
    		File output = new File(outputPath);
    		java.io.FileOutputStream fos = new java.io.FileOutputStream(output);
    		fos.write( baos.toByteArray() );
    		fos.close();
    		
    		System.out.println( outputPath + "\ndone." );
    	}
    	
    	private final static String readFile( String path, String encoding ) throws IOException {
    
    		File f = new File( path );
    		FileInputStream is = new FileInputStream(f);
    		BufferedInputStream bis = new BufferedInputStream(is);
    		
    		ByteArrayOutputStream fos = new ByteArrayOutputStream();
    		byte buffer[] = new byte[2048];
    
    		int read;
    		do {
    			read = is.read(buffer, 0, buffer.length);
    			if (read > 0) { 
    				fos.write(buffer, 0, read); 
    			}
    		} while (read > -1);
    
    		fos.close();
    		bis.close();
    		is.close();
    
    		return fos.toString(encoding);
    	}
    }
    展开全文
  • importjava.awt.Insets;;importjava.io.BufferedInputStream;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.i...

    packagesamples;importjava.awt.Insets;;importjava.io.BufferedInputStream;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.StringReader;importjava.net.MalformedURLException;importjava.net.URL;importjava.security.InvalidParameterException;importorg.zefer.pd4ml.PD4Constants;importorg.zefer.pd4ml.PD4ML;public classGettingStarted2 {protected int topValue = 10;protected int leftValue = 20;protected int rightValue = 10;protected int bottomValue = 10;protected int userSpaceWidth = 1300;public static voidmain(String[] args) {try{

    GettingStarted2 jt= newGettingStarted2();

    String html= readFile("c:/sample.htm", "UTF-8");

    jt.doConversion2(html,"c:/pd4ml.pdf");

    }catch(Exception e) {

    e.printStackTrace();

    }

    }public voiddoConversion2( String htmlDocument, String outputPath )throwsInvalidParameterException, MalformedURLException, IOException {

    PD4ML pd4ml= newPD4ML();

    pd4ml.setHtmlWidth(userSpaceWidth);//set frame width of "virtual web browser"//choose target paper format

    pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4));//define PDF page margins

    pd4ml.setPageInsetsMM(newInsets(topValue, leftValue, bottomValue, rightValue));//source HTML document also may have margins, could be suppressed this way//(PD4ML *Pro* feature):

    pd4ml.addStyle("BODY {margin: 0}", true);//If built-in basic PDF fonts are not sufficient or//if you need to output non-Latin texts, TTF embedding feature should help//(PD4ML *Pro*)

    pd4ml.useTTF("c:/windows/fonts", true);

    ByteArrayOutputStream baos= newByteArrayOutputStream();//actual document conversion from HTML string to byte array

    pd4ml.render(newStringReader(htmlDocument), baos);//if the HTML has relative references to images etc,//use render() method with baseDirectory parameter instead

    baos.close();

    System.out.println("resulting PDF size: " + baos.size() + " bytes");//in Web scenarios it is a good idea to send the size with//"Content-length" HTTP header

    File output= newFile(outputPath);

    java.io.FileOutputStream fos= newjava.io.FileOutputStream(output);

    fos.write( baos.toByteArray() );

    fos.close();

    System.out.println( outputPath+ "\ndone.");

    }private final static String readFile( String path, String encoding ) throwsIOException {

    File f= newFile( path );

    FileInputStream is= newFileInputStream(f);

    BufferedInputStream bis= newBufferedInputStream(is);

    ByteArrayOutputStream fos= newByteArrayOutputStream();byte buffer[] = new byte[2048];intread;do{

    read= is.read(buffer, 0, buffer.length);if (read > 0) {

    fos.write(buffer,0, read);

    }

    }while (read > -1);

    fos.close();

    bis.close();

    is.close();returnfos.toString(encoding);

    }

    }

    展开全文
  • java将WORD文档转换成pdf文件

    万次阅读 2007-10-14 11:31:00
    本文试验的是WORD转换成PDF文件.实现思路一、先WORD文档转换成HMTL文件格式(参阅我的前一文《JAVA操作WORD文档)。二、用流读取HTML文件其保存在一个String对象中。三、用Itext组件,生成的字符串对象...

    总结对jacob和Itext学习总结.本文试验的是将WORD转换成PDF文件.

    实现思路

    一、先将WORD文档转换成HMTL文件格式(参阅我的前一文《JAVA操作WORD文档)。

    二、用流读取HTML文件。将其保存在一个String对象中。

    三、用Itext组件,将生成的字符串对象转换成PDF文件。

    四、在要生成的PDF文件加入所需信息。

    在此:有几点问题如还请前辈解答:1、怎么控制我在PDF文件加入某段文字的字体、大小、间距等。

    /**
     * 生成PDF文件
     * @author 于学明
     *
     */
    public class CreatePdf {

    /**
     * 获得PDF文件所需图片
     * @param imagePath  //图片文件路径
     * @return
     * @throws BadElementException
     * @throws MalformedURLException
     * @throws IOException
     */
     public Image getImageFile(String imagePath) throws BadElementException, MalformedURLException, IOException{
      Image jpg = Image.getInstance(imagePath);
      //设置图片居中
      jpg.setAlignment(Image.MIDDLE);
      return jpg;
     }
     
     /**
      * 获得文字内容
      * @param inputFilePath 原DOC文件路径
      * @param outputFilePath 生成HTML文件路径
      * @return
      */
     public String getPdfContext(String inputFilePath,String outputFilePath){
    //  读取DOC文件内容
      String htmlText = new FileExtracter().extractDoc(inputFilePath, outputFilePath);
      //把读取的HTML文件,生成一个字符串
      String pdf =  new FileExtracter().getContext(htmlText);
      
      return pdf;
     }
     /**
      * 用ITEXT生成指定PDF格式文件
      * @param imagePath0
      * @param inputFilePath
      * @param outputFilePath
      * @param imagePath1
      * @param outputPdf
      * @return
      * @throws DocumentException
      * @throws IOException
      */
     public String createPDF(String imagePath0,String inputFilePath,String outputFilePath,String imagePath1,String outputPdf) throws DocumentException, IOException{
      
      //返回的pdf全路径  
      String returnPdf="";  
      File dir=new File("out_pdf");
      //若目录不存在则新建该目录
      if(!dir.exists()){
       dir.mkdir();
      }
        
      //新建空白文件
      File outPdfPath=new File(dir+"/"+outputPdf);//输出pdf文件的全路径
      try {
       outPdfPath.createNewFile();
      } catch (IOException e1) {
       e1.printStackTrace();
       returnPdf=null;
      }
      //定义PDF文件大小和边距
      Document document = new Document(PageSize.A4, 50, 50, 50, 50);  
      //生成PDF文件的路径
      PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(outPdfPath));
      writer.setViewerPreferences(PdfWriter.PageModeFullScreen);
      document.open();
      //文件头图片
      document.add(getImageFile(imagePath0));
      //定义字体,可以正常显示中文
      BaseFont bfComic = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
      Font font = new Font(bfComic, 12, Font.NORMAL);
        
      String pdf =  getPdfContext(inputFilePath, outputFilePath);
    //  String str=new String(pdf.getBytes("ISO-8859-1"),"GB2312");
      document.add(new Paragraph(pdf,font));
      //文件尾图片
      document.add(getImageFile(imagePath1));
      document.close();
      returnPdf = outPdfPath.getAbsolutePath();
      return returnPdf;
     }
     
     /**
      *  用ITEXT生成指定PDF格式文件
      * @param imagePath
      * @param inputFilePath
      * @param outputFilePath
      * @param outputPdf
      * @return
      * @throws DocumentException
      * @throws IOException
      */
     public String createPDF(String imagePath,String inputFilePath,String outputFilePath,String outputPdf) throws DocumentException, IOException{
      
      //  返回的pdf全路径  
      String returnPdf="";  
      File dir=new File("out_pdf");
      //若目录不存在则新建该目录
      if(!dir.exists()){
       dir.mkdir();
      }
        
      //新建空白文件
      File outPdfPath=new File(dir+"/"+outputPdf);//输出pdf文件的全路径
      try {
       outPdfPath.createNewFile();
      } catch (IOException e1) {
       e1.printStackTrace();
       returnPdf=null;
      }
      Document document = new Document(PageSize.A4, 50, 50, 50, 50);  
      //生成PDF文件的路径
      PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream(outPdfPath));
      writer.setViewerPreferences(PdfWriter.PageModeFullScreen);
      document.open();  
      document.add(getImageFile(imagePath));
    //  定义字体,可以正常显示中文
      BaseFont bfComic = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
      Font font = new Font(bfComic, 12, Font.NORMAL);
        
      String pdf =  getPdfContext(inputFilePath, outputFilePath);
    //  String str=new String(pdf.getBytes("ISO-8859-1"),"GB2312");
      document.add(new Paragraph(pdf,font));
      document.close();
      returnPdf = outPdfPath.getAbsolutePath();
      return returnPdf;
     }

     public static void main(String [] args){
      
      try {
       String s = new CreatePdf().createPDF("c:/a.gif","c:/s.doc", "c:/x.html", "a.pdf");
       System.out.println(s);
      } catch (DocumentException e) {
       // TODO 自动生成 catch 块
       e.printStackTrace();
      } catch (IOException e) {
       // TODO 自动生成 catch 块
       e.printStackTrace();
      }
     }
    }
     

    展开全文
  • 网上有好几种方法可以将将HTML文件转换成PDF文件但是有些对HTML文件格式要求比较严格,稍微错了一些就不能生成我们所要的PDF文件,这里我推荐一个 PD4ML,它可以解决HTML文件格式不正确的问题,可以生成一个比较好...
  • Java实现将HTML代码转成PDF格式文件 大家好,今天在工作中遇到一个需要将HTML转成PDF的一个功能,于是查资料,研究了一下,找到的大部分都是使用jar包的,使用pom依赖的很少,这是个人认为还比较简单的一个使用pom...
  • java将Word/Excel/PDF文件转换成HTML整理项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:一、使用Jacob转换Word,Excel为HTML“JACOB一个Java-COM中间件.通过这个组件...
  • 前端和java后台将HTML转换成pdf java后台方式: public class HtmlToPdf { private final static String DEST = "C:\\80afa41a3bfc474cbf1ac8b5bc1d.pdf"; //生成pdf的路径 private final static String SRC = "D...
  • 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在实现方式整理如下:一、使用Jacob转换Word,Excel为HTML“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win...
  • 使用java将office word pdf excel ppt文件转换成html文件
  • 本文介绍如何在Java程序中将html文件转换成PDF文件。转换时,需要注意以下两点:一、需要使用转换插件二、需要使用到PDF库,Spire.PDF for Java版本: 3.6.6及以后的新版本可通过2种方法导入jar:1. 可以手动下载jar...
  • 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在实现方式整理如下:一、使用Jacob转换Word,Excel为HTML“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win...
  • Itext将HTML文件转换成PDF 1.需要下载 itext.jar包,xmlworker-5.5.4.zip,这些包都能在sourceforge中找到! 效果图: package com.pdfbox.pdf; import java.io.FileOutputStream; import java.io.InputStream...
  • 本文介绍如何在Java程序中将html文件转换成PDF文件。转换时,需要注意以下两点:**一、需要使用转换插件**可根据不同的系统来下载对应的插件,下载地址:[windows-x86.zip][],[windows-x64.zip][],[macosx\_x64.zip]...
  • Java实现HTML页面转PDF解决方案添加maven依赖com.itextpdf.toolxmlworker5.5.9com.itextpdfitext-asian5.2.0org.xhtmlrendererflying-saucer-pdf-itext59.0.3复制代码代码实现public...将HTML转成PD格式的文件。html...
  • java将Word/Excel/PDF文件转换成HTML整理

    千次阅读 2013-06-09 12:10:28
    java将Word/Excel/PDF文件转换成HTML整理 项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下: 一、使用Jacob转换Word,Excel为HTML “JACOB一个Java-COM中间件...
  • 实现html转换成PDF文件的...批量htmlPDF机器人是一款可以在后台直接您指定目录下(包括该目录下的所有子目录)的所有html文件转换成pdf文件的RPA机器人。前置条件:1、已经安装了UiBot Store;2、已经安装了Chrome...
  • iText “XML Worker”允许开发人员以一种程序员友好的方式将XML文件转换成PDF文件。...实现如何利用iText Java将HTML文件转换成PDF文档? Environment & Tools Eclipse (or any other IDE)Maven (opti
  • 一、下载安装openoffice 1、进入openoffice官网http://www.openoffice.org/download/index.html下载最新版RPM安装包Apache_OpenOffice_4.1.6_Linux_x86-...2、解压下载的文件 tar zxxvfApache_OpenOffice_4.1.6_L...
  • 已经用Jsoup处理过html文件,所以htnl文件格式绝对是规范的,在windows和MacOX系统上转换都正常,但是在linux上运行转换提示出错: RuntimeWorkerException: Invalid nested tag p found, expected closing tag span...
  • html转成pdf文件

    2012-11-19 15:44:22
    里面内容分两部分第一步将html转换成图片,第二部分将图片转换成pdf文件,两部分可以分开独立使用。注(将html文件转换成图片的不是java源码而是一个可以调用的工具)
  • iText “XML Worker”允许开发人员以一种程序员友好的方式将XML...目标:实现如何利用iText Java将HTML文件转换成PDF文档?Environment & ToolsEclipse (or any other IDE)Maven (optional)Library:iText 5....

空空如也

空空如也

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

java将html文件转成pdf

java 订阅