场景

批量打印ftp端的PDF文件

思路

将远端的PDF文件读取到本地的临时目录中,合并,再打印合并后的PDF,然后删除临时文件中的PDF文件

导入依赖

itextpdf用于读取远端PDF文件,pdfbox用于合并本地PDF文件

<!-- itextpdf -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency>
<dependency><groupId>com.itextpdf.tool</groupId><artifactId>xmlworker</artifactId><version>5.5.13</version>
</dependency>
<!-- pdfbox -->
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.12</version>
</dependency>

代码实现

工具类

public class PDFUtil {// 将远端PDF下载到本地public static MessageInfo downPfdToLocal(String ftpurl, String localUrl) throws IOException {MessageInfo mi = new MessageInfo();try {PdfReader reader = new PdfReader(ftpurl, "PDF".getBytes());PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(localUrl));PdfDocument document = stamper.getOverContent(1).getPdfDocument();// 纸张大小参数参考 com.itextpdf.text.PageSizeRectangle rectangle = new Rectangle(595.0F, 842.0F);document.setPageSize(rectangle);stamper.flush();stamper.close();reader.close();}catch (Exception e) {e.printStackTrace();}return null;}// 根据文件路径,将文件转为byte[]public static byte[] getBytesByFile(String filePath) {try {File file = new File(filePath);//获取输入流FileInputStream fis = new FileInputStream(file);//新的 byte 数组输出流,缓冲区容量1024byteByteArrayOutputStream bos = new ByteArrayOutputStream(1024);//缓存byte[] b = new byte[1024];int n;while ((n = fis.read(b)) != -1) {bos.write(b, 0, n);}fis.close();//改变为byte[]byte[] data = bos.toByteArray();//bos.close();return data;} catch (Exception e) {e.printStackTrace();}return null;}
}

实现方法

将远端的ftp1.pdf和ftp2.pdf合并下载

public void test() throws IOException, DocumentException, PrinterException {//pdf合并工具类PDFMergerUtility merger = new PDFMergerUtility();String folder = "F:/test";String destinationFileName = "mergedTest.pdf";String targetPdf = folder + File.separator + destinationFileName;String pdf1 = "F:/test/1.pdf";String pdf2 = "F:/test/2.pdf";//删除原文件List list = new ArrayList();PDFUtil.downPfdToLocal("ftp1.pdf",pdf1);PDFUtil.downPfdToLocal("ftp2.pdf",pdf2);merger.addSource("F:/test/test.pdf");merger.addSource("F:/test/test1.pdf");list.add(pdf1);list.add(pdf2);//设置合并生成pdf文件名称merger.setDestinationFileName(targetPdf);list.add(targetPdf);//合并pdfmerger.mergeDocuments(null);// file转Bytes,后续要用到byte[] bytes = PDFUtil.getBytesByFile(targetPdf);PDDocument document = PDDocument.load(bytes);// 加载成打印文件PDFPrintable printable = new PDFPrintable(document);PrinterJob job = PrinterJob.getPrinterJob();job.setPrintable(printable);job.print();//删除原文件for (int j = 0; j < list.size(); j++) {File delfile = new File((String) list.get(j));if(delfile.exists()){delfile.delete();}}
}

设置打印的横向还是纵向

public void test() throws IOException, DocumentException, PrinterException {//pdf合并工具类PDFMergerUtility merger = new PDFMergerUtility();String folder = "F:/test";String destinationFileName = "mergedTest.pdf";String targetPdf = folder + File.separator + destinationFileName;String pdf1 = "F:/test/1.pdf";String pdf2 = "F:/test/2.pdf";//删除原文件List list = new ArrayList();PDFUtil.downPfdToLocal("ftp1.pdf",pdf1);PDFUtil.downPfdToLocal("ftp2.pdf",pdf2);merger.addSource("F:/test/test.pdf");merger.addSource("F:/test/test1.pdf");list.add(pdf1);list.add(pdf2);//设置合并生成pdf文件名称merger.setDestinationFileName(targetPdf);list.add(targetPdf);//合并pdfmerger.mergeDocuments(null);// file转Bytes,后续要用到byte[] bytes = PDFUtil.getBytesByFile(targetPdf);PDDocument document = PDDocument.load(bytes);// 加载成打印文件PDFPrintable printable = new PDFPrintable(document);Book book = new Book();PageFormat pageFormat = new PageFormat();//设置打印方向 PORTRAIT 竖向  REVERSE_LANDSCAPE 横向pageFormat.setOrientation(PageFormat.REVERSE_LANDSCAPE);// 设置纸张book.append(printable, pageFormat, document.getNumberOfPages());PrinterJob job = PrinterJob.getPrinterJob();job.setPageable(book);job.defaultPage();job.print();//删除原文件for (int j = 0; j < list.size(); j++) {File delfile = new File((String) list.get(j));if(delfile.exists()){delfile.delete();}}
}

批量打印远端PDF文件相关推荐

  1. 如何在OS X中打印到PDF文件

    如何在OS X中打印文件到PDF文件? 其实不需要安装任何其他软件,OS X本身支持打印到PDF文件这个功能. 具体操作详见下面文章: Want to save a document or web p ...

  2. PDF虚拟打印机怎么打印成PDF文件

    在日常工作当中我们在处理文件的时候,需要使用打印机将文件打印成pdf文件,可是身边又没有打印机,这时候就需要用到虚拟打印机了,那么PDF虚拟打印机怎么打印成PDF文件呢? 小编在这里给大家介绍PDF虚 ...

  3. CAD图纸如何批量打印?CAD文件批量打印教程

    CAD图纸如何批量打印?CAD图纸作为设计行业当中非常重要的一种图纸文件,经常会被我们拿来使用,如果我们在使用CAD图纸,需要对CAD图纸进行批量打印,那么我们该如何进行批量打印操作?CAD图纸如何批 ...

  4. pdf打印机下载后如何打印成pdf文件

    我们上班的时候,都会用到打印机的,如果我们不方便买打印机的话,可以用虚拟的啊,那么pdf打印机下载后如何打印成pdf文件,别急,我这就告诉你. 1.在百度中去搜索软件关键词迅捷PDF虚拟打印机,然后进 ...

  5. 【Python】pdfminer3k模块批量转换本地PDF文件

    上一篇文章自己研究了一下如何批量将word或者ppt文件转换为PDF文件,但是有时候我们也想要将pdf文件转换为word或者txt文件,方便复制和处理.本文主要通过调用pdfminer3k模块进行处理 ...

  6. 【Python】comtypes模块Windows环境下使用批量转换成PDF文件

    最近在微信看到一篇文章介绍说批量将ppt文件转化为pdf文件,自己尝试了一下,后面想能否自己封装一个类,既能将ppt转换为pdf,而且能够将word转换为pdf,或者其他类型转化为pdf.花了半天时间 ...

  7. python完成文件夹批量word转pdf文件及pdf文件合并+word文件合并

    前言:有同学问我,如何把文件夹中的文件一次性完成打印,由于文件太多,单个打印着实麻烦.这些文件主要有三种类型,分别为PDF,word(.doc和.docx),我决定把他们全部变为PDF文件,然后再合并 ...

  8. excel中html批量转化为pdf文件,如何将大量的Excel转换成PDF?

    大家都知道Excel表,最怕别人修改了,尤其是数据.一旦修改,可能就会有麻烦.那如何是好呢?有一个最简单的办法就是把Excel转换成PDF文件,这样别人只能阅读不能编辑,就不用担心被修改了,哈哈~下面 ...

  9. 用Python+PIL将目录下jpg图像批量转成pdf文件

    一.引言 最近单位有个事,需要将一堆图片文件先转成pdf文件,同事下了个windows下的图形软件,但要一个个转,几百个jpg文件,太过麻烦,因此想用Python批量来做.一查,图像处理库PIL库可以 ...

  10. excel中html批量转化为pdf文件,excel怎么批量转换成pdf格式

    时间:2020-02-10来源:百度经验作者:名字是代称阅读:5 Excel一直以来都是作为表格存入数据作用的,同时编辑数据也非常方便.但是若只用来阅读,却并不方便.而pdf格式很方便阅读,所以有人就 ...

最新文章

  1. C++右值引用 和 std::move()
  2. ACCESS中如何比较日期和时间,使用DateDiff函数
  3. Meanshift图像平滑之opencv实现
  4. 记一次 @Transactional不生效的问题
  5. Nginx反向代理+Go服务实践
  6. OOB与COM交互读写本地文件
  7. html5 渐变色矩形,使用HTML5画布元素的矩形渐变
  8. AI专家一席谈:复用算法、模型、案例,AI Gallery带你快速上手应用开发
  9. DenseNet细节
  10. 海康视频监控解决方案
  11. cmd imp导入dmp文件_dmp文件导入抽取方法(示例代码)
  12. modelica语言学习心得
  13. 大学生php实训总结_php实训报告.doc
  14. This is a CONNECT tunnel, through which encrypted HTTPS traffic flows.
  15. 京东云 linux无法远程,怎样远程登录京东云云主机.pdf
  16. android实现自动评论脚本,自动点击器评论器app下载
  17. 高效的 Linux 限流神器Trickle
  18. 移动无线网卡服务器,贵阳移动无线网卡月租
  19. 【STM32】一次F105 USB OTG驱动填坑记录
  20. Project 2013设置节假日日历

热门文章

  1. 什么叫CDN回源和域名回源,如何采用正确的正确的回源策略
  2. 4010. Problem E:11的倍数
  3. php 相加函数,求和函数是什么
  4. 对于 Latex CJK 的一些解释
  5. android 原生camera——设置模块修改
  6. 汽车洒水器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. fyi 在邮件里是什么意思_FYI的完整形式是什么?
  8. Linux下基于TCP的视频传输(c++ )
  9. vulhub漏洞复现- ActiveMQ 反序列化漏洞(CVE-2015-5254)
  10. Mysql 临时表详解(temporary table)