精华内容
下载资源
问答
  • html 网页生成pdf 文件

    2021-03-26 14:06:04
    2: 可以把获取打印网页html,保存本地html 文件,再重启读取html文件,生成pdf 文件后,再删除html文件的的过程, 改成直接append 拼接html的string然后直接生成pdf文件 3: 后续可以利用document 的 add page 增加页面, /...

    网页:

    注意网页标签必须关闭,不可以单个标签

    Title
    ${workOrder.shopNameEn}
    E&M Maintenance Report
    By GZ XXX M&E Engineering Co .Ltd
    ${reportDateStr}

    网页controller

    /**

    * 网页报表首页

    */

    @RequestMapping(value = "/first_page/{workOrderId}")

    public String firstPage(@PathVariable Integer workOrderId , Model model){

    WorkOrder workOrder = workOrderService.selectById(workOrderId);

    model.addAttribute("workOrder",workOrder);

    SimpleDateFormat sdf = new SimpleDateFormat("d MMM yyyy", Locale.ENGLISH);

    String reportDateStr = sdf.format(workOrder.getAppointTimeStart());//使用预约日期

    model.addAttribute("reportDateStr",reportDateStr);

    return PREFIX + "workOrder_firstPage.html";

    }

    网页连接必须当成外接api开放

    1954e41445468e3df025e0ef7b632df2.png

    前端pdf生成按钮

    js:

    利用pdfjs 产生pdf预览界面

    WorkOrderDetail.printReceipt = function () {

    var workOrderId = $("#workOrderId").text();

    window.open('/static/js/plugins/pdfjs/web/viewer.html?file=' + encodeURIComponent(Feng.ctxPath + "/workOrder/print_receipt/"+ workOrderId,"pdf"));

    };

    controller:

    /**

    * 完工记录pdf

    */

    @Permission

    @RequestMapping(value = "/print_receipt/{workOrderId}")

    @ResponseBody

    public void printReceipt(@PathVariable Integer workOrderId){

    workOrderService.printReceipt(workOrderId);

    }

    pom.xml : 需要引入的包

    com.itextpdf

    itextpdf

    5.5.6

    com.itextpdf.tool

    xmlworker

    5.5.6

    com.itextpdf

    itext-asian

    5.2.0

    org.jsoup

    jsoup

    1.10.1

    serviceImpl 接口就省略不放上来

    1: 代码没有写完,感觉效果不是太理想就放弃了

    2: 可以把获取打印网页html,保存本地html 文件,再重启读取html文件,生成pdf 文件后,再删除html文件的的过程, 改成直接append 拼接html的string然后直接生成pdf文件

    3: 后续可以利用document 的 add page 增加页面,

    /**

    * 完工记录pdf入口,

    */

    public boolean printReceipt(Integer workOrderId){

    //html预览title

    WorkOrder workOrder = this.selectById(workOrderId);

    String title = workOrder.getShopNameCh() + "-完工记录.pdf";

    int port = serverProperties.getPort();

    //首页生成pdf文件

    try {

    URL url = new URL("http://localhost:" + port + "/workOrder/first_page/" + workOrderId);

    File file = createPdfByUrl(url);

    showReceiptOrder(file , title);

    } catch (MalformedURLException e) {

    e.printStackTrace();

    }

    return true;

    }

    /**

    * 利用网页url 创建单个pdf文件

    * @param url

    * @return

    */

    private File createPdfByUrl(URL url){

    //pdf 路径

    String fileName = String.valueOf(System.currentTimeMillis()).substring(4, 13) + ".pdf";

    String picSavePath = gunsProperties.getFileUploadPath();

    String subFile = "workOrderPdf"+ "/";

    String realPath = ServerUtils.createShopPictureUploadPath(picSavePath+subFile) + fileName;

    File file = new File(realPath);

    //html路径

    String htmlFileName = String.valueOf(System.currentTimeMillis()).substring(4, 13) + ".HTML";

    String htmlPath = ServerUtils.createShopPictureUploadPath(picSavePath+subFile) + htmlFileName;

    PdfWriter writer = null;

    try {

    //第一步,创建一个 iTextSharp.text.Document对象的实例:

    Rectangle pageSize = new Rectangle(720, 540); //这只页面大小

    Document document = new Document(pageSize);

    // 测试页面大小

    // PdfReader reader = new PdfReader(picSavePath + subFile + "xxxx店-完工记录-.pdf");

    // Document document2 = new Document(reader.getPageSize(1));

    // reader.close();

    // document2.close();

    //第二步,为该Document创建一个Writer实例:

    FileOutputStream fos = new FileOutputStream(realPath);

    writer = PdfWriter.getInstance(document, fos);

    //第三步,打开当前Document

    document.open();

    //第四步,为当前Document添加内容:

    //document.add(new Paragraph("Hello World"));

    if(convertUrlToHtml(url , htmlPath) == false){

    throw new GunsException(BizExceptionEnum.CREATE_HTML_FILE_ERROR);

    }

    FileInputStream fis = new FileInputStream(htmlPath);

    XMLWorkerHelper.getInstance().parseXHtml(writer, document, fis);

    //第五步,关闭Document

    document.close();

    fis.close();

    fos.close();

    new File(htmlPath).delete(); // 删除html文件

    if(ToolUtil.isEmpty(file)){

    throw new GunsException(BizExceptionEnum.CREATE_PDF_ERROR);

    }

    return file;

    } catch (DocumentException e) {

    e.printStackTrace();

    return null;

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    return null;

    } catch (IOException e) {

    e.printStackTrace();

    return null;

    }finally {

    writer.close();

    }

    }

    /**

    * 把url 上的html 保存为本地html文件

    * @param url

    * @param htmlPath

    * @return

    */

    public boolean convertUrlToHtml(URL url , String htmlPath){

    try {

    File htmlFile = new File(htmlPath);

    InputStream is;//接收字节输入流

    FileOutputStream fos = new FileOutputStream(htmlFile);//字节输出流

    is = url.openStream();

    BufferedInputStream bis = new BufferedInputStream(is);//为字节输入流加缓冲

    BufferedOutputStream bos = new BufferedOutputStream(fos);//为字节输出流加缓冲

    int length;

    byte[] bytes = new byte[1024*20];

    while((length = bis.read(bytes, 0, bytes.length)) != -1){

    fos.write(bytes, 0, length);

    }

    bos.close();

    fos.close();

    bis.close();

    is.close();

    return true;

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    return false;

    } catch (IOException e) {

    e.printStackTrace();

    return false;

    }

    }

    /**

    * pdf文件前端展示

    * @param file

    * @param httpTitleName

    */

    private void showReceiptOrder(File file ,String httpTitleName){ // httpTitleName = "xx店-完工记录.pdf"

    try{

    FileInputStream fileInputStream = new FileInputStream(file);

    HttpServletResponse response = HttpKit.getResponse();

    response.setHeader(

    "Content-Disposition",

    "attachment;fileName="

    + new String( httpTitleName.getBytes("utf-8"),"ISO8859-1")

    );

    response.setContentType( "multipart/form-data");

    OutputStream outputStream = response.getOutputStream();

    IOUtils.write(IOUtils.toByteArray(fileInputStream), outputStream);

    fileInputStream.close();

    outputStream.flush();

    outputStream.close();

    }catch (IOException e){

    e.printStackTrace();

    }catch(Exception e) {

    e.printStackTrace();

    }finally {

    System.out.println("成功显示文件!");

    }

    }

    效果如下:

    html 文件

    3cc71559fe52999ed11fc938dcf9c892.png

    看上去效果还可以,

    但是生成的pdf文件

    c2bd4e2296a47eeedcacb80f16ff5fd6.png

    其实这个还要考虑中文直接,导入simsun 宋体包,还有考虑把图片改成base64格式才可以读取, 由于对应的html文件,无法读取js,以及大部分的css效果,如果对报表要求比较严格,内容比较多,样式调整就非常麻烦

    展开全文
  • 原标题:java中根据模板生成pdf文件阅读目录简介业务需求引入jar包pdf模板文件与方法参数代码部分总结归纳回到顶部简介本文使用java引入apach提供的pdf操作工具生成pdf文件,主要是根据需求开发了一个util类,记录...

    原标题:java中根据模板生成pdf文件

    阅读目录

    简介

    业务需求

    引入jar包

    pdf模板文件与方法参数

    代码部分

    总结归纳

    回到顶部

    简介

    本文使用java引入apach提供的pdf操作工具生成pdf文件,主要是根据需求开发了一个util类,记录一下学习和开发过程。

    回到顶部

    业务需求

    因为业务需要,对于不同的用户要生成一个不同的pdf文件,记录了保险用户的疾病信息和结算信息等,根据pdf模板,从数据库中获取用户的基本和结算信息,然后生成该用户的结算文件。

    根据这个需求,写了一个工具类,主要功能就是根据模板生成pdf文件,并保存到服务器指定位置。

    回到顶部

    引入jar包

    pdfBox是apach提供的免费,开源的pdf操作工具,这个jar里面囊括了所有的pdfbox操作工具类,导入这一个就够了 ,使用起来很方便。

    这里使用maven引入jar包:

    org.apache.pdfboxpdfbox2.0.13

    回到顶部

    pdf模板文件与方法参数

    工具类有两个必须的元素:pdf模板文件和从数据库中抽出的数据。

    pdf模板文件放在指定的路径,下图为部分pdf模板文件:

    模板文件可以有多张,这里只截取一张当做参考。

    入参和返回值,如下图:

    b9c3f3ac7eb7d73e92d99d442dac0381.png

    String型的为生成的pdf文件名(该参数可有可无,文件名可以在该方法内定义,也可以在调用该方法时调用);

    Map 是从数据库中抽取的用户基本和结算信息,取出过程就不过多赘述了;

    返回值为生成pdf文件的保存全路径;

    回到顶部

    代码部分

    不多说,直接上代码

    /** * 根据模板生成pdf * @pdfName 文件名 * @param data Map(String,Object) * @return 文件保存全路径 */ public String createPDF(String pdfName,Map data) { PdfReader reader = null; AcroFields s = null; PdfStamper ps = null; ByteArrayOutputStream bos = null;        String realPath = ResourceBundle.getBundle("systemconfig").getString("upLoadFolder") + File.separator+"comfirmationDoc"; String dateFolder = DateFormatUtils.format(new Date(), "yyyyMMdd"); String folderPath = realPath +File.separator+ dateFolder; //创建上传文件目录 File folder = new File(folderPath); if(!folder.exists()){ folder.mkdirs(); } //设置文件名 String fileName = pdfName+"_"+DateFormatUtils.format(new Date(), "yyyyMMddhhmmss")+".pdf";        String savePath = folderPath +File.separator+fileName ; try { String file = this.getClass().getClassLoader().getResource("comfirmTemplate.pdf").getPath(); //设置字体 String font = this.getClass().getClassLoader().getResource("YaHei.ttf").getPath(); reader = new PdfReader(file); bos = new ByteArrayOutputStream(); ps = new PdfStamper(reader, bos); s = ps.getAcroFields(); /** * 使用中文字体 使用 AcroFields填充值的不需要在程序中设置字体,在模板文件中设置字体为中文字体 Adobe 宋体 std L */ BaseFont bfChinese = BaseFont.createFont(font,BaseFont.IDENTITY_H, BaseFont.EMBEDDED); /** * 设置编码格式 */ s.addSubstitutionFont(bfChinese); // 遍历data 给pdf表单表格赋值 for (String key : data.keySet()) { if(data.get(key)!=null) { s.setField(key, data.get(key).toString()); } } // 如果为false那么生成的PDF文件还能编辑,一定要设为true ps.setFormFlattening(true); ps.close(); FileOutputStream fos = new FileOutputStream(savePath); fos.write(bos.toByteArray()); fos.flush(); fos.close(); return savePath; } catch (IOException | DocumentException e) { logger.error("pdf生成:读取文件异常"); e.printStackTrace(); return ""; } finally { try { bos.close(); reader.close(); } catch (IOException e) { logger.error("pdf生成:关闭流异常"); e.printStackTrace(); } } }

    经过实际使用,代码能够正常生成pdf文件,在这里就不上图了

    回到顶部

    总结归纳

    1.pdf模板文件可以看做是key-value的键值对型,key值即为入参中的map中的key值,在pdf模板中隐藏,value即是根据key填充的值。

    2.pdf模板文件中的checkbox默认是勾选上的,设置off,可以取消勾选当前选项,比如用户性别为女:使用map.put("sexMale","off");的方法取消性别中男性的已选择状态。

    3.文件的保存路径在方法内定义的,也可以事前定义好,像文件名一样以入参的形式传参。

    作者:obonika

    原文:https://www.cnblogs.com/obonika/p/10307215.html返回搜狐,查看更多

    责任编辑:

    展开全文
  • 本文介绍了 iText 并提供了一个使用它从 Java 技术应用程序生成 PDF 文档的分步指南。我们创建一个样例应用程序来更好地理解 iText。2012 年 10 月 30 日 - 作者更新了本文,以体现针对 iText V5.3.0 版的更改...

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库。开源的 iText 库使得 PDF 的创建变得轻松易行。本文介绍了 iText 并提供了一个使用它从 Java 技术应用程序生成 PDF 文档的分步指南。我们将创建一个样例应用程序来更好地理解 iText。

    2012 年 10 月 30 日 - 作者更新了本文,以体现针对 iText V5.3.0 版的更改(最初的文章使用了 iText V1.3 版本)。

    许多应用程序都要求动态生成 PDF 文档。这些应用程序涵盖从生成客户对帐单并通过电子邮件交付的银行到购买特定的图书章节并以 PDF 格式接收这些图书章节的读者。这个列表不胜枚举。在本文中,我们将使用 iText Java 库生成 PDF 文档。我们将向您演示一个样例应用程序,以便您可自行完成它并能更好地理解它。

    熟悉 iText V5.3.0 版

    iText 是一个可从 http://itextpdf.com/ 免费获取的 Java 库(请参见 参考资料)。iText 库非常强大,且支持生成 HTML、RTF 和 XML 文档,还支持生成 PDF 文档。您可以选择各种各样的字体来用于文档中。另外,iText 的结构允许您使用相同代码生成上面提及的任何类型的文档。

    iText 库包含使用各种字体生成 PDF 文本、在 PDF 文档中生成表格、向页面中添加水印等的类。iText 还提供了其他许多特性。在一篇文章中无法演示所有这些特性。我们将介绍生成 PDF 所需的基本知识。有关更多详细信息,请参阅供应商提供的文档(参见 参考资料)。

    我们将使用 Eclipse 开发我们的样例应用程序。作为一个开源 IDE,Eclipse 可免费获取且非常强大。您可立即下载 Eclipse(参见 参考资料)。

    os-javapdf-itextsample.jar下载

    具体下载目录在 /2013年资料/9月/24日/从 Java 应用程序动态生成 PDF 文件

    iText API:详细了解

    com.itextpdf.text.Document 是用于生成 PDF 文档的主要类。这是第一个需要实例化的类。创建文档之后,您需要一个编写器来向其中写入信息。com.itextpdf.text.pdf.PdfWriter 是一个 PDF 编写器。下面提供了其他一些常用的类:

    com.itextpdf.text.Paragraph:此类表示一个缩进的段落。

    com.itextpdf.text.Chapter:此类表示 PDF 文档中的一章。使用 Paragraph 作为标题、int 作为章节编号来创建该类。

    com.itextpdf.text.Font:此类包含一种字体的所有规范,比如字体集、字号、样式和颜色。各种字体都在此类中声明为静态常量。

    com.itextpdf.text.List:此类表示一个列表,反过来,该列表又包含许多 ListItems。

    com.itextpdf.text.pdf.PDFPTable:这是一个表格,可放在一个绝对位置上,也可作为类 Table 添加到文档中。

    com.itextpdf.text.Anchor:一个 Anchor 可能是一个引用,或是一个引用的目标。

    在 Eclipse 中下载和配置 iText

    作为一个纯 Java 库,iText 以 JAR 文件的形式提供(参见 参考资料)。下载该库之后(假设下载到路径 C:\temp),使用以下步骤在 Eclipse 环境中配置 iText 库:

    在 Eclipse 中创建一个名为 iText 的新 Java 项目。

    右键单击 Package Explorer 视图中的 iText 项目,选择 Properties。

    单击 Java Build Path。在 Libraries 选项卡上,单击 Add External JARs。

    找到 C:\temp 目录并选择此目录中的 itext-5.3.0.jar。

    单击 OK。

    iText 现在已配置,Eclipse 已准备好创建 Java 应用程序来生成动态的 PDF 文档。

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • java实现根据pdf文件模板生成pdf文件

    千次阅读 2021-02-23 09:44:08
    4.输出的pdf文件 5.使用Adobe Acrobat DC打开template.pdf 6.填充文字及创作表单 创作表单->添加“文本”域  创作表单->编辑“表格” *填充的字段名(比如对象Table的属性为name,这里名称后面一列...

    一、如何制作pdf模板

    1.首先创建template.doc

    2.根据doc文件制作pdf模板

    3.将doc文件输出为pdf

      文件->输出为pdf

    4.输出的pdf文件

    5.使用Adobe Acrobat DC打开template.pdf

    6.填充文字及创作表单

          创作表单->添加“文本”域

       创作表单->编辑“表格”

    *填充的字段名(比如对象Table的属性为name,这里名称后面一列的单元格填充name)

    7.模板制作完毕

     

    二、java生成pdf文件

    1.java代码

    PdfFileBlh.java:
    
    @SuppressWarnings("unchecked")
    public void exportPdfFile(HttpServletRequest request, HttpServletResponse response) throws IOException {
    		//1.获取数据 
    //		String jsonString = getRequestJsonString(request);
    		String jsonString = request.getParameter("jsonString");
    		/*String jsonString = "{\r\n" + 
    				"  \"hospitalId\":\"14064\",\r\n" + 
    				"  \"hospitalName\":\"揭阳市人民医院\",\r\n" + 
    				"  \"name\":\"周虎\",\r\n" + 
    				"  \"gender\":\"男\",\r\n" + 
    				"  \"age\":\"26岁\",\r\n" + 
    				"  \"patNo\":\"0001278568\",\r\n" + 
    				"  \"clinic\":\"全科医学科简易门诊\",\r\n" + 
    				"  \"bedNo\":\"16床\",\r\n" + 
    				"  \"specimen\":\"咽拭子\",\r\n" + 
    				"  \"repNo\":\"110254767\",\r\n" + 
    				"  \"serialNo\":\"0\",\r\n" + 
    				"  \"doctor\":\"核酸检测号\",\r\n" + 
    				"  \"applicationTime\":\"2021-02-18 15:17\",\r\n" + 
    				"  \"advName\":\"新型冠状病毒核酸RNA检测(自费)\",\r\n" + 
    				"  \"idType\":\"身份证\",\r\n" + 
    				"  \"idNo\":\"EC3263698\",\r\n" + 
    				"  \"dateOfCollection\":\"2021-02-18 15:30\",\r\n" + 
    				"  \"dateOfReceipt\":\"2021-02-19 11:13\",\r\n" + 
    				"  \"specimenCollector\":\"黄敏华\",\r\n" + 
    				"  \"specimenReceiver\":\"钟乔华\",\r\n" + 
    				"  \"dateOfInspection\":\"2021-02-19 11:15\",\r\n" + 
    				"  \"dateOfReport\":\"2021-02-19 11:15\",\r\n" + 
    				"  \"reportedBy\":\"陈舒兰\",\r\n" + 
    				"  \"inspectedBy\":\"钟乔华\",\r\n" + 
    				"  \"resultList\":[\r\n" + 
    				"	{\r\n" + 
    				"		\"testItems\":\"2019新型冠状病毒核酸检测\",\r\n" + 
    				"		\"result\":\"阴性(-)\",\r\n" + 
    				"		\"refRange\":\"阴性(-)\",\r\n" + 
    				"		\"method\":\"RT-PCR\"\r\n" + 
    				"	},\r\n" + 
    				"	{\r\n" + 
    				"		\"testItems\":\"Nucleic Acid Test For SARA-Cov-2\",\r\n" + 
    				"		\"result\":\"Negative(-)\",\r\n" + 
    				"		\"refRange\":\"Negative(-)\",\r\n" + 
    				"		\"method\":\"RT-PCR\"\r\n" + 
    				"	},\r\n" + 
    				"	{\r\n" + 
    				"		\"testItems\":\"2019-nCov ORFlab基因\",\r\n" + 
    				"		\"result\":\"阴性Negative(-)\",\r\n" + 
    				"		\"refRange\":\"阴性Negative(-)\",\r\n" + 
    				"		\"method\":\"RT-PCR\"\r\n" + 
    				"	},\r\n" + 
    				"	{\r\n" + 
    				"		\"testItems\":\"2019-nCov N基因\",\r\n" + 
    				"		\"result\":\"阴性Negative(-)\",\r\n" + 
    				"		\"refRange\":\"阴性Negative(-)\",\r\n" + 
    				"		\"method\":\"RT-PCR\"\r\n" + 
    				"	}\r\n" + 
    				"  ]\r\n" + 
    				"}";*/
    		System.out.println("======jsonString======"+jsonString);
    		if(StringUtils.isNotBlank(jsonString)) {
    			//2.处理数据
    			Map<String, Object> data = JsonUtils.toObject(jsonString, Map.class);
    			//3.根据医院Id获取pdf模板文件
    			String hospitalId = (String) data.get("hospitalId");
    			String hospitalName = (String) data.get("hospitalName");
    			String templatePath = request.getSession().getServletContext().getRealPath("/WEB-INF/classes/template/template_" + hospitalId + ".pdf");
    			String fontPath = request.getSession().getServletContext().getRealPath("/WEB-INF/classes/template/simsun.ttc");
    			System.out.println("======templatePath======"+templatePath);
    			
    			//4.设置响应头信息
    			response.setContentType("multipart/form-data");
    			response.setHeader("Content-Disposition","attachment;fileName="+new String((hospitalName + "检验报告单_").getBytes("GBK"), "ISO-8859-1") + DateUtils.formatDate(new Date(), "yyyyMMddHHmmss") + ".pdf");
    
    			//5.指定解析器
    			ServletOutputStream os = null;
    			PdfStamper ps = null;
    			PdfReader reader = null;
    			Document doc = null;
    			try {
    				os = response.getOutputStream();
    				// 6.读入pdf表单
    				reader = new PdfReader(templatePath);
    				// 7.根据表单生成一个新的pdf
    				ps = new PdfStamper(reader, os);
    				doc = new Document();
    				// 8.获取pdf表单
    				AcroFields form = ps.getAcroFields();
    				// 9.给表单添加中文字体 。不设置的话,中文可能无法显示
    				BaseFont bf = BaseFont.createFont(fontPath+",1", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
    				form.addSubstitutionFont(bf);
    				// 10.获取到明细
    				List<Map<String,Object>> resultList = (List<Map<String, Object>>) data.get("resultList");
    				data.remove("resultList");
    				// 11.遍历data 给pdf表单表格赋值
    				for (String key : data.keySet()) {
    					String value = (String) data.get(key);
    					form.setField(key, value);
    				}
    				
    				// 12.处理检验明细
    				if(resultList!=null && resultList.size()>0) {
    					String testItems="\r\n";
    					String result="\r\n";
    					String refRange="\r\n";
    					String method="\r\n";
    					for(Map<String,Object> resultMap:resultList) {
    						testItems+=resultMap.get("testItems")+"\r\n\r\n";
    						result+=resultMap.get("result")+"\r\n\r\n";
    						refRange+=resultMap.get("refRange")+"\r\n\r\n";
    						method+=resultMap.get("method")+"\r\n\r\n";
    					}
    					form.setField("testItems", testItems);
    					form.setField("result", result);
    					form.setField("refRange", refRange);
    					form.setField("method", method);
    				}
    				
    				ps.setFormFlattening(true);
    				ps.close();
    				doc.open();
    				doc.close();
    				System.out.println("===============PDF导出成功=============");
    			} catch (Exception e) {
    				e.printStackTrace();
    			} finally {
    				try {
    					os.close();
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    	
    	public static String getRequestJsonString(HttpServletRequest request)
                throws IOException {
            String submitMehtod = request.getMethod();
            // GET
            if (submitMehtod.equals("GET")) {
              return new String(request.getQueryString().getBytes("iso-8859-1"),"utf-8").replaceAll("%22", "\"");
                // POST
            } else {
                return getRequestPostStr(request);
            }
        }
    	
    	public static byte[] getRequestPostBytes(HttpServletRequest request)
                throws IOException {
            int contentLength = request.getContentLength();
            if(contentLength<0){
                return null;
            }
            byte buffer[] = new byte[contentLength];
            for (int i = 0; i < contentLength;) 
            {
                int readlen = request.getInputStream().read(buffer, i,
                        contentLength - i);
                if (readlen == -1) {
                    break;
                }
                i += readlen;
            }
            return buffer;
        }
    	
    	public static String getRequestPostStr(HttpServletRequest request)
                throws IOException {
            byte buffer[] = getRequestPostBytes(request);
            String charEncoding = request.getCharacterEncoding();
            if (charEncoding == null) {
                charEncoding = "UTF-8";
            }
            return new String(buffer, charEncoding);
        }
    
    PdfFileController.java:
    
    @Controller
    @RequestMapping("/pdfFile")
    public class PdfFileController {
    	
    	@Resource
    	private PdfFileBlh blh;
    	
    	@RequestMapping(params="BLHMI=exportPdfFile")
        public void exportNoEndFormList(HttpServletRequest request, HttpServletResponse response) throws IOException {
            blh.exportPdfFile(request,response);
        }
    }

    2.html代码:
     

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    
    <!DOCTYPE html>
    <html lang="en">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<title>生成PDF文件</title>
    		<jsp:include page="/WEB-INF/jsp/common/scriptInc.jsp"></jsp:include>
    		<jsp:include page="/WEB-INF/jsp/common/styleInc.jsp"></jsp:include>
    		<script type="text/javascript">
    			function exportPdfFile(){
    				$("#downPdfFileForm").submit();
    			}
    		</script>
    	</head>
    	
    	<body>
    		<div class="">
    			<div class="">
    				<div id="handout_wrap_inner">
    					<form id="downPdfFileForm" action="http://localhost:8080/demo/pdfFile?BLHMI=exportPdfFile" method="post">
    						<input name="jsonString" value='{"hospitalId":"14064","hospitalName":"揭阳市人民医院","name":"张三","gender":"男","age":"26岁","patNo":"0001278568","clinic":"全科医学科简易门诊","bedNo":"16床","specimen":"咽拭子","repNo":"110254767","serialNo":"0","doctor":"核酸检测号","applicationTime":"2021-02-18 15:17","advName":"新型冠状病毒核酸RNA检测(自费)","idType":"身份证","idNo":"EC3263698","dateOfCollection":"2021-02-18 15:30","dateOfReceipt":"2021-02-19 11:13","specimenCollector":"黄敏华","specimenReceiver":"钟乔华","dateOfInspection":"2021-02-19 11:15","dateOfReport":"2021-02-19 11:15","reportedBy":"陈舒兰","inspectedBy":"钟乔华","resultList":[{	"testItems":"2019新型冠状病毒核酸检测",	"result":"阴性(-)",	"refRange":"阴性(-)",	"method":"RT-PCR"},{	"testItems":"Nucleic Acid Test For SARA-Cov-2",	"result":"Negative(-)",	"refRange":"Negative(-)",	"method":"RT-PCR"},{	"testItems":"2019-nCov ORFlab基因",	"result":"阴性Negative(-)",	"refRange":"阴性Negative(-)",	"method":"RT-PCR"},{	"testItems":"2019-nCov N基因",	"result":"阴性Negative(-)",	"refRange":"阴性Negative(-)",	"method":"RT-PCR"}]}'/>
    					</form>
    					<a href="javascript:void(0);" onclick="exportPdfFile()">下载</a>
    				</div>
    			</div>
    		</div>
    	</body>
    </html>

     

    展开全文
  • java 中实现HTML 生成pdf

    2021-02-27 14:50:44
    JAVA生成pdf 的方法很多,iText是一个生成PDF文档的开源Java库。但是用iText生成pdf,有时候很难控制页面的样式。听说flying-saucer 可以对样式进行简单的支持。由于项目需要,用flying-saucer 体验 了一把,感觉...
  • java实现生成PDF文件

    千次阅读 2020-10-24 21:21:21
    PDF文件格式可以文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。该格式文件还可以包含超文本链接、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。在系统开发中...
  • 我一直在互联网上搜索如何使用Java将HTML页面转换为PDF文件。我发现了很多指针,简而言之,它们不起作用或难以实现。我也下载了一个商业产品,pdf4ml;该API是我很乐意与之合作的,除了当我在维基百科上检索一个简单...
  • 我们这里是maven项目,导入相应jar包:org.freemarkerfreemarker2.3.23...注意:建议 itextpdf 和 tool 包版本一致,不然有可能会出现未知错误(我遇到一次~)第一步:编写 freemarke...
  • http://hi.baidu.com/skeryl/blog/item/d9b74e081e1d423ae92488ac.html如果应用程序需要动态生成 PDF 文档,则需要 iText 库。开放源码的 iText 库使 PDF 文档的创建能够在瞬间完成。本文介绍了 iText 并提供了使用...
  • 1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖[html] view plain copycom.itextpdfitextpdf5.5.10[html] view plain ...下面就是生成pdf代码了[java] view plain copyimport java.io.ByteArray...
  • Java生成PDF文件(Itext篇)

    千次阅读 2018-08-15 18:14:24
    在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件。通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样就很好的解决了B/S系统的...
  • 从jar中读取字体和ftl模版,如果你不想从jar中读取,可以自己改造一下,就是不管你是从其他地方读文件或者从数据库中字符串,总之你要把他转换成字符串
  • 需求为方便定制,项目有了通过html模板生成动态生成PDF的需求。本文使用的是flying-saucer-pdf-itext5 + freemarker的方案。解决关键的Maven依赖配置12345678910org.xhtmlrendererflying-saucer-pdf-itext59.1.5org....
  • 有一些开源和一些付费选项.如果您可以使用AGPL许可下的产品,itext imho带来最佳结果.如果您正在寻找开源/免费如果您正在寻找付费(并且几乎总是更...然后在第二遍中,您将生成PDF用于创建基于书签的TOC,并使用T...
  • public classPdfUtil {/** 生成pdf工具类* wmy 12:40 2019/8/9* @Param [guideBook, pdfPath]* @return java.lang.Boolean**/public staticBoolean htmlToPdf(GuideBook guideBook, String pdfPath) {try{//1....
  • 这篇文章主要介绍了java根据富文本生成pdf文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下public class PdfUtil {/** 生成pdf工具类* wmy 12:40 ...
  • Java利用itext实现导出PDF文件所需要的jar包:com.lowagie.text_2.1.7.v201004222200.jarjar包下载地址:http://cn.jarfire.org/com.lowagie.html一、主要步骤1.新建document对象第一个参数是页面大小。接下来的参数...
  • java动态生成pdf文件并下载 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助...
  • Java】使用iText生成PDF文件

    千次阅读 2019-01-17 20:18:23
    Java】使用iText生成PDF文件  iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以XML、Html文件转化为PDF文件。  项目要...
  • java将图片生成pdf

    2021-01-26 15:06:27
    https://www.cnblogs.com/zhexuejun/p/13257369.html https://blog.csdn.net/sand_clock/article/details/85328849 https://blog.csdn.net/Soulmate_Min/article/details/81707918 mvn install:install-file -...
  • 渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成jpg文件流【实例截图】【核心代码】java_pdf├── java_pdf│ ├── pom.xml│ ├── README.md│ ├── src│ │ └── main│ │...
  • 原文:...二、解决方案:iText+FreeMarker+JFreeChart生成可动态配置的PDF文档iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。FreeMarker能配...
  • 1. 开源框架支持iText,生成PDF文档,还支持XML、Html文件转化为PDF文件;Apache PDFBox,生成、合并PDF文档;docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。比较:iText开源协议为AGPL,而其他两个...
  • 最初是希望可以通过读取网页模板,生成pdf文件并提供下载,但是经过测试js是不被解析的,如果只有图片和文字效果还是不错的。 需要注意 所有标签需要严格闭合 js无效 所有样式需要写在head内部(不能引入外联样式)...
  • [itext]Java生成PDF文件

    2020-12-20 13:02:32
    一、前言最近在做也导出试卷的功能,刚开始是导出为doc,可是导出来格式都有变化,最后说直接word...经一番查找,选定iText--用于生成PDF文档的一个Java类库。二、iText简介iText是著名的开放源码的站点sourcefo...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,044
精华内容 15,617
关键字:

java将html内容生成pdf文件

java 订阅