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(); }
}