`
flyeagle
  • 浏览: 213878 次
  • 来自: ...
社区版块
存档分类
最新评论

使用java jacob转换office到pdf

阅读更多

          使用java jacob转换office到pdf,注意事项:

      1.本机需要安装office,或者openoffice(未测试过)

       2.下载最新的jacob的jar,解压后将相关的dll文件拷贝到java/jre/bin目录下.

       3.如果包如下错误:

            no jacob-1.18-x64 in java.library.path  原因可能是找不到相关dll文件,将配套dll文件拷贝到相关使用的jdk/jre/bin目录

 

转换代码(代码来源于互联网,由于时间原因,原创暂时无法考证):

 

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
/**
 * 
* @ClassName: OfficeToPDF
* @Description: 使用jacob转换office为pdf,也可以将txt文件转换为pdf.
* @author ***************
* @date 2015年9月21日 上午11:15:44
*
 */
public class OfficeToPDF {
	 
	 private static final int wdFormatPDF = 17;
	 private static final int xlTypePDF = 0;
	 private static final int ppSaveAsPDF = 32;
	 private static final int msoTrue = -1;
	 private static final int msofalse = 0;
	 
	public static void main(String[] args) {
		convert2PDF("D:\\aaaa.ppt","D:\\bbbbb.pdf");
		
	}
	
    public static boolean convert2PDF(String inputFile, String pdfFile) {
        String suffix =  getFileSufix(inputFile);
        File file = new File(inputFile);
        if(!file.exists()){
            System.out.println("文件不存在!");
            return false;
        }
        if(suffix.equals("pdf")){
            System.out.println("PDF not need to convert!");
            return false;
        }
        if(suffix.equals("doc")||suffix.equals("docx")||suffix.equals("txt")){
            return word2PDF(inputFile,pdfFile);
        }else if(suffix.equals("ppt")||suffix.equals("pptx")){
            return ppt2PDF(inputFile,pdfFile);
        }else if(suffix.equals("xls")||suffix.equals("xlsx")){
            return excel2PDF(inputFile,pdfFile);
        }else{
            System.out.println("文件格式不支持转换!");
            return false;
        }
    }
    
    public static String getFileSufix(String fileName){
        int splitIndex = fileName.lastIndexOf(".");
        return fileName.substring(splitIndex + 1);
    }
    
    /**
     * 
    * @Title: word2PDF
    * @Description: 转换word文档为pdf
    * @param @param inputFile
    * @param @param pdfFile
    * @param @return    设定文件
    * @return boolean    返回类型
    * @throws
     */
    public static boolean word2PDF(String inputFile,String pdfFile){
        try{
        //打开word应用程序
        ActiveXComponent app = new ActiveXComponent("Word.Application");
        //设置word不可见
        app.setProperty("Visible", false);
        //获得word中所有打开的文档,返回Documents对象
        Dispatch docs = app.getProperty("Documents").toDispatch();
        //调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
        Dispatch doc = Dispatch.call(docs,
                                    "Open",
                                    inputFile,
                                    false,
                                    true
                                    ).toDispatch();
        //调用Document对象的SaveAs方法,将文档保存为pdf格式
        /*
        Dispatch.call(doc,
                    "SaveAs",
                    pdfFile,
                    wdFormatPDF     //word保存为pdf格式宏,值为17
                    );
                    */
        Dispatch.call(doc,
                "ExportAsFixedFormat",
                pdfFile,
                wdFormatPDF     //word保存为pdf格式宏,值为17
                );
        //关闭文档
        Dispatch.call(doc, "Close",false);
        //关闭word应用程序
        app.invoke("Quit", 0);
        return true;
    }catch(Exception e){
        return false;
    }
    }
    
    /**
     * 
    * @Title: excel2PDF
    * @Description: 转换excel为PDF
    * @param @param inputFile
    * @param @param pdfFile
    * @param @return    设定文件
    * @return boolean    返回类型
    * @throws
     */
    public static boolean excel2PDF(String inputFile,String pdfFile){
        try{
            ActiveXComponent app = new ActiveXComponent("Excel.Application");
        app.setProperty("Visible", false);
        Dispatch excels = app.getProperty("Workbooks").toDispatch();
        Dispatch excel = Dispatch.call(excels,
                                    "Open",
                                    inputFile,
                                    false,
                                    true
                                    ).toDispatch();
        Dispatch.call(excel,
                    "ExportAsFixedFormat",
                    xlTypePDF,      
                    pdfFile
                    );
        Dispatch.call(excel, "Close",false);
        app.invoke("Quit");
        return true;
    }catch(Exception e){
        return false;
    }
         
    }
    
    /**
     * 
    * @Title: ppt2PDF
    * @Description: 转换ppt为office
    * @param @param inputFile
    * @param @param pdfFile
    * @param @return    设定文件
    * @return boolean    返回类型
    * @throws
     */
    public static boolean ppt2PDF(String inputFile,String pdfFile){
        try{
        ActiveXComponent app = new ActiveXComponent("PowerPoint.Application");
        //app.setProperty("Visible", msofalse);
        Dispatch ppts = app.getProperty("Presentations").toDispatch();
         
        Dispatch ppt = Dispatch.call(ppts,
                                    "Open",
                                    inputFile,
                                    true,//ReadOnly
                                    true,//Untitled指定文件是否有标题
                                    false//WithWindow指定文件是否可见
                                    ).toDispatch();
         
        Dispatch.call(ppt,
                    "SaveAs",
                    pdfFile,
                    ppSaveAsPDF 
                    );
                 
        Dispatch.call(ppt, "Close");
         
        app.invoke("Quit");
        return true;
        }catch(Exception e){
            return false;
        }
     }
}

 

 

分享到:
评论

相关推荐

    使用jacob转换office为PDF

    "使用jacob转换office为PDF"是解决这一问题的一种方法。JACOB(Java COM Bridge)是一个Java库,它允许Java应用程序与COM(Component Object Model)组件进行交互。在这个场景中,JACOB被用来调用Microsoft Office的...

    Java 使用 jacob 将office中 word excel ppt 转成pdf

    资源中包括工具类、jacob.jar和jacob-1.18-x64.dll(64位)、jacob-1.18-x86.dll(32位) 在使用jacob时,我们需要将jacob-1.18-x64.dll或jacob-1.18-x86.dll放到jdk的bin目录下或者jdk/jre的bin目录下才可以使用。

    Jacob Word excel 转PDF 合并PDF文件

    标题提到的"Jacob Word excel 转PDF 合并PDF文件"是指使用Jacob库来将Microsoft Word和Excel文档转换为PDF格式,并进一步合并多个PDF文件。Jacob(Java Advanced COM Bridge)是一个Java库,它允许Java应用程序与...

    java 使用jacob Word转PDF 完美格式

    总结起来,Java通过Jacob库和Microsoft Office的插件实现Word到PDF的转换是一种有效的方法,特别是当需要保持格式一致性时。然而,这种方法需要在运行环境中安装Office,并且可能受到Office版本限制。在实际开发中,...

    java实现office、wps转pdf,pdf转word

    标题“java实现office、wps转pdf,pdf转word”指的是利用Java编程来实现在不同办公文档格式间的转换,特别是从Microsoft Office和WPS格式转换为PDF,以及从PDF反向转换为Word文档。 首先,让我们讨论从Office和WPS...

    Jacob实现word转PDF之格式最美转化

    在这个场景中,我们使用Jacob来实现Word文档到PDF的转换,以保持格式的一致性和美观性。在转换过程中,确保你的计算机上已经安装了Office 2010或更高版本,因为较低版本可能无法支持某些功能,导致转换失败或出现...

    jacob office转pdf

    "jacob office转pdf"这个主题涉及到的是使用Jacob库来实现这样的转换。Jacob是一个Java和COM(Component Object Model)之间桥接的开源库,它允许Java应用程序调用COM组件,从而能够与微软的Office应用程序进行交互...

    java使用jacob将word 转pdf

    下面是一段具体的Java代码示例,用于演示如何使用JACOB将Word文档转换为PDF格式: ```java import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public ...

    java实现office转pdf.zip

    总的来说,使用Java和JACOB库进行Office到PDF的转换,虽然有一些限制,但不失为一种可行的解决方案,尤其适用于那些需要在Java环境中集成Office功能的应用。在实际开发中,还应考虑其他替代方案,如Apache POI、...

    jacob操作word转换成pdf

    在进行Word到PDF的转换之前,确保你已经在JDK的`bin`目录下放置了JACOB所需的DLL文件,通常是`jacob.dll`。这是非常重要的一步,因为这些DLL文件是JACOB与COM组件通信的关键。 接下来,让我们看一个简单的Java代码...

    jacob1.7操作OFFICE转PDF

    在IT行业中,转换Office文档为PDF格式是一种常见的需求,尤其在保证文件格式一致性、便于分享和打印时。"jacob1.7操作OFFICE转PDF"这个主题涉及到一个名为JACOB (Java COM Bridge) 的Java库,它允许Java应用程序与...

    java-office转化为pdf

    本话题主要关注如何使用Java将Microsoft Office格式的文件(如xlsx、docx、pptx)转换为PDF格式。这通常涉及到利用第三方库来实现这样的功能,因为Java标准库并不直接支持这样的转换。 标题中的"java-office转化为...

    Jacob_office_to_pdf

    总的来说,"Jacob_office_to_pdf"项目提供了一个实用的解决方案,它允许开发者用Java编写程序,无须安装额外的软件就能实现Office到PDF的转换。这对于那些需要跨平台或者不希望用户安装额外软件的环境特别有价值。...

    使用jacob转pdf资料

    "使用jacob转pdf资料"这个主题涉及到一个名为jacob的Java库,它允许开发者通过Java代码来调用Microsoft Office或WPS组件,实现各种文档格式之间的转换。 首先,jacob(Java COM Bridge)是一个开源的Java库,它的...

    jacob-1.19-office转pdf所需资源

    该资源在java-web开发在线浏览文档功能中可以用到,该资源可将office文档转换成pdf文档,转换兼容office2003(doc、xls、ppt)和office2007(doc、xlsx、pptx),将该资源解压后,需要将jacob-1.19-x86.dll和jacob-...

    Jcom转换office为pdf

    "Jcom转换office为pdf"这个主题涉及到的是如何使用Java库JCom来实现将Microsoft Office格式的文件(如Word、Excel、PowerPoint)转换成PDF格式。这种转换在多种场景下都是必要的,比如保证文档在不同平台和设备上的...

    Java使用jacob将微软office中word、excel、ppt转成pdf

    摘要:本篇文章主要介绍了使用 Java 语言和 Jacob 库将微软 Office 中的 Word、Excel 和 PPT 文件转换为 PDF 文件。该方法可以满足一定的参考价值,感兴趣的小伙伴可以参考一下。 知识点一:Jacob 库的使用 Jacob ...

    关于jacob的使用解决方案1

    Jacob是一个Java到COM桥接库,允许Java应用程序访问和操作COM组件,如Microsoft Office套件,以便进行文件格式转换等任务。 描述中提到的情况是在Windows 10家庭版x64系统上,开发环境是Eclipse Mars 32位版本,...

    word2pdf的jacob包和word2007转换插件

    总结来说,"word2pdf的jacob包和word2007转换插件"是两种不同的技术手段,用于在Java环境中和Word2007应用中实现Word到PDF的转换。Jacob包借助于Java和COM的桥梁,提供了程序化的转换方法,而转换插件则为用户提供了...

    jacob乱码原因解释

    总结,"jacob乱码原因解释"涉及到的关键知识点包括:文件编码理解,Java I/O操作,Jacob API的正确使用,Office文档元数据处理,字符集兼容性,以及潜在的兼容性问题。理解和解决这些问题对于顺利进行Office到HTML的...

Global site tag (gtag.js) - Google Analytics