精华内容
下载资源
问答
  • Java将HTML转化为PDF+获得页数+合并PDF

    千次阅读 2017-09-11 11:15:00
    最近公司用到了HTMLPDF的技术,这里就把用到的方式和技术在这...

    最近公司用到了HTML转PDF的技术,这里就把用到的方式和技术在这里写一下,方便他人和自己以后有需要时进行。

    首先将HTML转化成PDF: 现在有许多将HTML转化为PDF的方法:PD4ML,IText,Flying Sauser。

    选择PD4ML原因:PD4ML实现html2pdf,速度快,纠错能力强,支持多种中文字体。相比较于IText和Flying Sauser方便许多

    依赖包:pd4ml.jar fonts.jar pd4ml.jar ss_css2.jar
    如果这里出现中文乱码的情况,请大家在src根目录下创建一个包fonts,在里面新建一个配置文件pd4fonts.properties 在配置文件中写

    KaiTi_GB2312=SIMKAI.TTF
    
    public class LLL_HTMLToPDF {
    	public static void main(String[] args) throws Exception {
    		File pdfFile = new File("D:/pdf/index.pdf");
    		htmltopdf(pdfFile, "D:/pdf/index.html");
    	}
    	private static void htmltopdf(File outputPDFFile, String inputHTMLFileName) throws Exception {
    		FileOutputStream fos = new FileOutputStream(outputPDFFile);
    		PD4ML pd4ml = new PD4ML();
    		pd4ml.setPageInsets(new Insets(40,30,30,40));
    		pd4ml.setHtmlWidth(960);
    		PD4PageMark p = new PD4PageMark();
    
    		pd4ml.setPageHeader(p);
    		pd4ml.setPageSize(PD4Constants.A4);
    		pd4ml.useTTF("java:fonts", true);
    		pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312");
    		pd4ml.enableDebugInfo();
    		pd4ml.render("file:" + inputHTMLFileName,fos);
    	}
    }
    

    到这里我们就可以看到在目录下有当前生成的pdf文件了。

    下面讲一下pdf页数的获取 除开一些基础包之外,我们需要用到的包是:pdfbox-app-1.7.1.jar(注意用1.7.1才与我这个一样)

    public class LLL_getPDFpage {
    	public static void main(String[] args) {
    		PDFParser parser;
    		File file = new File("D:/pdf/printer/mergedTest.pdf");
    		COSDocument cosDoc = null;
    		PDDocument pdDoc = null;
    		try {
    			parser = new PDFParser(new FileInputStream(file));
    			parser.parse();
    			cosDoc = parser.getDocument();
    			pdDoc = new PDDocument(cosDoc);
    			System.out.println(pdDoc.getDocumentCatalog().getAllPages().size());
    		} catch (Exception e) {
    			e.printStackTrace();
    			try {
    				if (cosDoc != null)
    					cosDoc.close();
    				if (pdDoc != null)
    					pdDoc.close();
    			} catch (Exception e1) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    

    这里就可以打印出来当前pdf有多少页

    然后下面说一下将pdf合并的问题 我们现在项目中需要将多个pdf合并成一个pdf文件,这里还是用的pdfbox包就可以

    public class LLL_MergePDF {
    	public static void main(String[] args) throws Exception {
    		PDFMergerUtility mergePdf = new PDFMergerUtility();
    		String folder = "D:/pdf/";
    		String destinationFileName = "mergedTest.pdf";
    		String[] filesInFolder = getFiles(folder);
    		for (int i = 0; i < filesInFolder.length; i++)
    		{
    			mergePdf.addSource(folder + File.separator + filesInFolder[i]);
    		}
    		mergePdf.setDestinationFileName(folder + File.separator + destinationFileName);
    		mergePdf.mergeDocuments();
    		System.out.print("合并完成__LLL丶禾羊__博客");
    	}
    	private static String[] getFiles(String folder) throws IOException {
    		File _folder = new File(folder);
    		String[] filesInFolder;
    		if (_folder.isDirectory()) {
    			filesInFolder = _folder.list();
    			return filesInFolder;
    		} else {
    			throw new IOException("Path is not a directory");
    		}
    	}
    }
    

    这里就是java关于pdf的一些操作,讲了java将html转化成pdf,获取pdf的页码,合并多个pdf到一个里面去,如果对你起到了帮助,请把它分享给更多人,谢谢!

    展开全文
  • 1. 项目中引入相关的jar包  itextasian-1.5.2.jar  itext-4.2.1.jar  itextpdf-5.1.2.jar  itextpdf-5.1.2-...在需要页面转化为pdf文档的页面中添加按钮  <span id="download" onclick="exportp...

      1. 项目中引入相关的jar包

        itextasian-1.5.2.jar

        itext-4.2.1.jar

        itextpdf-5.1.2.jar

        itextpdf-5.1.2-sources.jar

      2. 在需要将页面转化为pdf文档的页面中添加按钮

         <span id="download" οnclick="exportpdf();">转化为PDF</span>

         <a id="pdfdown" style="display: none"><span id="spanid">导出PDF</span></a>  

      3. 然后引入相关的js以及jar包

        html2canvas.js

      4.编写生成pdf文档的js代码

       

       /*
    
        * 导出pdf文档
        */
        function exportpdf(){
          var title = "";
          layer.prompt({title: "请输入pdf文件名", formType: 0,end:function(){
          if(title != "" && title != null){
            shot(title);
          }
        }}, function(pass, index){
          title = pass;
          layer.close(index);
        });
      };
    
      //将页面转化为图片
      function shot(title){    
        $("#download").remove();    //隐藏按钮
        html2canvas(document.body, { //截图对象
        //此处可配置详细参数
          onrendered: function(canvas) { //渲染完成回调canvas
          canvas.id = "mycanvas"; 
          // 生成base64图片数据
          var dataUrl = canvas.toDataURL("image/png"); //指定格式,也可不带参数
          var formData = new FormData(); //模拟表单对象
          formData.append("imgData",convertBase64UrlToBlob(dataUrl)); //写入数据
          var xhr = new XMLHttpRequest(); //数据传输方法
          xhr.open("POST", "../pdftools/exportPdf?filename="+title); //配置传输方式及地址
          xhr.send(formData);
          xhr.onreadystatechange = function(){ //回调函数
          if(xhr.readyState == 4){
            if (xhr.status == 200) {
              var back = JSON.parse(xhr.responseText);
              if(back["mesg"] == "success"){
                $("#pdfdown").attr("href","../file/downloadFile?fileName="+back['fileName']);
                $("#spanid").click();
                $("#bodyId").prepend("<span οnclick=\"exportpdf();\" id=\"download\">转化为PDF</span>");
                layer.msg("Pdf导出成功",{icon:1,time:2000});
              }else{
                layer.msg("Pdf导出失败",{icon:2,time:2000});
              }
            }
           } 
         };
        }
      }); 
    }
    //将以base64的图片url数据转换为Blob
    function convertBase64UrlToBlob(urlData){
      //去掉url的头,并转换为byte
      var bytes=window.atob(urlData.split(',')[1]); 
      //处理异常,将ascii码小于0的转换为大于0
      var ab = new ArrayBuffer(bytes.length);
      var ia = new Uint8Array(ab);
      for (var i = 0; i < bytes.length; i++) {
        ia[i] = bytes.charCodeAt(i);
      }
      return new Blob( [ab] , {type : "image/png"});
    }
    View Code

     

     

      5. 编写后台方法

     

    package com.sd.ddo.controller.pdf;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URLDecoder;
    import java.util.Iterator;
    import java.util.Map;
    
    import javax.imageio.stream.FileImageOutputStream;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletResponse;
    import javax.swing.filechooser.FileSystemView;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.util.FileCopyUtils;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartHttpServletRequest;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.alibaba.fastjson.JSONObject;
    import com.lowagie.text.Document;
    import com.lowagie.text.DocumentException;
    import com.lowagie.text.Image;
    import com.lowagie.text.pdf.PdfWriter;
    import com.sd.cloud.util.alipay.HttpRequest;
    import com.sd.cloud.util.alipay.HttpResponse;
    import com.sd.cloud.util.common.CommonUtil;
    import com.sd.cloud.util.common.SDConstants;
    /**
     * 导出pdf文档
     * @author yugb
     * 将html,jsp页面转化为pdf文档
     */
    @Controller
    @RequestMapping("/pdftools")
    public class PDFExportController {
        /**
         * 导出pdf文档
         * @param request
         * @param response 
         * @throws ServletException
         * @throws IOException
         * @throws DocumentException
         */
        @SuppressWarnings("rawtypes")
        @RequestMapping("/exportPdf")
        public @ResponseBody Object exportPdf(MultipartHttpServletRequest request,HttpServletResponse response)throws ServletException, IOException, DocumentException {
            JSONObject result = new JSONObject(); //自定义结果格式
            try{
                 String filename = URLDecoder.decode(request.getParameter("filename"),"utf-8");
                 String filePath =SDConstants.fileDir+filename+".pdf";
                 String imagePath = SDConstants.fileDir +filename+".bmp";
                 Document document = new Document(); 
                 Map getMap = request.getFileMap();
                 MultipartFile mfile = (MultipartFile) getMap.get("imgData"); //获取数据
                 InputStream file = mfile.getInputStream();
                 byte[] fileByte = FileCopyUtils.copyToByteArray(file);
                 FileImageOutputStream imageOutput = new FileImageOutputStream(new File(imagePath));
                 imageOutput.write(fileByte, 0, fileByte.length);//生成本地图片文件
                 imageOutput.close();
                
                 PdfWriter.getInstance(document, new FileOutputStream(filePath)); //itextpdf文件
                 document.open();
                 Image image = Image.getInstance(imagePath); // itext-pdf-image
                 float heigth = image.getHeight(); 
                 float width = image.getWidth(); 
                 int percent = getPercent(heigth, width);  //按比例缩小图片
                 image.setAlignment(Image.MIDDLE); 
                 image.scalePercent(percent+3);
                 document.add(image);
                 document.close();
                 result.put("fileName", filename+".pdf");
                 result.put("imageName", filename+".bmp");
                 result.put("mesg", "success");
            }catch (DocumentException de) {
                 System.err.println(de.getMessage());
            }catch (Exception e) {
                e.printStackTrace();
                result.put("mesg", "error");
            }
            return result;
        }
        /**
         * 获得百分比
         * @param h
         * @param w
         * @return
         */
        private static int getPercent(float h, float w) {
           int p = 0;
           float p2 = 0.0f;
           p2 = 560 / w * 100;
           p = Math.round(p2);
           return p;
        }
    }

     

    转载于:https://www.cnblogs.com/yugb/p/9571599.html

    展开全文
  • 这个工具类全面支持DOC, DOCX,OOXML, RTF HTML,OpenDocument,PDF, EPUB, XPS,SWF 相互转换 转化时需要的jar包和pom: jar包地址如下:链接:https://pan.baidu.com/s/1w1aMvTYqMKRhrRtum88HbQ提取码:y1qg <!-...

    这个工具类全面支持DOC, DOCX,OOXML, RTF HTML,OpenDocument,PDF, EPUB, XPS,SWF 相互转换

    转化时需要的jar包和pom:

    jar包地址如下:链接:https://pan.baidu.com/s/1w1aMvTYqMKRhrRtum88HbQ 提取码:y1qg

    <!-- https://mvnrepository.com/artifact/com.aspose/aspose-words -->
        <dependency>
          <groupId>com.aspose</groupId>
          <artifactId>aspose-words</artifactId>
          <version>19.2</version>
          <scope>system</scope>
          <systemPath>${project.basedir}/lib/aspose-words-19.2-jdk16.jar</systemPath>
        </dependency>

    1.word转PDF的工具类代码如下:

    public class FileUtils {
    
        /**
         * Word 转换  Pdf
         * @param inPath
         * @param outPath
         */
        public static void doc2pdf(String inPath, String outPath) {
            System.out.println("===============Word 转换  Pdf=================");
    	         /*if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生(15.8版本,已更改为19.2版本,故此不需要验证了)
    	                 return;
    	         }*/
            try {
                long old = System.currentTimeMillis();
                File file = new File(outPath); // 新建一个pdf文档
                FileOutputStream os = new FileOutputStream(file);
                /** 这里需要指定Linux服务器上从本地windows上传的字体库,否则生成乱码
                 *  【/usr/share/fonts/windowsFonts/】位于Linux服务器上的windows字体,作为word转pdf用
                 */
                //FontSettings.getDefaultInstance().setFontsFolder("/usr/share/fonts/windowsFonts/", true);
                Document doc = new Document(inPath); // Address是将要被转化的word文档
                System.out.println("doc"+doc);
                doc.save(os, com.aspose.words.SaveFormat.PDF);// 全面支持DOC, DOCX,
                // OOXML, RTF HTML,
                // OpenDocument,
                // PDF, EPUB, XPS,
                // SWF 相互转换
                long now = System.currentTimeMillis();
                // 将时间对象格式化为字符串
                Date date = new Date();
                SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
                String strDate = format.format(date);
                System.out.println("---PDF转化现在是--------"+strDate+"------------");
                os.close();
    
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("--------PDF转换出异常---------");
            }
        }
    }

    调用的样例:

    public static void main( String[] args ) {
            String addr1 = "E:\\NYQX_BQD.docx";
            String addr2 = "E:\\NYQX_BQD.pdf";
            FileUtils.doc2pdf(addr1,addr2);
    
        }

    展开全文
  • java将html的图文转化为PDF文件输出

    千次阅读 2018-02-28 16:18:30
    首先在我的项目的resource目录下建立相应的目录,如图其中file用来存放一个logo以及生成的PDF文件,font文件夹用来存放font 字体然后在项目的 pom.xml中添加引用&lt;dependency&gt; &lt;groupId&gt...

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


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

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

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

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

    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("<!DOCTYPE html>\n" +
                    "<html lang=\"en\">\n" +
                    "<head>\n" +
                    "    <meta charset=\"UTF-8\"></meta>\n" +
                    "    <title>Issue Payment Receipt</title>\n" +
                    "    <style type=\"text/css\">\n" +
                    "    body {\n" +
                    "        font-family: Arial Unicode MS;\n" +
                    "    }\n" +
                    "    </style>\n" +
                    "</head>\n" +
                    "<body>\n" +
                    "    <img src=\"file/logo.png\" style=\"width:160px;height:80px;\"></img>\n" +
                    "    <br/>\n" +
                    "    <br/> 建設銀行\n" +
                    "    <br/> 12345678901\n" +
                    "    <br/> 1000RMB\n" +
                    "    <br/> 姓名:李四\n" +
                    "    <br/> 單號:123456\n" +
                    "    <br/>\n" +
                    "</body>\n" +
                    "</html>");
            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文件


    打开PDF


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


    展开全文
  • 本文介绍如何使用Java程序来将PDF文档转换PNG图片、HTML、Word、SVG及XPS格式。使用工具及环境创建工具:Free Spire.PDF for Java(免费版)环境创建:方法1:首先,通过E-iceblue中文官网下载获取Free Spire.PDF ...
  • iText将html转化为pdf

    2013-10-29 14:52:02
    1 将如下jar包导入工程: core-renderer.jar core-renderer-minimal.jar iText-2.0.8.jar iTextAsian.jar xml-apis-xerces-2.9.1.jar ...//将html转化后并进行下载 public String reportPdf(Mess...
  • 为什么使用WKHtmlToPdf: ...使用时可通过java代码调用cmd指令完成网页转换为pdf的功能。 优点: 支持中文、图片、CSS等 缺点: 有时对于html文件的转化可能比较慢,对于url的转化速度较快。存在失真情况。 安
  • HTML转化为PDF

    千次阅读 2015-10-18 21:24:33
    将HTML转化为PDF参考于http://swordshadow.iteye.com/blog/1983935package org.zbq.html2pdf;import java.io.FileOutputStream; import java.io.OutputStream;import org.xhtmlrenderer.pdf.ITextRenderer;import ...
  • java生成pdf2...
  • 本文介绍如何使用Spire.PDF for JavaJava中将PDF文档转换为HTML、Word、SVG格式,以及XPS和PDF相互转换。如果你还没有使用过Spire.PDF for Java,可下载最新版测试。 原PDF文档: PDFHTML
  • PDF、Word、HTML、XPS等是我们日常工作中常用到的文件格式,不同的场合会用到不同...本文介绍如何使用Spire.PDF for JavaJava中将PDF文档转换为HTML、Word、SVG格式,以及XPS和PDF相互转换。如果你还没有使用...
  • http://pd4ml.com/   可以通过命令行,或者java代码, url 或者 html 导出成 PDF   对 flash Chart,和Ajax Chart 还不行
  • PDF、Word、HTML、XPS等是我们日常工作中常用到的文件格式,不同的场合会用到不同的文件格式展现,那么格式之间的转化就显得尤其重要。对于开发人员来说,在程序中接入格式转换功能也是常见的。 有时候我们需要在...
  • PDF、Word、HTML、XPS等是我们日常工作中常用到的文件格式,不同的场合会用到不同的...本文介绍如何使用Spire.XLS for JavaJava中将Excel文档转换为PDF、图像、XPS、Html等格式。如果你还没有使用过Spire.XLS...
  • PDF、Word、HTML、XPS等是我们日常工作中常用到的文件格式,不同的场合会用到不同...本文介绍如何使用Spire.PDF for JavaJava中将PDF文档转换为HTML、Word、SVG格式,以及XPS和PDF相互转换。如果你还没有使用...
  • 简单介绍一下:如何将html文件转化为pdf文件。 仅供自己学习。 常见的几个方法总结: 1:最简单的html用String方式表示的形式 package com.ctbri.test; import java.io.File; import java.io.FileOutputStream; ...
  • PDF、Word、HTML、XPS等是我们日常工作中常用到的文件格式,不同的场合会用到不同的文件...本文介绍如何使用Spire.XLS for JavaJava中将Excel文档转换为PDF、图像、XPS、Html等格式。如果你还没有使用过Spire.XL...
  • PDF、Word、HTML、XPS等是我们日常工作中常用到的文件格式,不同的场合会用到不同...本文介绍如何使用Spire.PDF for JavaJava中将PDF文档转换为HTML、Word、SVG格式,以及XPS和PDF相互转换。如果你还没有使用...
  • packagecom.jit.platform.basics.util.pdf;...public classHtmlToImageOrPdf {/*** htmlpdf*@paramsrcPath html路径,可以是硬盘上的路径,也可以是网络路径*@paramdestPath pdf保存路径*@return转...
  • JAVA使用wkhtmltopdf 将Html 导出PDF

    千次阅读 2018-08-03 16:15:17
    1.安装wkhtmltopdf  ... 根据自己的系统来选择对应的安装包 ...命令:wkhtmltopdf 需要转化为pdfhtml地址 导出位置   4.下面附上JAVA代码 主要工具类: public class HtmlToPdf { //...
  • http://user.qzone.qq.com/16635463 wod 转html   http://www.matrix.org.cn/resource/article/2005-11-04/jacob_word_PDF_43923.html word 转pdf
  • 使用PDFRenderer将PDF转化为图片

    万次阅读 2010-09-10 21:57:00
    这几天遇到一个问题,就是要将PDF文档中的内容全部转化为图片。我在网上找了很多资料,发先有好多这的实现方式,我也对这些资料做了一些整理。我这里就介绍一个自认为还不错的实现方式,使用java实现的。1)...
  • 1.安装wkhtmltopdf ...根据自己的系统来选择对应的安装包 ...命令:wkhtmltopdf 需要转化为pdfhtml地址 导出位置 4.JAVA代码使用 主要工具类: public class HtmlToPdf { // wkhtmltopdf在系统中的路径 p...
  • 工作中经常会遇到多个html文件转化为pdf,并且pdf转化之后的文件进行合并。官方参考文档下面来介绍简单的操作:import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io....
  • 1. 开源框架支持iText,生成PDF文档,还支持XML、Html文件转化为PDF文件;Apache PDFBox,生成、合并PDF文档;docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。比较:iText开源协议为AGPL,而其他两个...
  • java生成pdf

    2018-12-03 10:06:34
    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以XML、Html文件转化为PDF文件。

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 329
精华内容 131
关键字:

java将html转化为pdf

java 订阅