前言

网上搜了一堆如何把打印的纸张横向,发现颇为花费时间,特再次记录一下

解决办法

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打印相关推荐

  1. Java实现PDF打印的解决方案

    1.Java Print Service Java Print Service是Java自带的打印框架,所在的包javax.print.PrintService;. 实现PDF打印的代码流程如下 // ...

  2. Java 创建PDF打印小册子

    概述 PDF打印小册子是指将PDF格式文档在打印成刊物前需要提前进行的页面排版,以便在打印后装订成册.下面以Java代码展示如何来实现.这里调用Free Spire.PDF for Java中的Pdf ...

  3. adobe reader java_使用Adobe Reader控件结合Java实现PDF打印功能

    1.在页面引入控件,控件依赖任何第三方js库: classid="clsid:CA8A9780-280D-11CF-A24D-444553540000"> value=&qu ...

  4. 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 ...

  5. java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板

    最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...

  6. java实现保存合同模板_java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板...

    最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...

  7. c++ byte转cbitmap_关于 C++ 打印 PDF 打印及 PDF 转图片、合并

    关于 C++ 打印 PDF 打印及 PDF 转图片.合并 原文: http://www.aqcoder.com/post/42 pdf(Portable Document Format 的简称,意为& ...

  8. JAVA在PDF指定位置赋值

    为什么80%的码农都做不了架构师?>>>    大家肯定做过  根据一个模版往里面填值然后生成新的PDF打印的工作,还不会的同志们注意啦! 首先用world画好模版,给需要填值的地方 ...

  9. java调adobe打印_Java报表工具打印方案集锦 | 改变自己

    本文试图对市面上流行的纯java实现的web报表工具,jasperreport . stylereport .杰表.润乾报表.快逸.finererport为例,分析各报表工具采用的web打印技术的异同 ...

  10. java 操作 PDF

    近来收到一个需求, 制作 PDF 制作发票. 类似于制作这样的发票 技术选型我选择java 在网上寻找了一些操作PDF的框架决定用iText制作, 因为它比较活跃, 而且后期做签章和插入图片二维码都有 ...

最新文章

  1. 如何在Ubuntu 20.04上设置Python虚拟环境
  2. 30秒的PHP代码片段(3)字符串-String 函数-Function
  3. for vue 一行2列_vue常见面试题汇总
  4. 运行效果演示-修改applcation-db.xml 文件
  5. 全款房抵押贷款利息和抵押率各是多少?
  6. 网络知识:交换机中的半双工与全双工知识笔记
  7. Spring Data JPA的持久层
  8. 解决eclipse刚启动卡死的问题~~~亲测有效~~
  9. c语言程序设计 第三版 哈工大,c语言程序设计 哈工大 苏小红 第三章习题
  10. 结构化数据抽取成三元组_干货丨AI在数据防泄漏中的应用——知识图谱之知识抽取...
  11. Rabbitmq 1.消息如何保障 100%投递成功?
  12. Surface Pro电磁笔故障
  13. SQLServer 批量插入数据的两种方法
  14. 每日学习之 2016.07.27
  15. 揭秘2017双11背后的网络-双11的网络产品和技术概览
  16. IOS 中的Notification 学习
  17. java socket php_Web架构(二)PHP Socket与Java ServerSocket交互
  18. latex模板——计算机学报
  19. DeepStream:下一代智慧城市的视频分析
  20. matlab中 .name,matlab中propertyname都有什么

热门文章

  1. Can you answer these queries? HDU 4027 线段树
  2. 设计模式和java实现
  3. Pandas DataFrame merge join concat append combin_first 使用demo
  4. CF995C Leaving the Bar
  5. 前端逼死强迫症系列之javascript
  6. 关于TCP/UDP缓存
  7. 大话设计模式之----状态模式
  8. Sqlserver 2005备份与还原
  9. asp.net使用Mysql乱码处理
  10. linux 进程 堆大小,Linux进程的默认分配堆大小