Freemaker 模板生成html文件带barcode4j条形码并转PDF
来源:互联网 发布:淘宝网睡衣清仓特价 编辑:程序博客网 时间:2024/05/02 01:39
前面野了三篇博客,现在直接结合在一起做一个实例
首先生成条形码并且放入html转换成pdf下载下来,将所有功能集合在一起
1.条形码
String barcode=BarCodeUtil.create39Code(“A123456”);
实现方法
public static String create39Code(String code) { ByteArrayOutputStream baos=new ByteArrayOutputStream(); try { // Create the barcode bean Code39Bean bean = new Code39Bean(); final int dpi = 140; // Configure the barcode generator bean.setModuleWidth(UnitConv.in2mm(1.0f / 140)); // makes the narrow bean.setHeight(13); bean.setWideFactor(3);// width exactly one pixel bean.doQuietZone(false); bean.setQuietZone(2);// 两边空白区 // bean.setMsgPosition(HumanReadablePlacement.HRP_NONE); bean.setFontSize(5); bean.setDisplayStartStop(true); // Set up the canvas provider for monochrome JPEG output BitmapCanvasProvider canvas = new BitmapCanvasProvider(baos, "image/png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0); // Generate the barcode bean.generateBarcode(canvas, code); // Signal end of generation canvas.finish(); } catch (Exception e) { logger.error("单号:{}生成条形码出错",code,e); } String base64Img=Base64.byteArrayToBase64(baos.toByteArray()); return base64Img; }
2.模板赋值
String html=FreemarkerUtil.getHtml(String base64Img);
实现方法:
public static String getHtml(String base64Img) throws Exception { // 创建插值的Map Map<String, Object> map = new HashMap<String, Object>(); map.put("users", base64Img); StringWriter stringWriter = new StringWriter(); BufferedWriter writer = new BufferedWriter(stringWriter); template.setEncoding("UTF-8"); // 执行插值,并输出到指定的输出流中 template.process(map, writer); String html = stringWriter.toString(); writer.flush(); writer.close(); return html; }
3.模板转PDF
ByteArrayOutputStream baos=FlyingSuacerUtil.htmlToPdf(String html);
实现方法:
public class FlyingSuacerUtil { public static ByteArrayOutputStream htmlToPdf(String html) throws Exception { ByteArrayOutputStream baos=new ByteArrayOutputStream(); ITextRenderer renderer = new ITextRenderer(); renderer.setDocumentFromString(html); // 解决中文支持问题 ITextFontResolver fontResolver = renderer.getFontResolver(); String env=SystemConstant.getProperty("spring.profiles.active"); String os = System.getProperty("os.name"); String fontPath=SystemConstant.getProperty("font.simsun.path"); if(env.equals(Constants.ENV_DEVELOPMENT)&&os.startsWith(Constants.OS_WINDOWS)){ fontResolver.addFont("C:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); }else{ fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); } renderer.layout(); renderer.createPDF(baos); return baos; }
最后是PDF输出流,将输出流传人PDF文件就好了。
public static void download(HttpServletResponse response, ByteArrayOutputStream baos, String fileName) throws IOException { response.setHeader("Content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data"); response.setHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"ISO-8859-1")); response.addHeader("Content-Length", String.valueOf(baos.size())); OutputStream os = response.getOutputStream(); os.write(baos.toByteArray()); os.close(); baos.close(); }
或者:
File outFile = new File("D:\\index.pdf"); try { outFile.createNewFile(); OutputStream os = new FileOutputStream(outFile); os.write(baos.toByteArray()); } catch (Exception e) { e.printStackTrace(); } finally { os.flush(); os.close(); } }
0 0
- Freemaker 模板生成html文件带barcode4j条形码并转PDF
- 使用freemaker和itext从html模板生成pdf文件
- 使用barcode4j生成条形码
- 利用barcode4j生成条形码
- 使用barcode4j+itextpdf把条形码写入PDF文件
- 网页生成pdf文件。(html转pdf)(带效果图)
- 用java生成条形码,barcode4j
- java利用barcode4j生成条形码
- Java条形码生成技术-Barcode4j
- Java条形码生成技术-Barcode4j
- java根据模板生成pdf文件并导出(转)
- 用java生成条形码,barcode4j得应用
- android 实现条形码生成技术-Barcode4j、zxing
- java根据模板生成pdf文件并导出
- js实现html下载到本地并生成pdf文件
- SpringMVC实例-HTML代码生成PDF文件并下载
- HTML文件模板替换到转换PDF文件并下载PDF文件
- [JAVA]利用google的barcode4j生成二维码和条形码
- poj 2299 线段树
- 用Maven创建第一个web项目
- IT职业技能图谱:IT工程师学习路线
- 无GPU,ubuntu14.04安装caffe及解决问题
- Golang实现静态服务器详解
- Freemaker 模板生成html文件带barcode4j条形码并转PDF
- 九个uname命令获取Linux系统详情的实例
- Java 使用 Redis
- 关于解决多台服务器间的文件实时同步问题
- HTTP的通信的 发送请求、接收响应 包含哪些内容?OC中是怎样实现的?
- 关于linux下时间延迟函数精度问题
- Cocoa pods最快最新的安装方法
- Activity中的四种启动模式
- 正则表达式-转义字符