在Java中建设PDF:iText JAR
副标题#e#
iText是一个免费的Java-PDF库,通过它可以实现on the fly(动态的)建设PDF。iText是那些需要动态PDF文档生成或操纵成果来改造应用措施的开拓者的抱负选择。iText不是一个用户终端东西,也就是说你不消像利用Acrobat或其它PDF东西那样,只需要把iText内建到本身的措施中,它就可以自动的完成PDF生成和操纵。
iText具有如下成果:
◆将PDF传输到欣赏器
◆通过XML文件或数据库来生成动态文档
◆支持浩瀚的PDF交互成果
◆添加书签、页码和水印等等
◆支解、毗连PDF页面,或对他们举办平移缩放等操纵
◆自动填PDF表格
◆为PDF文件添加数字水印
系统要求
JDK 1.4或更高版本
得到要领
可以在这里下载:http://www.lowagie.com/iText/download.html
焦点文件是:iText-2.1.5.jar
利用iText生成PDF的简朴例子
将itext.jar插手你的class path。并将下边的代码复制到一个叫GeneratePDF.java的文件中,编译并执行,它会在C盘建设一个叫Test.pdf的文件。
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
public class GeneratePDF {
public static void main(String[] args) {
try {
OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));
Document document = new Document();
PdfWriter.getInstance(document, file);
document.open();
document.add(new Paragraph("Hello Kiran"));
document.add(new Paragraph(new Date().toString()));
document.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中我们建设了一个Document类来暗示我们的PDF文档,同时,我们将OutputStream工具通过getInstance()要领把输出流给了OutputStream。因此,在上面的例子中,我们建设了一个用于输出的文件,并把输出导入到这个文件。
#p#副标题#e#
利用OutputStream在HTTP请求中生成PDF
有时我们但愿为网络应用措施插手PDF生乐成能,用户可以通过点击一个生存成PDF文件按钮就可以获得PDF文件,因此需要动态建设PDF并发送到客户端欣赏器。
下面的代码利用了Struts的Action class,个中实现了动态建设PDF并将其发送到欣赏器的成果
package net.viralpatel.struts.helloworld.action;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
/**
* @author KiranRavi_Hegde
*
*/
public class PdfHelloWorldAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Document document = new Document();
try{
response.setContentType("application/pdf");
PdfWriter.getInstance(document, response.getOutputStream());
document.open();
document.add(new Paragraph("Hello Kiran"));
document.add(new Paragraph(new Date().toString()));
}catch(Exception e){
e.printStackTrace();
}
document.close();
return null;
}
}
自习阐明上面的代码,就会发明我们将response.getOutputStream()工具通报给了getInstance()要领。从而iText生成的输出文档就会直接由response输出。同时不要健忘将content type设为application/pdf
配置PDF的属性
生成PDF的同时,也可以配置差异的属性,好比作者名,题目以及文件描写等,下面的代码就生成了一些属性:
document.addAuthor("Kiran Hegde");
document.addCreationDate();
document.addCreator("iText library");
document.addTitle("Hello World PDF");