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

时间:2021-11-14 04:20:16
 public static void main(String[] args) throws IOException
{
/**
* PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常
*/
PDDocument doc;
try
{
String inputFile = "F:\\java56班\\eclipse-SDK-4.2-win32\\iText入门基础教程[2].pdf";
String imagepath = "F:\\java56班\\eclipse-SDK-4.2-win32\\img\\";
doc = PDDocument.load(inputFile);
List pages = doc.getDocumentCatalog().getAllPages();
if (pages.size() > )
{
for (int i = ; i < pages.size(); i++)
{
PDPage page = (PDPage) pages.get(i);
BufferedImage image = page.convertToImage();
File file = new File(imagepath + "pdf_to_jpg_test_" + i + ".jpg");
ImageIO.write(image, "jpg", file);
}
}
} catch (IOException e)
{
e.printStackTrace();
} }

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

 package demo2;

 /**
* authory kingviker
* time : 2012-12-12
*/
import java.io.FileOutputStream;
import java.io.IOException; import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfArray;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfDictionary;
import com.itextpdf.text.pdf.PdfName;
import com.itextpdf.text.pdf.PdfObject;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper; public class AddContentToPDF { //http://summerbell.iteye.com/blog/366720 //http://www.cnblogs.com/lqminn/archive/2012/12/11/2813832.html
public static void main(String[] args) throws IOException, DocumentException { String resource_jpg = "F:\\java56班\\eclipse-SDK-4.2-win32\\1.jpg";//
String result = "F:\\java56班\\eclipse-SDK-4.2-win32\\陈师曾印谱.pdf";
String result2 = "F:\\java56班\\eclipse-SDK-4.2-win32\\pdfiText2.pdf";
//创建一个pdf读入流
PdfReader reader = new PdfReader(result);
//根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.
PdfStamper stamper = new PdfStamper(reader,
new FileOutputStream(result2)); //这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题. //http://summerbell.iteye.com/blog/366720
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // set font
//baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
Font font = new Font(bf,);
font.setStyle(Font.BOLD);
font.getBaseFont();
//页数是从1开始的
for (int i=; i<=reader.getNumberOfPages(); i++){ //获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
PdfContentByte over = stamper.getOverContent(i);
//用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.
PdfDictionary p = reader.getPageN(i);
//拿到mediaBox 里面放着该页pdf的大小信息.
PdfObject po = p.get(new PdfName("MediaBox"));
System.out.println(po.isArray());
//po是一个数组对象.里面包含了该页pdf的坐标轴范围.
PdfArray pa = (PdfArray) po;
System.out.println(pa.size());
//看看y轴的最大值.
System.out.println(pa.getAsNumber(pa.size()-));
//开始写入文本
over.beginText();
//设置字体和大小
over.setFontAndSize(font.getBaseFont(), );
//设置字体的输出位置
over.setTextMatrix(, );
//要输出的text
String text = "使用时需要在系统的环境变量Path中加入iText的路劲,在程序中就可以使用了" +
"用iText生成PDF文档需要5个步骤:";
over.showText("我要加[终稿]字样 " + i);
over.endText();
//创建一个image对象.
Image image = Image.getInstance(resource_jpg);
//设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值
image.setAbsolutePosition(,pa.getAsNumber(pa.size()-).floatValue()-);//0, 0, 841.92, 595.32
over.addImage(image); //画一个圈.
over.setRGBColorStroke(0xFF, 0x00, 0x00);
over.setLineWidth(5f);
over.ellipse(, , , );
over.stroke();
} stamper.close(); }
}

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

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

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

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

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

  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,支持&period;doc和&period;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&period;单页营销网站

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

  8. Node&period;js &plus; React &plus; MongoDB 实现 TodoList 单页应用

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

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

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

随机推荐

  1. oracle日常——sqlplus客户端登录

    1.进入cmd 2.命令--sqlplus--提示输入帐号与密码 3.进入后,就可以直接键入sql命令 ps.sql命令后面需要添加分号后才可以回车执行

  2. 合同主体列表添加两条合同主体&comma;返回合并支付页面&comma;支付总弹&quot&semi;请选择合同主体&quot&semi;&comma;删除后&comma;竟然还能支付&lpar;改合并支付页面的字段状态&rpar;

    bug描述: 操作步骤:1.进入"商标续展"产品详情页面,点击立即购买(数量设为2),进入合并订单界面,选择合同主体,点击全部,清空所有合同主体2.新建合同主体保存,设置该合同主体 ...

  3. 06Java数组

    动手动脑: import java.io.*; public class QiPan { //定义一个二维数组来充当棋盘 private String[][] board; //定义棋盘的大小 pri ...

  4. 使用CSS设置行间距,字间距&period;

    字间距1.text-indent设置抬头距离css缩进即对,对应div设置css样式text-indent : 20px; 缩进了20px 2.letter-spacing来设置字与字间距_字符间距离 ...

  5. MST&colon;Out of Hay&lpar;POJ 2395&rpar;

    缺乏粮草 题目大意:一群牛要修建一些通道,到各个农场距离总和要最小,求这些通道的最大值 水题了,一个Kruskal搞定 #include <iostream> #include <f ...

  6. log4net使用(winform)

    有时候 会出现错误 :如 log4net 错误 2 未能找到类型或命名空间名称“log4net”(是否缺少 using 指令或程序集引用?) 解决 方法 :http://q.cnblogs.com/q ...

  7. codeforce 421D D&period; Bug in Code

    题目链接: http://codeforces.com/problemset/problem/421/D D. Bug in Code time limit per test 1 secondmemo ...

  8. CSS的权重(转)

    CSS写的渐渐多了,他的权重问题就不得不昂首面对,之前一直得过且过的将就用着,直到最近遇到了几个大坑,一直割刺着我对前端的热情,得了得了,蒙不过去了,就发点时间记下来吧,当然还是一片转载的文章,有时候 ...

  9. 编译android --system&comma;framework

    在你的android 目录下: sudo git clone  https://android.googlesource.com/platform/manifest cd manifest git b ...

  10. 2018&period;08&period;17 洛谷P3135 &lbrack;USACO16JAN&rsqb;堡哞(前缀和处理)

    传送门 有趣的前缀和. 数据范围中的n≤200" role="presentation" style="position: relative;"&gt ...