1. public static void main(String[] args) throws IOException
  2. {
  3. /**
  4. * PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常
  5. */
  6. PDDocument doc;
  7. try
  8. {
  9. String inputFile = "F:\\java56班\\eclipse-SDK-4.2-win32\\iText入门基础教程[2].pdf";
  10. String imagepath = "F:\\java56班\\eclipse-SDK-4.2-win32\\img\\";
  11. doc = PDDocument.load(inputFile);
  12. List pages = doc.getDocumentCatalog().getAllPages();
  13. if (pages.size() > )
  14. {
  15. for (int i = ; i < pages.size(); i++)
  16. {
  17. PDPage page = (PDPage) pages.get(i);
  18. BufferedImage image = page.convertToImage();
  19. File file = new File(imagepath + "pdf_to_jpg_test_" + i + ".jpg");
  20. ImageIO.write(image, "jpg", file);
  21. }
  22. }
  23. } catch (IOException e)
  24. {
  25. e.printStackTrace();
  26. }
  27.  
  28. }

PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常

  1. package demo2;
  2.  
  3. /**
  4. * authory kingviker
  5. * time : 2012-12-12
  6. */
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9.  
  10. import com.itextpdf.text.DocumentException;
  11. import com.itextpdf.text.Font;
  12. import com.itextpdf.text.Image;
  13. import com.itextpdf.text.pdf.BaseFont;
  14. import com.itextpdf.text.pdf.PdfArray;
  15. import com.itextpdf.text.pdf.PdfContentByte;
  16. import com.itextpdf.text.pdf.PdfDictionary;
  17. import com.itextpdf.text.pdf.PdfName;
  18. import com.itextpdf.text.pdf.PdfObject;
  19. import com.itextpdf.text.pdf.PdfReader;
  20. import com.itextpdf.text.pdf.PdfStamper;
  21.  
  22. public class AddContentToPDF {
  23.  
  24. //http://summerbell.iteye.com/blog/366720
  25.  
  26. //http://www.cnblogs.com/lqminn/archive/2012/12/11/2813832.html
  27. public static void main(String[] args) throws IOException, DocumentException {
  28.  
  29. String resource_jpg = "F:\\java56班\\eclipse-SDK-4.2-win32\\1.jpg";//
  30. String result = "F:\\java56班\\eclipse-SDK-4.2-win32\\陈师曾印谱.pdf";
  31. String result2 = "F:\\java56班\\eclipse-SDK-4.2-win32\\pdfiText2.pdf";
  32. //创建一个pdf读入流
  33. PdfReader reader = new PdfReader(result);
  34. //根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.
  35. PdfStamper stamper = new PdfStamper(reader,
  36. new FileOutputStream(result2));
  37.  
  38. //这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题.
  39.  
  40. //http://summerbell.iteye.com/blog/366720
  41. BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // set font
  42. //baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
  43. Font font = new Font(bf,);
  44. font.setStyle(Font.BOLD);
  45. font.getBaseFont();
  46. //页数是从1开始的
  47. for (int i=; i<=reader.getNumberOfPages(); i++){
  48.  
  49. //获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
  50. PdfContentByte over = stamper.getOverContent(i);
  51. //用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.
  52. PdfDictionary p = reader.getPageN(i);
  53. //拿到mediaBox 里面放着该页pdf的大小信息.
  54. PdfObject po = p.get(new PdfName("MediaBox"));
  55. System.out.println(po.isArray());
  56. //po是一个数组对象.里面包含了该页pdf的坐标轴范围.
  57. PdfArray pa = (PdfArray) po;
  58. System.out.println(pa.size());
  59. //看看y轴的最大值.
  60. System.out.println(pa.getAsNumber(pa.size()-));
  61. //开始写入文本
  62. over.beginText();
  63. //设置字体和大小
  64. over.setFontAndSize(font.getBaseFont(), );
  65. //设置字体的输出位置
  66. over.setTextMatrix(, );
  67. //要输出的text
  68. String text = "使用时需要在系统的环境变量Path中加入iText的路劲,在程序中就可以使用了" +
  69. "用iText生成PDF文档需要5个步骤:";
  70. over.showText("我要加[终稿]字样 " + i);
  71. over.endText();
  72. //创建一个image对象.
  73. Image image = Image.getInstance(resource_jpg);
  74. //设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值
  75. image.setAbsolutePosition(,pa.getAsNumber(pa.size()-).floatValue()-);//0, 0, 841.92, 595.32
  76. over.addImage(image);
  77.  
  78. //画一个圈.
  79. over.setRGBColorStroke(0xFF, 0x00, 0x00);
  80. over.setLineWidth(5f);
  81. over.ellipse(, , , );
  82. over.stroke();
  83. }
  84.  
  85. stamper.close();
  86.  
  87. }
  88. }

【PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常】的更多相关文章

  1. 【小窍门】cmd控制台无法输入中文(日文),输出非英文字符都是问号解决办法,中文都是问号解决办法

    在网上复制了一段代码,里面含有中文,而自己电脑本身系统是英文 win8/win10, 在VS 里debug之后输出后,中文都是问号.并不是乱码什么的. 奇怪了. 打开cmd,输入日文的时候,显示IME ...

  2. Lodop导出图片,导出单页内容的图片

    用如下语句设置图片的格式,设置导出的图片初识的默认名称,Lodop可以把打印内容导出成图片. LODOP.SET_SAVE_MODE("SAVEAS_IMGFILE_EXENAME" ...

  3. java操作pdf添加页眉条码添加水印图片

    添加条码页眉以及图片水印 1. 引入jar包     1. itext-4.2.1.jar     2. itext-asian-5.2.0.jar     3. jbarcode-0.2.8.jar ...

  4. 高效开发 Web 单页应用解决方案

    于 2017 年初,有在 Github 建立并维护一个项目:Vue Boilerplate Template,欲成就一款开箱即用 Vue + Webpack 的脚手架模版:其目标与宗旨是:根据以往经验 ...

  5. word文档转pdf,支持.doc和.docx,另附抽取pdf指定页数的方法

    公司有个需求,需要将word转成pdf并且抽取首页用以展示,word文档有需要兼容.doc和.docx两种文档格式.其中.docx通过poi直接就可以将word转成pdf,.doc则无法这样实现,上网 ...

  6. 【初恋】vue单页应用开发总结

    vue新人,没有高级技巧 本文主要总结了使用vue-cli脚手架安装开发环境,使用vue.js等进行单页应用开发所遇问题的总结. 技术栈: Vue v1.0.21, vue-resource v0.9 ...

  7. 【读书笔记《Bootstrap 实战》】6.单页营销网站

    我们已经掌握了很多实用 Bootstrap  的重要技能.现在,是时候拿出更多的创意来帮助客户实现他们全方位在线营销的愿望了.此次将带领大家做一个漂亮的单页高端营销网站. 主要任务如下: □ 一个大型 ...

  8. Node.js + React + MongoDB 实现 TodoList 单页应用

    之前用 Ant Design 开发了一个项目,因此对 React 的特性有了一定的了解,React 使用封装组件的思想,组件各自维护自己的状态和 UI, 组件之间通过 props 传递数据和方法.当状 ...

  9. layuiAdmin pro v1.x 【单页版】开发者文档

    layuiAdmin std v1.x [iframe版]开发者文档 题外 该文档适用于 layuiAdmin 专业版(单页面),阅读之前请务必确认是否与你使用的版本对应. 熟练掌握 layuiAdm ...

随机推荐

  1. a标签包含块级元素问题

    a标签包含块级元素是不符合W3c标准的,但是淘宝也有这样的布局暂且认为可以这样(有时候布局需要这样写) 当a标签包含了div这样的块级元素时a标签是要转换成块级元素的使用display:block.但 ...

  2. beginBackgroundTaskWithExpirationHandle

    [[UIApllication sharedApplication] beginBackgroundTaskWithExpirationHandle:^{}];这个方法在app进入后台时,可以做一些事 ...

  3. dist-upgrade

    http://www.linuxserve.com/2015/06/how-to-enable-automatic-login-on-debian.html http://www.cyberciti. ...

  4. UIKit继承结构和UIView.h文件详解

    @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem> ...

  5. NEU OJ 1649 GMZ’s Pretty Number

    先来一次线性素数筛,把1到10000000的素数都筛选出来,然后暴力跑一遍所有可能的值,打个表,查询的时候o(1)效率出解. #include<cstdio> #include<cs ...

  6. WebService测试方案

    1.WebService简介 WebService是一种革命性的分布式计算技术,本质上就是网络上可用的API,可以直接在网络环境调用的方法. WebService常用的框架有axis.xfire.cx ...

  7. MySQL安装--ubuntu

    1. 执行命令: $ apt-get install mysql-server 执行上述命令会自动安装mysql-client,mysql-common等包. 2. 安装过程中会让你给root账号设置 ...

  8. 新随笔ps泡泡制作

    http://jingyan.baidu.com/article/4d58d5413568a79dd4e9c016.html

  9. Entity Framework技巧系列之十 - Tip 37 - 41

    提示37. 怎样进行按条件包含(Conditional Include) 问题 几天前有人在StackOverflow上询问怎样进行按条件包含. 他们打算查询一些实体(比方说Movies),并且希望预 ...

  10. LeetCode OJ 111. Minimum Depth of Binary Tree

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...