1、PDF文档简介。
2、生成PDF文档的技术基础PDFLib是用于创建PDF文档的开发库,提供了简单易用的API,隐藏了创建PDF的复杂细节且不需要第三方软件的支持。PDFlib程序库包含着各式模块,通过对它们的调用客户可以生成含有文本,矢量图,图象及超文本等的PDF文档。PDFlib可以帮助你完成以下任务,根据用户要求生成文本PDF文档,为数据库生成PDF格式的报表,将图象转换成PDF文档。PDFlib提供了三个系列的软件包:PDFlib,PDFlib+PDI及PDFlibPersonalizationServer(PPS)。简单易用的PDFlib程序接口PDFlib核心是用ANSIC语言编写的。在VB6.0、VC+6.0、Java等程序开发环境中,用户只需通过简单的API就能实现对不同功能模块的调用。
3、生成PDF文档PDFLib是用于创建PDF文档的开发库包括pdflib.cpp、pdflib.h、pdflib.dll、pdflib.lib等文件。建立基于对话框的工程(名为:lflpdf)后,将它们拷贝到工程目录中。生成PDF文档的C+主要程序代码。
【C++库】PDF类库 PoDoFo
http://podofo.sourceforge.net/
PoDoFo 是一个用来 *** 作 PDF 文件格式的 C++ 类库。它还包含一些小工具用来解析、修改和创建 PDF 文档。
Xpdf
http://www.foolabs.com/xpdf/download.html
Xpdf是一个开放源代码的PDF档案浏览器,Xpdf 可解码LZW压缩格式并阅读加密的PDF文件。
PDF生成工具 Poppler
http://poppler.freedesktop.org/
Poppler 是一个用来生成 PDF 的C++类库,从xpdf 继承而来。它使用了很多先进的类库例如 freetype 和 cairois 来达到更好的输出效果,同时也提供了一组命令行工具包。
JagPDF
http://www.jagpdf.com/
JagPDF 提供给 C/C++ 和 Python 编程语言用来生成 PDF 文档的库。
libHaru
http://libharu.org/wiki/Downloads
开源的PDF库
CLibPDF
http://hpux.connect.org.uk/hppd/hpux/Shells/ClibPDF-2.02/
ClibPDF是C函数库,可以直接生成PDF文件, 不需要Adobe Acrobat等工具支持.
------------------------------------------------------------------------
【JAVA库】
PDF *** 作类库 iText
http://www.lowagie.com/iText/
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
PDFBox
http://www.pdfbox.org/
非常强悍的PDF生成和解析Java类库
jpedal
http://www.jpedal.org/
jpedal是开源纯Java的PDF文档解析库,可以用来读取PDF文档中的文字、图形。
JasperReports
http://jasperforge.org/plugins/project/project_home.php?group_id=102
JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其它IDE报表工具一样来制作报表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件输出格式。JasperReports是当前Java开发者最常用的报表工具。
Fourfive
http://sourceforge.net/projects/fourfive
Fourfive是一个领先的开源Web报表解决方案,使用XML作为它的配置文件。支持集群、负载平衡、动态发布、PDF, Excel, LDAP,图表、过滤器、排序、布局定制、门户、JasperReports、Velocity模板、兼容Internet Explorer, Netscape, Mozilla, Opera。
FOP
http://xmlgraphics.apache.org/fop/
FOP是由James Tauber发起的一个开源项目,原先的版本是利用xsl-fo将xml文件转换成pdf文件。但最新的版本它可以将xml文件转换成pdf,mif,pcl,txt等多种格式以及直接输出到打印机,并且支持使用SVG描述图形。
JFreeReport
http://sourceforge.net/projects/jfreereport/
JFreeReport是一个用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印功能并支持输出到打印机和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中。
YaHP
http://www.allcolor.org/YaHPConverter/
YaHP是一个能够把html文档转换成pdf文档的Java开源包。
PDFjet
http://pdfjet.com/os/edition.html
PDFjet是一个用于动态生成PDF文档的Java类库。支持绘制点、线、方框、圆、贝塞尔曲线(Bezier Curves) 、多边形、星形、复杂路径和形状。支持unicode,文本间距调整,嵌入超链接等。它同时有Java和.NET两个版本。
vPDF
http://sourceforge.net/projects/vpdf/
一个将RTF文档转成PDF文档的工具
【.NET组件】
--------------------------------------------------
iTextSharp
http://itextsharp.sourceforge.net/
iTextSharp 是用来生成 PDF 文档的 C# 组件
PDFsharp
http://www.pdfsharp.com/
PDFsharp is a C# library that easily creates PDF documents on the fly. The same GDI+ like drawing routines can be used to create PDF documents, draw on the screen, or send output to any printer. PDFsharp can also modify, merge, and split existing PDF files or incorporate pages from existing PDF files into new PDF documents.
Report.NET
http://report.sourceforge.net/
Report.NET 是一个功能强大且易用的用来生成 PDF 文档的 C# 组件
---------------------------------------------------------------------
【PHP】
Php Pdf Factory
http://sourceforge.net/projects/pdf-factory/
一个PHP的PDF *** 作库。
TCPDF
http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。
HTML2PDF
http://html2fpdf.sourceforge.net/
HTML2PDF能够把一个HTML文本转换成一个打印机友好的PDF文件。这个PHP脚本构建在FPDFPHP脚本之上。
cPdfWriter
http://www.palos.ro/index.php?page=opensource_active
cPdfWriter是一个能够输出PDF文档的PHP5 class。基于TCPDF,FPDF和其它相关脚本。
FPDF
http://www.fpdf.org/
FPDF这个PHP Class允许你采用纯PHP(更确切地说就是不需要使用PDFlib)来生成PDF文件。它所具有的特点包括:可选择的unit大小,页面格式和页边 距;页眉和页脚管理;自动分页;自动换行与文本自动对齐;支持JPEG与PNG图片格式;支持着色和文件超链接;支持TrueType,Type1与 encoding;支持页面压缩。...
------------------------------------------------------------------------
【Python和Ruby】
Prawn
http://prawn.majesticseacreature.com/
Prawn: 用Ruby生成PDF更简捷
ReportLab
http://www.reportlab.org/
Reportlab是用python开发的生成pdf的工具包,它是一个开源软件。
PDF生成工具 pyPdf
PyPDF这是一个用于构建PDF的纯Python工具包
是否可以考虑使用WordDocument.SendFax方法?参考一下这个java的程序,你有一些收获。
java 实现word转为 tif格式??急
1.我用打印的方式没有得到任何文件(用的是虚拟传真打印机)
2.我用JACOB老是缺少组建异常
3.用jawin调用word转为pdf的方法出异常
1.我用打印的方式没有得到任何文件(用的是虚拟传真打印机)
public class Y {
/*打印指定的文件*/
public void printFileAction()
{
//构造一个文件选择器,默认为当前目录
JFileChooser fileChooser = new JFileChooser("c:\\")
int state = fileChooser.showOpenDialog(null)//d出文件选择对话框
if (state == fileChooser.APPROVE_OPTION)//如果用户选定了文件
{
File file = fileChooser.getSelectedFile()//获取选择的文件
//构建打印请求属性集
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet()
//设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE
//查找所有的可用打印服务
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras)
//定位默认的打印服务
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService()
//显示打印对话框
PrintService service = ServiceUI.printDialog(null, 200, 200, printService
, defaultService, flavor, pras)
if (service != null)
{
try
{
DocPrintJob job = service.createPrintJob()//创建打印作业
FileInputStream fis = new FileInputStream(file)//构造待打印的文件流
DocAttributeSet das = new HashDocAttributeSet()
Doc doc = new SimpleDoc(fis, flavor, das)//建立打印文件格式
job.print(doc, pras)//进行文件的打印
}
catch(Exception e)
{
e.printStackTrace()
}
}
}
}
}
2.我用JACOB老是缺少组建异常
package com
import com.jacob.com.*
import com.jacob.activeX.*
public class Dispatch_MSWord {
private ActiveXComponent wordCom=null
private Object wordDoc=null
private final Variant False=new Variant(false)
private final Variant True=new Variant(true)
/**
* 打开word文档
* @param filePath word文档
* @return 返回word文档对象
*/
public boolean openWord(String filePath){
//建立ActiveX部件
wordCom=new ActiveXComponent("Word.Application")
try{
//返回wrdCom.Documents的Dispatch
Object wrdDocs=wordCom.getProperty("Documents").toDispatch()
//调用wrdCom.Documents.Open方法打开指定的word文档,返回wordDoc
wordDoc=Dispatch.invoke((Dispatch) wrdDocs,"Open",Dispatch.Method,new Object[]{filePath},new int[1]).toDispatch()
return true
}
catch(Exception ex){
ex.printStackTrace()
}
return false
}
/**
* 关闭word文档
*/
public void closeWord(){
//关闭word文件
wordCom.invoke("Quit",new Variant[]{})
}
/**
* 打开word,调用word中的宏
* @param filePath word文件路径
* @param macroName 被调用的宏名字
* @param parameter 调用宏的参数数组
*/
public void callWordMacro(String filePath,String macroName,Object parameter[]){
if (!openWord(filePath)){
closeWord()
return
}
else{
//使用方法传入的参数parameter调用word文档中的MyWordMacro宏
Dispatch.invoke((Dispatch)wordDoc,macroName,Dispatch.Method,parameter,new int[1])
closeWord()
}
}
/**
* 打开word,替换其中的文字
* @param filePath word文件路径
* @param sourceStr 源文字
* @param replaceStr 替换后的文字
*/
public void callReplaceWord(String filePath,String sourceStr,String replaceStr){
if (!openWord(filePath)){
closeWord()
return
}
try{
//获得Selection对象
Dispatch selectDoc=wordCom.getProperty("Selection").toDispatch()
//获得Find对象
Dispatch find = Dispatch.call(selectDoc,"Find").toDispatch()
//设置替换的方法属性,但是不支持ReplaceWith的属性,而且使用Replancement.Text属性也无济于事。
Dispatch.put(find,"Text",sourceStr)
//所以使用Find对象的Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)方法
//详细内容见MSDN的office2000开发文档
Variant True=new Variant(true)
Variant False=new Variant(false)
Variant FindText=new Variant(sourceStr)
Variant ReplaceWith=new Variant(replaceStr)
Variant Format=False
Variant Forward=True
Variant MatchCase=True
Variant MatchWholeWord=True
Variant MatchWildcards=False
Variant MatchSoundsLike=False
Variant MatchAllWordForms=False
int wdFindWrap_FindContinue=1
Variant Wrap=new Variant(wdFindWrap_FindContinue)
int wdReplace_ReplaceAll=2
Variant Replace=new Variant(wdReplace_ReplaceAll)
//使用callN方法调用execute方法
Dispatch.callN(find,"Execute",new Variant[]{
FindText, MatchCase, MatchWholeWord, MatchWildcards,
MatchSoundsLike, MatchAllWordForms, Forward, Wrap,
Format, ReplaceWith, Replace
})
Dispatch.invoke((Dispatch) wordDoc,"SaveAs",Dispatch.Method,new Object[]{"c:\\111.doc"},new int[1])
closeWord()
}
catch(Exception ex){
ex.printStackTrace()
}
finally{
closeWord()
}
}
/**
* 将word文档打印为PS文件后,使用Distiller将PS文件转换为PDF文件
* @param sourceFilePath 源文件路径
* @param destinPSFilePath 首先生成的PS文件路径
* @param destinPDFFilePath 生成PDF文件路径
*/
public void docToPDF(String sourceFilePath,String destinPSFilePath,String destinPDFFilePath){
if (!openWord(sourceFilePath)){
closeWord()
return
}
//建立Adobe Distiller的com对象
ActiveXComponent distiller=new ActiveXComponent("PDFDistiller.PDFDistiller.1")
try{
//设置当前使用的打印机,我的Adobe Distiller打印机名字为"Adobe PDF"
wordCom.setProperty("ActivePrinter",new Variant("Adobe PDF"))
//设置printout的参数,将word文档打印为postscript文档。目前只使用了前5个参数,如果要使用更多的话可以参考MSDN的office开发相关api
//是否在后台运行
Variant Background=False
//是否追加打印
Variant Append =False
//打印所有文档
int wdPrintAllDocument=0
Variant Range =new Variant(wdPrintAllDocument)
//输出的postscript文件的路径
Variant OutputFileName =new Variant(destinPSFilePath)
//调用word文档对象的PrintOut方法:将word文档打印为postscript文档,简称ps文档
Dispatch.callN((Dispatch)wordDoc, "PrintOut", new Variant[]{Background,Append,Range,OutputFileName})
System.out.println("由word文档打印为ps文档成功!")
//调用Distiller对象的FileToPDF方法所用的参数,详细内容参考Distiller Api手册
//作为输入的ps文档路径
Variant inputPostScriptFilePath=new Variant(destinPSFilePath)
//作为输出的pdf文档的路径
Variant outputPDFFilePath=new Variant(destinPDFFilePath)
//定义FileToPDF方法要使用adobe pdf设置文件的路径,在这里没有赋值表示并不使用pdf配置文件
Variant PDFOption=new Variant("")
//调用FileToPDF方法将ps文档转换为pdf文档
Dispatch.callN(distiller,"FileToPDF",new Variant[]{inputPostScriptFilePath,outputPDFFilePath,PDFOption})
System.out.println("由ps文档转换为pdf文档成功!")
}
catch(Exception ex){
ex.printStackTrace()
}
finally{
closeWord()
}
}
public static void main(String[] argv){
Dispatch_MSWord d=new Dispatch_MSWord()
//d.callWordMacro("E:/eclipse3.1RC3/workspace/jacobPractice/src/com/bjinfotech/practice/jacob/MacroTest.doc","MyWordMacro",new String[]{"这是调用word宏的测试程序"})
//d.callReplaceWord("E:/eclipse3.1RC3/workspace/jacobPractice/src/com/bjinfotech/practice/jacob/MacroTest.doc","$TITLE$","文字已经被替换")
d.docToPDF("c:\\1.doc","c:\\1p.ps","c:\\1p.pdf")
}
}
供你参考啊
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)