java之pdf打印
前言
网上搜了一堆如何把打印的纸张横向,发现颇为花费时间,特再次记录一下
解决办法
Document pdfDoc = new Document(PageSize.A4.rotate());
说明:加上 rotate()
函数即可
教程
知识点:
1、新建 完整pdf文档
依赖:
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>
上代码:
public ByteArrayOutputStream generatePDF(){Document pdfDoc = new Document(PageSize.A4); //新建 文档ByteArrayOutputStream buffer = new ByteArrayOutputStream(); //新建输出流 PdfWriter writer = PdfWriter.getInstance(pdfDoc, buffer); //实例化 文档写对象,写入到 buffer 输出流中pdfDoc.open(); //打开文档对象pdfDoc.newPage(); //新建一个 Page页面ContentFont cf = new ContentFont(); //新建字体//定义段落Paragraph paraTitle = new Paragraph();paraTitle.setAlignment(Element.ALIGN_CENTER);//设置段落前后间距paraTitle.setSpacingAfter(5);paraTitle.setSpacingBefore(5);//设置缩进paraTitle.setIndentationLeft(50);paraTitle.setIndentationRight(50);paraTitle.setFont(cf.getTitleFont()); //设置字体Chunk chunk = new Chunk(title); //新建行内块元素paraTitle.add(chunk); //将块加入 段落对象Chunk spaceChunk = new Chunk(" ");float f = 100f;spaceChunk.setCharacterSpacing(f); //表示在 块元素之间添加固定距离 的空白paraTitle.add(Chunk.NEWLINE); //表示 换行Image image2 = Image.getInstance(bys); //新建 图片对象image2.setAlignment(Image.MIDDLE| Image.TEXTWRAP); //设置图片垂直居中,文字环绕在图片周围Chunk chunkImage = new (image2,0,0,true); //将图片初始化在块对象paraTitle.add(chunkImage); //将块添加到 段落对象document.add(paraTitle); //将段落 加入到 文档//定义表格对象PdfPTable table = new PdfPTable(4);table.setTotalWidth(400);table.setWidths(new float[] {100,100,100,100});table.setLockedWidth(true);PdfPCell cell; //定义 单元格对象cell = new PdfPCell(new Phrase("标题", cf.getTitleFont())); //初始化,内容与字体cell.setVerticalAlignment(Element.ALIGN_MIDDLE); //设置水平方向cell.setHorizontalAlignment(Element.ALIGN_CENTER); //设置垂直方向cell.setFixedHeight(45); //设置行高cell.setBorder(0); //表示边框宽为 0 ,表示去掉边框cell.setColspan(4); //表示合并行单元格cell.setRowspan(2); //表示合并 列方向的单元格table.addCell(cell); //将单元格加入到表格中/*有的时候,只加了一个单元格对象,生成pdf会报错*/cell = new PdfPCell(new Phrase("内容", cf.getTitleFont())); //初始化,内容与字体cell.setVerticalAlignment(Element.ALIGN_MIDDLE); //设置水平方向cell.setHorizontalAlignment(Element.ALIGN_CENTER); //设置垂直方向cell.setFixedHeight(45); //设置行高cell.setBorder(0); //表示边框宽为 0 ,表示去掉边框cell.setColspan(4); //表示合并行单元格cell.setRowspan(2); //表示合并 列方向的单元格table.addCell(cell); //将单元格加入到表格中pdfDoc.add(table); pdfDoc.close(); //关闭文档对象return buffer;
}
拓展一:将pdf 文件 以压缩包的形式返回
实现方式用 ZipOutputStream
这个类
话不多说,上代码
public void returnZipPackage(){String nameZip = "压缩包.zip";String namez;String userAgent = this.getRequest().getHeader("user-agent").toLowerCase();if(userAgent.contains("mise")||userAgent.contains("like gecko")) {namez = URLEncoder.encode(nameZip,"UTF-8");}else {namez = new String(nameZip.getBytes("UTF-8"),"ISO-8859-1");}this.getResponse().setHeader("Content-Disposition", "attachment;filename="+namez);ZipOutputStream zo = new ZipOutputStream(this.getResponse().getOutputStream());for(int i=0;i<100;i++){zo.putNextEntry(new ZipEntry("demo"+i+".pdf"));int len=0;byte[] buf = new byte[1024];ByteArrayOutputStream buffer = generatePDF(); ByteArrayInputStream inputStream= new ByteArrayInputStream(buffer.toByteArray());while((len=inputStream.read(buf,0,1024))!=-1) {zo.write(buf,0,len);}zo.closeEntry();inputStream.close();}zo.close();}
java之pdf打印相关推荐
- Java实现PDF打印的解决方案
1.Java Print Service Java Print Service是Java自带的打印框架,所在的包javax.print.PrintService;. 实现PDF打印的代码流程如下 // ...
- Java 创建PDF打印小册子
概述 PDF打印小册子是指将PDF格式文档在打印成刊物前需要提前进行的页面排版,以便在打印后装订成册.下面以Java代码展示如何来实现.这里调用Free Spire.PDF for Java中的Pdf ...
- adobe reader java_使用Adobe Reader控件结合Java实现PDF打印功能
1.在页面引入控件,控件依赖任何第三方js库: classid="clsid:CA8A9780-280D-11CF-A24D-444553540000"> value=&qu ...
- java web pdf 打印预览_java原装代码完成pdf在线预览和pdf打印及下载
前提准备: 1. 项目中至少需要引入的jar包,注意版本: a) core-renderer.jar b) freemarker-2.3.16.jar c) iText-2.0.8.jar d) iT ...
- java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板
最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...
- java实现保存合同模板_java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板...
最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...
- c++ byte转cbitmap_关于 C++ 打印 PDF 打印及 PDF 转图片、合并
关于 C++ 打印 PDF 打印及 PDF 转图片.合并 原文: http://www.aqcoder.com/post/42 pdf(Portable Document Format 的简称,意为& ...
- JAVA在PDF指定位置赋值
为什么80%的码农都做不了架构师?>>> 大家肯定做过 根据一个模版往里面填值然后生成新的PDF打印的工作,还不会的同志们注意啦! 首先用world画好模版,给需要填值的地方 ...
- java调adobe打印_Java报表工具打印方案集锦 | 改变自己
本文试图对市面上流行的纯java实现的web报表工具,jasperreport . stylereport .杰表.润乾报表.快逸.finererport为例,分析各报表工具采用的web打印技术的异同 ...
- java 操作 PDF
近来收到一个需求, 制作 PDF 制作发票. 类似于制作这样的发票 技术选型我选择java 在网上寻找了一些操作PDF的框架决定用iText制作, 因为它比较活跃, 而且后期做签章和插入图片二维码都有 ...
最新文章
- 如何在Ubuntu 20.04上设置Python虚拟环境
- 30秒的PHP代码片段(3)字符串-String 函数-Function
- for vue 一行2列_vue常见面试题汇总
- 运行效果演示-修改applcation-db.xml 文件
- 全款房抵押贷款利息和抵押率各是多少?
- 网络知识:交换机中的半双工与全双工知识笔记
- Spring Data JPA的持久层
- 解决eclipse刚启动卡死的问题~~~亲测有效~~
- c语言程序设计 第三版 哈工大,c语言程序设计 哈工大 苏小红 第三章习题
- 结构化数据抽取成三元组_干货丨AI在数据防泄漏中的应用——知识图谱之知识抽取...
- Rabbitmq 1.消息如何保障 100%投递成功?
- Surface Pro电磁笔故障
- SQLServer 批量插入数据的两种方法
- 每日学习之 2016.07.27
- 揭秘2017双11背后的网络-双11的网络产品和技术概览
- IOS 中的Notification 学习
- java socket php_Web架构(二)PHP Socket与Java ServerSocket交互
- latex模板——计算机学报
- DeepStream:下一代智慧城市的视频分析
- matlab中 .name,matlab中propertyname都有什么