精华内容
下载资源
问答
  • java word转pdf

    2018-09-28 15:45:47
    功能强大,清晰度高,可支持将word或txt转换为pdf,html等十几种文件类型,最常用的可以转为pdf或html实现在线预览功能
  • java word转换pdf

    热门讨论 2013-06-24 08:48:18
    三种java转换word 的方式 1、利用小美的Jacob调用MS Office转换文档为PDF 2、JCom是日本的一个开源项目,可以轻松实现office转换pdf 3、可以利用开源的OpenOffice,这个是linux提供的一个用于office的工具,调用内部...
  • java word转pdf(代码和jar包,使用说明,没有open office 等插件,不存在中文无法出来等现象)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
  • 本资源为java利用aspose工具将word转为pdf需要用到的jar包
  • java编程 word转pdf wordToPdf.java jacob1.9包 包括jacob.jar jacob.dll 要注意jacob.jar jacob.dll要用同一版本的,否则会出错 内含jacob包的导入方式的txt文档
  • java word转pdf、html

    2018-11-16 11:48:48
    利用poi 把office转化为html,利用jacob把office转化为pdf、html
  • java 实现word 转PDF

    2018-04-18 16:13:59
    全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换 ,word转pdf已做测试很好用!
  • java word转pdf,的源代码;包含 jacob.jar、aspectjweaver.jar、poi、dom4j相关包
  • javaword转图片,转pdf,图片转pdf的jar包以及代码
  • Java word转pdf方法

    千次阅读 2020-08-09 19:41:04
    若不是破解版的Jar包,word转pdf之后,pdf中会有水印。可以自己在网上找破解的Jar包资源。 lib:存放Jar包的位置。 source:存放许可文件,格式为xml。 2、在项目resource文件夹下添加license.xml许可文件 <...

    1、引入破解版Aspose Word 18.10 jar
    若不是破解版的Jar包,word转成pdf之后,pdf中会有水印。可以自己在网上找破解的Jar包资源。
    在这里插入图片描述
    lib:存放Jar包的位置。
    source:存放许可文件,格式为xml。

    2、在项目resource文件夹下添加license.xml许可文件

    <License>
      <Data>
        <Products>
          <Product>Aspose.Total for Java</Product>
        </Products>
        <EditionType>Enterprise</EditionType>
        <SubscriptionExpiry>29991231</SubscriptionExpiry>
        <LicenseExpiry>29991231</LicenseExpiry>
        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
      </Data>
      <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
    </License>
    

    2、word转pdf工具类

    import java.io.File;
    import java.io.InputStream;
    import java.io.FileOutputStream;
    
    import com.aspose.words.License;
    import com.aspose.words.Document;
    import com.aspose.words.SaveFormat;
    
    public class WordToPdf {
        public static String convert(String filePath, String fileName, String urlRoot) throws Exception {
            setLicense();
            String name = fileName.substring(0, fileName.lastIndexOf("."));
            String pdfPath = String.format("%s\\%s.pdf", filePath, name);
            String wordPath = String.format("%s\\%s", filePath, fileName);
    
            File file = new File(pdfPath);
            FileOutputStream stream = new FileOutputStream(file);
    
            Document doc = new Document(wordPath);
            doc.save(stream, SaveFormat.PDF);
            stream.close();
    
            String url = String.format("%s\\%s", urlRoot, getRelativePath(pdfPath));
            return Helper.normalizeUrl(url);
        }
    
        private static String getRelativePath(String path) {
            String truncatePath = path.substring(path.lastIndexOf("uploads"));
            return truncatePath.substring(truncatePath.indexOf("\\"));
        }
    
        private static void setLicense() throws Exception {
            InputStream stream = WordToPdf.class.getClassLoader().getResourceAsStream("static/aspose/license.xml");
            License license = new License();
            license.setLicense(stream);
        }
    }
    
    展开全文
  • 主要介绍了java实现word文档转pdf并添加水印的方法,结合实例形式详细分析了java word文档转PDF相关实现技巧与操作注意事项,需要的朋友可以参考下
  • Java实现word转PDF文件

    2018-07-02 19:14:28
    java实现将word文件PDF文件,支持doc后缀文件和docx文件,使用时jar文件手动加入,dll文件copy到jdk的bin目录下。dll文件一定要放到jdk目录下!!!
  • java word转图片,转pdf各种去...........................................................................
  • java 使用jacob Word转PDF 完美格式,包内含有 jacob.jar包,office提供的SaveAsPDFandXPS.exe插件,以及源码、和步骤操作说明书
  • JAVA利用poi完成word转pdf,内容包括两个现成工具类和使用到的所有jar包,易用简单,word转pdf在实际项目中有很多使用,工具类中已经包括了字节流,以及变参的替换
  • 一.jacob 1.jar下载 jacob.jar和jacob-1.17-x64.dll下载 提取码:0121 2.在jdk/bin目录下引入.dll文件(64位:jacob-1.17-x64.dll 32位:jacob-1.17-x86.dll) 3.转换代码 ... ...public class Word2P

    一.jacob
    1.jar下载
    jacob.jar和jacob-1.17-x64.dll下载
    提取码:0121
    2.在jdk/bin目录下引入.dll文件(64位:jacob-1.17-x64.dll 32位:jacob-1.17-x86.dll)
    3.转换代码

    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.Dispatch;
    import java.io.File;
     
     
    public class Word2Pdf {
        public static void main(String args[]) {
            ActiveXComponent app = null;
            String wordFile = "e:/测试word.docx";
            String pdfFile = "e:/测试pdf.pdf";
            System.out.println("开始转换...");
            // 开始时间
            long start = System.currentTimeMillis();
            try {
                // 打开word
                app = new ActiveXComponent("Word.Application");
                // 设置word不可见,很多博客下面这里都写了这一句话,其实是没有必要的,因为默认就是不可见的,如果设置可见就是会打开一个word文档,对于转化为pdf明显是没有必要的
                //app.setProperty("Visible", false);
                // 获得word中所有打开的文档
                Dispatch documents = app.getProperty("Documents").toDispatch();
                System.out.println("打开文件: " + wordFile);
                // 打开文档
                Dispatch document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch();
                // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在
                File target = new File(pdfFile);
                if (target.exists()) {
                    target.delete();
                }
                System.out.println("另存为: " + pdfFile);
                // 另存为,将文档报错为pdf,其中word保存为pdf的格式宏的值是17
                Dispatch.call(document, "SaveAs", pdfFile, 17);
                // 关闭文档
                Dispatch.call(document, "Close", false);
                // 结束时间
                long end = System.currentTimeMillis();
                System.out.println("转换成功,用时:" + (end - start) + "ms");
            }catch(Exception e) {
                e.getMessage();
                System.out.println("转换失败"+e.getMessage());
            }finally {
                // 关闭office
                app.invoke("Quit", 0);
            }
        }
     
     
    } 
    

    注:jacb只能在windows系统使用,linux系统暂时无法解决(windows电脑安装wps office,并且设置wps office为默认启动 。(最好不要使用microsoft word 微软的需要激活,很麻烦,还不成功!)

    2.docx4j
    1.pom

    		<dependency>
                <groupId>org.docx4j</groupId>
                <artifactId>docx4j</artifactId>
                <version>6.0.1</version>
            </dependency>
    
            <!-- 转出pdf需要 -->
            <dependency>
                <groupId>org.docx4j</groupId>
                <artifactId>docx4j-export-fo</artifactId>
                <version>6.1.0</version>
            </dependency>
    

    2.代码

    /*
    * inPath word路径   outPath pdf路径
    */
    public static void doc3pdf(String inPath, String outPath) {
            try {
                WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(inPath));
                Mapper fontMapper = new IdentityPlusMapper();
                PhysicalFont font  = PhysicalFonts.getPhysicalFonts().get("Comic Sans MS");
                fontMapper.put("Calibri", font);
                wordMLPackage.setFontMapper(fontMapper);
    
                OutputStream os = new java.io.FileOutputStream(outPath);
                FOSettings foSettings = Docx4J.createFOSettings();
                foSettings.setWmlPackage(wordMLPackage);
    
                Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);
            } catch (Exception e) {
                e.printStackTrace();
                throw new BDException("word转pdf失败");
            }
        }
    

    3.aspose-words
    1.jar下载
    https://pan.baidu.com/s/1rXnnkYavKr0aR1Lbbg4b-Q
    提取码:0121
    2.将破解文件license.xml放在项目的根目录下
    license.xml内容如下

    <License>
      <Data>
        <Products>
          <Product>Aspose.Total for Java</Product>
          <Product>Aspose.Words for Java</Product>
        </Products>
        <EditionType>Enterprise</EditionType>
        <SubscriptionExpiry>20991231</SubscriptionExpiry>
        <LicenseExpiry>20991231</LicenseExpiry>
        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
      </Data>
      <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
    </License>
    
    

    2.代码
    这是调用word转换

    public static boolean getLicense() {
        	boolean result = false;
            try {
                // license.xml应放在..\WebRoot\WEB-INF\classes路径下
                InputStream is = WordPdfUtil.class.getClassLoader().getResourceAsStream("license.xml");
                License aposeLic = new License();
                aposeLic.setLicense(is);
                result = true;
            } catch (Exception e) {
            	e.printStackTrace();
            }
            return result;
        }
        public static void doc2pdf(String inPath, String outPath) {
            // 验证License 若不验证则转化出的pdf文档会有水印产生
            if (!getLicense()) {
                return;
            }
            try {
                long old = System.currentTimeMillis();
                // 新建一个空白pdf文档
                File file = new File(outPath);
                FileOutputStream os = new FileOutputStream(file);
                // Address是将要被转化的word文档
                Document doc = new Document(inPath);
                // 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
                doc.save(os, SaveFormat.PDF);
                long now = System.currentTimeMillis();
                logger.info(outPath+"生成共耗时:" + ((now - old) / 1000.0) + "秒");
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
                throw new BDException("word转pdf失败");
            }
        }
    

    这是调用wps

    package com.guangyi.project.utils;
    
    import java.io.File;
    import java.util.Date;
    
    import org.apache.log4j.Logger;
    
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;
    
    /***
     * office文件转换为PDF文件
     *
     * @author leo.li
     *
     */
    public class JacobOffice2PdfUtil {
    
        private String office_path = "C:/officeconvert/officefile/";
        private String pdf_path = "C:/officeconvert/pdffile/";
    
        private static final int wdFormatPDF = 17;
        private static final int xlTypePDF = 0;
        private static final int ppSaveAsPDF = 32;
    
        private static Logger logger = Logger.getLogger(JacobOffice2PdfUtil.class);
    
        /**
         * 转换office文件为PDF
         *
         * @param inputFileName
         * @return
         */
        public boolean office2pdf(String inputFileName, String username) {
            String officeUserPath = String.format(office_path + "/%s/%s", username, inputFileName);
            inputFileName = inputFileName.substring(0, inputFileName.lastIndexOf("."));
            String pdfUserPath = String.format(pdf_path + "/%s/%s", username, inputFileName + ".pdf");
    
            int time = convert2PDF(officeUserPath, pdfUserPath);
            boolean result = false;
            if (time == -4) {
                logger.info("转化失败,未知错误...");
            } else if (time == -3) {
                result = true;
                logger.info("原文件就是PDF文件,无需转化...");
            } else if (time == -2) {
                logger.info("转化失败,文件不存在...");
            } else if (time == -1) {
                logger.info("转化失败,请重新尝试...");
            } else if (time < -4) {
                logger.info("转化失败,请重新尝试...");
            } else {
                result = true;
                logger.info("转化成功,用时:  " + time + "s...");
            }
            return result;
        }
    
        /***
         * 判断需要转化文件的类型(Excel、Word、ppt)
         *
         * @param inputFile
         * @param pdfFile
         */
        private int convert2PDF(String inputFile, String pdfFile) {
            String kind = getFileSufix(inputFile);
            File file = new File(inputFile);
            if (!file.exists()) {
                logger.info("文件不存在");
                return -2;
            }
            if (kind.equals("pdf")) {
                logger.info("原文件就是PDF文件");
                return -3;
            }
            if (kind.equals("doc") || kind.equals("docx") || kind.equals("txt")) {
                return word2PDF(inputFile, pdfFile);
            } else if (kind.equals("ppt") || kind.equals("pptx")) {
                return ppt2PDF(inputFile, pdfFile);
            } else if (kind.equals("xls") || kind.equals("xlsx")) {
                return Ex2PDF(inputFile, pdfFile);
            } else {
                return -4;
            }
        }
    
        /***
         * 判断文件类型
         *
         * @param fileName
         * @return
         */
        public static String getFileSufix(String fileName) {
            int splitIndex = fileName.lastIndexOf(".");
            return fileName.substring(splitIndex + 1);
        }
    
        /***
         *
         * Word转PDF
         *
         * @param inputFile
         * @param pdfFile
         * @return
         */
    
        private static int word2PDF(String inputFile, String pdfFile) {
            try {
                // 打开Word应用程序
                ActiveXComponent app = new ActiveXComponent("KWPS.Application");
                logger.info("开始转化Word为PDF...");
                long date = new Date().getTime();
                // 设置Word不可见
                app.setProperty("Visible", new Variant(false));
                // 禁用宏
                app.setProperty("AutomationSecurity", new Variant(3));
                // 获得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
                logger.info(doc);
                // 关闭文档
                long date2 = new Date().getTime();
                int time = (int) ((date2 - date) / 1000);
    
                Dispatch.call(doc, "Close", false);
                // 关闭Word应用程序
                app.invoke("Quit", 0);
                return time;
            } catch (Exception e) {
                // TODO: handle exception
                return -1;
            }
    
        }
    
        /***
         *
         * Excel转化成PDF
         *
         * @param inputFile
         * @param pdfFile
         * @return
         */
        private int Ex2PDF(String inputFile, String pdfFile) {
            try {
                ComThread.InitSTA(true);
                ActiveXComponent ax = new ActiveXComponent("KET.Application");
                logger.info("开始转化Excel为PDF...");
                long date = new Date().getTime();
                ax.setProperty("Visible", false);
                ax.setProperty("AutomationSecurity", new Variant(3)); // 禁用宏
                Dispatch excels = ax.getProperty("Workbooks").toDispatch();
    
                Dispatch excel = Dispatch
                        .invoke(excels, "Open", Dispatch.Method,
                                new Object[] { inputFile, new Variant(false), new Variant(false) }, new int[9])
                        .toDispatch();
                // 转换格式
                Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, new Object[] { new Variant(0), // PDF格式=0
                        pdfFile, new Variant(xlTypePDF) // 0=标准 (生成的PDF图片不会变模糊) 1=最小文件
                        // (生成的PDF图片糊的一塌糊涂)
                }, new int[1]);
    
                // 这里放弃使用SaveAs
                /*
                 * Dispatch.invoke(excel,"SaveAs",Dispatch.Method,new Object[]{ outFile, new
                 * Variant(57), new Variant(false), new Variant(57), new Variant(57), new
                 * Variant(false), new Variant(true), new Variant(57), new Variant(true), new
                 * Variant(true), new Variant(true) },new int[1]);
                 */
                long date2 = new Date().getTime();
                int time = (int) ((date2 - date) / 1000);
                Dispatch.call(excel, "Close", new Variant(false));
    
                if (ax != null) {
                    ax.invoke("Quit", new Variant[] {});
                    ax = null;
                }
                ComThread.Release();
                return time;
            } catch (Exception e) {
                // TODO: handle exception
                return -1;
            }
        }
    
        /***
         * ppt转化成PDF
         *
         * @param inputFile
         * @param pdfFile
         * @return
         */
        private int ppt2PDF(String inputFile, String pdfFile) {
            logger.info("开始转化PPT为PDF...");
            try {
                ComThread.InitSTA(true);
                ActiveXComponent app = new ActiveXComponent("KWPP.Application");
    //            app.setProperty("Visible", false);
                long date = new Date().getTime();
                Dispatch ppts = app.getProperty("Presentations").toDispatch();
                Dispatch ppt = Dispatch.call(ppts, "Open", inputFile, true, // ReadOnly
                        // false, // Untitled指定文件是否有标题
                        false// WithWindow指定文件是否可见
                ).toDispatch();
                Dispatch.invoke(ppt, "SaveAs", Dispatch.Method, new Object[] { pdfFile, new Variant(ppSaveAsPDF) },
                        new int[1]);
                logger.info("PPT");
                Dispatch.call(ppt, "Close");
                long date2 = new Date().getTime();
                int time = (int) ((date2 - date) / 1000);
                app.invoke("Quit");
                return time;
            } catch (Exception e) {
                logger.info(e);
                // TODO: handle exception
                return -1;
            }
        }
    
    
    
        // 删除多余的页,并转换为PDF
        public static void interceptPPT(String inputFile, String pdfFile) {
            ActiveXComponent app = null;
            try {
                ComThread.InitSTA(true);
                app = new ActiveXComponent("KWPP.Application");
                ActiveXComponent presentations = app.getPropertyAsComponent("Presentations");
                ActiveXComponent presentation = presentations.invokeGetComponent("Open", new Variant(inputFile),
                        new Variant(false));
                int count = Dispatch.get(presentations, "Count").getInt();
                System.out.println("打开文档数:" + count);
                ActiveXComponent slides = presentation.getPropertyAsComponent("Slides");
                int slidePages = Dispatch.get(slides, "Count").getInt();
                System.out.println("ppt幻灯片总页数:" + slidePages);
    
                // 总页数的20%取整+1 最多不超过5页
                int target = (int) (slidePages * 0.5) + 1 > 5 ? 5 : (int) (slidePages * 0.5) + 1;
                // 删除指定页数
                while (slidePages > target) {
                    // 选中指定页幻灯片
                    Dispatch slide = Dispatch.call(presentation, "Slides", slidePages).toDispatch();
                    Dispatch.call(slide, "Select");
                    Dispatch.call(slide, "Delete");
                    slidePages--;
                    System.out.println("当前ppt总页数:" + slidePages);
                }
                Dispatch.invoke(presentation, "SaveAs", Dispatch.Method, new Object[] { pdfFile, new Variant(32) },
                        new int[1]);
                Dispatch.call(presentation, "Save");
                Dispatch.call(presentation, "Close");
                presentation = null;
                app.invoke("Quit");
                app = null;
                ComThread.Release();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
            }
        }
    
        public static void main(String[] args) {
            String word = "C:\\Users\\Administrator\\Desktop\\abc.docx";
            String pdf = "C:\\Users\\Administrator\\Desktop\\abc.pdf";
            word2PDF(word,pdf);
        }
    
    
    
    
    }
    

    以上三种方法都可以转换成功

    展开全文
  • Java word转pdf

    2015-10-21 12:37:19
    两种方式的word转pdf说明和源码以及相关jar包,亲测可行,支持各种疑难word
  • word文件转化为pdf格式,用流的形式下载到本地,- --
  • 因使用java语言实现将word转pdf功能,在windows和linux上的实现是不一样的。本代码案例分别介绍了在linux和windows上如何使用java语言实现word转pdf,特别实用,解决了在转换过程中元素缺少(下划线转化成pdf后消失...
  • java word转换成pdf

    2016-09-18 16:17:06
    word转pdf文件
  • 在做这个功能时,使用模板生成word这一步没什么问题遇到了不少坑: ...3. 使用com.spire.doc.Document工具类word转pdf转换成功 附com.spire.doc.Document使用地址 https://www.e-iceblue.cn/Introduce/Fre

    在做这个功能时,使用模板生成word这一步没什么问题遇到了不少坑:
    java生成word https://download.csdn.net/download/qq_25150827/12525020

    1. 使用docx4jword转pdf
      这种复杂的格式有问题
    2. 使用openofficeword转pdf

    这种竖着显示的文字,生成的word格式正确但是生成的pdf显示出错
    3. 使用com.spire.doc.Document工具类word转pdf转换成功
    这次终于完美生成pdf
    附com.spire.doc.Document使用地址 https://www.e-iceblue.cn/Introduce/Free-Spire-Doc-JAVA.html

    展开全文
  • java word pdf ,完美解决。

    万次阅读 2019-07-15 10:02:51
    我没有成功,最红有中文的空白的bug。请参考这个 https://www.cnblogs.com/zhaosq/p/9796255.html 这个解决了! ...以下废弃:》》》》》》》》》》》》》》》》》》》》》》》》》》》》 ...主要借鉴博客园:htt...

    我没有成功,最终有中文的空白的bug。请参考这个

    https://www.cnblogs.com/zhaosq/p/9796255.html

    这个解决了!

     

     

    以下废弃:》》》》》》》》》》》》》》》》》》》》》》》》》》》》

     

     

     

     

    展开全文
  • 最近公司业务需要在pdf中显示表格,但是表格内容列数有点长,导致word转pdf的时候显示不全; 如上图这种显示不全的情况(截图中没有放表格,表格同理一样)。 具体做法:第一、word的模板文件中需要进行设置word...
  • word转pdf字体文件

    2018-12-21 14:33:46
    Java版 poi word转pdf时,服务器上没有字体时,或访问不到字体时,可以自己在resource资源目录下添加此字体
  • Word转PDF-java

    2019-02-20 16:59:00
    java用的Word转PDF工具jar包,
  • 可以实现doc和docx文档pdf,不含水印,转换后的pdf文件比较清晰,感兴趣的朋友可以尝试一下
  • java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)iText-2.0.8.jar core-renderer.jar iTextAsian.jar iTextAsianCmaps.jar jsoup-1.8.1.jar
  • Java实现Word转PDF在试下在线预览功能,包含所需要的jar包和配置说明以及代码实例,直接复制代码就可以运行

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,183
精华内容 12,473
关键字:

javaword转pdf

java 订阅