HAP框架-PDF线预览开发

来源:述职报告 发布时间:2020-08-28 05:20:20 点击:

  ,

  <HAP框架>

 PDF在线预览开发

 Author: ZhangYanjie Creation Date: 2016-07-06 Last Updated: 2020-08-25 Document Ref: PDF在线预览 Version: 1.0

 文档控制

 更改记录 3

 日期 作者 版本 更改参考 2016-07-10

 1.0 无前版本

 内容目录 文档控制 ................................................................................................................................... ii

 1.

 文档说明 ..................................................................................................................... 2

 1.1.

 适用框架及用到的技术 ...................................................................................... 2

 1.2.

 FreeMarker的使用 ............................................................................................. 2

 1.1.

 iText介绍 ............................................................................................................. 6

 1.1.

 PDFObject ........................................................................................................... 7

 1.2.

 BarCode .............................................................................................................. 8

 1.3.

 附件(源码)

 ...................................................................................................... 9

 2.

 实现效果和注意点 ................................................................................................... 10

 2.1.

 实现效果 ............................................................................................................ 10

 2.2.

 注意点 ................................................................................................................ 10

 3.

 未结与已结问 ........................................................................................................... 11

 未结问题 .......................................................................................................................... 11

 已结问题 .......................................................................................................................... 11

 1. 文档说 明 在使用本文档操作实现PDF预览前,请先详细了解本章节的内容. 1. 本次实践是基于hap框架,按理是通用的 2. 主要结合了Freemarker+iText

 1.1. 适用 框架及 用到的技术 1.1.1. 适用 框架 Hap框架

 1.1.2. 涉及到的 技术 1. Freemarker,iText插件,pdfObject,Barcode

 1.2. FreeMarker 的使用 1.2.1. FreeMarker 简单介绍

  FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序。FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件。FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境。

 1.2.2. FreeMarker 学习文档

 Freemarker学习文档.zip 1.2.3.

 FreeMarker 引用

 1.maven库依赖

  <dependency>

  <groupId>org.freemarker</groupId>

  <artifactId>freemarker</artifactId>

  <version>2.3.21</version>

 </dependency>

 1.2.4. FreeMarker 模板转html 代码

 //创建配置实例

  Configuration cfg = new Configuration();

  //指定模板存放的路径

  cfg.setDirectoryForTemplateLoading(new File(basePath + "/WEB-INF/ftl"));

 //设置编码

  cfg.setDefaultEncoding("UTF-8");

  // 从上面指定的模板目录中加载对应的模板文件

 Template temp = cfg.getTemplate("contractTemplate.ftl");

  temp.setEncoding("UTF-8");

  // 创建数据模型

  List<Book> book = pdfService.selectBook();

  Map root = new HashMap();

  root.put("bookList", book);

  Map<String,String> bookMap = new HashMap<String,String>();

 //创建html文件

  File file = new File(fileURL);

  if (!file.exists())

 file.createNewFile();

  //新建html文件输出流

  Writer out = new BufferedWriter(new OutputStreamWriter(

  new FileOutputStream(file), "UTF-8"));

  //将数据源整合到html输出流

  temp.process(root, out);

 1.2.5. FreeMarker 模板代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>PDF模板</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <style mce_bogus="1" type="text/css">

  body {font-family: SimSun; background:none;margin-left: auto;margin-right: auto;}

  body,html,div,p,span{ font-size:14px; margin:0px; padding:0px;}

  </style>

  </head> <script src="${basePath}resources/js/test/pdfobject.js" type="text/javascript"></script> <script src="${basePath}lib/jquery/jquery-1.9.0.min.js" type="text/javascript"></script> <script type="text/javascript">

 var viewPDF = function(){

 // window.open(this.href,"resizable,scrollbars");

 PDFObject.embed("/hap/resources/template.pdf");

 }

  var htmlToPDF = function(){

  $.ajax({

 type:"POST",

 url:"${basePath}sys/pdftest/query",

 data:{},

 success:function(data){

  if(data=="true"){

 viewPDF();

  }

 },

 })

 } </script> <body> <img height="44" src="${basePath}resources/images/EAN8.jpg"/> <input type="button" onclick="htmlToPDF()" value="PDF预览"></input> <table width="680" border="1" cellspacing="0" cellpadding="0" bgcolor="#CCCCCC"

 style="table-layout:fixed; word-break:break-strict;">

 <tr height="100px">

  <td width="200"><span>书名1</span></td>

  <td width="200"><span>介绍</span></td>

 </tr>

 <#list bookList as blist>

  <tr height="100px">

 <td><span>${blist.bookName}</span></td>

 <td><span>${blist.description}</span></td>

  </tr>

 </#list> </table> </body> </html>

 1.1. iText 介绍

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

 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。

 1.1.1. iText 的引用 1.jar包 itextpdf-5.4.2.jar xmlworker-5.4.1.jar core-renderer-R8.jar 2.maven库依赖

 <dependency>

  <groupId>com.itextpdf</groupId>

  <artifactId>itextpdf</artifactId>

  <version>5.4.2</version>

 </dependency>

 <dependency>

  <groupId>com.itextpdf.tool</groupId>

  <artifactId>xmlworker</artifactId>

  <version>5.4.1</version>

 </dependency>

 <dependency>

  <groupId>org.xhtmlrenderer</groupId>

  <artifactId>core-renderer</artifactId>

  <version>R8</version>

 </dependency>

 1.1.2. iText 实现html 转pdf 文件代码

 1.1. PDFObject PDFObject.js,是一个 JavaScript 库用来在HTML中动态嵌入 PDF 文档。

 1.1.1. PDFObject 使用方法 只需要引用 只需要引入pdfobject.js,不需要额外的库

  <script type="text/javascript" src="..js/pdfobject.js"></script>

 1.可以先创建一个div来当pdf展示的容器

  <div id="example1"></div>

 2.通过调用pdfObject的embed方法来显示 <script>PDFObject.embed("/pdf/sample-3pp.pdf", "#example1");</script>

 1.1.2. PDFObject 引用 PDFObject.zip

 // step 1

  创建Document

 Document document = new Document();

  // step 2 创建pdfwriter实例并指定输出的pdf文件的路径

  PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile));

  // step 3 打开Document

  document.open();

  // step 4

 获得 XMLWorkerHelper实例,通过parseXHtml方法把html文件转换成pdf文件,

  // parseXHtml方法对应的参数,分别是输出的pdf文件输出流,Document实例,html文件输入

 //流,字体编码的设置

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

  new FileInputStream(fileURL), Charset.forName("UTF-8"));

 //step 5 关闭Document

  document.close()

  1.2. BarCode 免费的在线条码生成器 1.2.1. BarCode 实现代码

 1.2.2. BarCode 引用

 ·········jbarcode-0.2.8.jar static void toBarcode(String basePath){

  try {

  JBarcode localJBarcode = new JBarcode(EAN8Encoder.getInstance(),WidthCodedPainter.getInstance(),EAN8TextPainter.getInstance());

  String str = "2219644";

  BufferedImage localBufferedImage = localJBarcode.createBarcode(str);

  saveToJPEG(localBufferedImage, "EAN8.jpg",basePath);

  }

 catch (Exception localException) {

  localException.printStackTrace();

 }

  }

 static void saveToJPEG(BufferedImage paramBufferedImage, String paramString,String basePath) {

 saveToFile(paramBufferedImage, paramString, "jpeg",basePath);

  }

 static void saveToFile(BufferedImage paramBufferedImage, String paramString1, String paramString2,String basePath) {

 try {

  FileOutputStream localFileOutputStream = new FileOutputStream(basePath+"resources/images/" + paramString1);

  ImageUtil.encodeAndWrite(paramBufferedImage, paramString2, localFileOutputStream, 96, 96);

  localFileOutputStream.close();

 }

 catch (Exception localException) {

  localException.printStackTrace();

 }}

 因为maven库里面没有这个依赖,所以通过在webapp/WEB-INF/lib/下面存放jar包并在pom.xml里面引入

 <dependency>

  <groupId>com.jbar</groupId>

 <artifactId>jbarcode</artifactId>

  <version>0.2.8</version>

 <scope>system</scope>

 <systemPath>

  ${project.basedir}/src/main/webapp/WEB-INF/lib/jbarcode-0.2.8.jar

 </systemPath>

 </dependency>

 1.3. 附件(源码)

 pdf预览实践源码.zip

 2. 实现效果和注意点 2.1. 实现效果

 2.2. 注意点 1.引用文件的路径 这边引用的是tomcat运行的实际路径

  String basePath = request.getSession().getServletContext()

  .getRealPath("/"); 2.ftl模板要严格的按照html格式,要不然会出现各种报错,中文字体要用font-family修饰,要不然html转pdf文件的时候会出现中文丢失。

 3. 未结与已结问

  未结问题 序号 问题 解决方案 负责人 目标日期 实际日期

  已结问题

 序号 问题 解决方案 负责人 目标日期 实际日期

推荐访问:预览 框架 开发
上一篇:碳排放管理云平台设计与开发招标文件
下一篇:全网邮政局长事迹材料

Copyright @ 2013 - 2018 蓬莱范文网_工作总结_公文写作_免费文档下载 All Rights Reserved

蓬莱范文网_工作总结_公文写作_免费文档下载 版权所有 湘ICP备11019447号-75