精华内容
下载资源
问答
  • libreoffice实现word转pdf

    2018-04-03 10:34:21
    使用Libreoffice 完美实现在线word转pdf.支持word和linux两个系统
  • java 对word关键字替换,可替换word表格中的关键字,word转PDF
  • Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式。使用Aspose.Words可以在不使用Microsoft.Word的情况下生成、修改、转换和打印文档。 Aspose word 转换为pdf 排版错位和数据丢失 ...

    简介:
    Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式。使用Aspose.Words可以在不使用Microsoft.Word的情况下生成、修改、转换和打印文档。
    在这里插入图片描述

    Aspose word 转换为pdf 排版错位和数据丢失
    排版错位:

    在使用中发现apose对word文档转换PDF操作中会出现将单页分成两页的情况。仔细分析后发现是因为word文档在编辑的时候是采用的多页编辑。页面效果是单页,可是在apose将word文档转为pdf后就变成了两页。所以要新生成一个word文档并保留原word文档的样式,问题解决。

    try {
        long old = System.currentTimeMillis();
        File file = new File(targetFile);
        FileOutputStream os = new FileOutputStream(file);
        Document doc = new Document(sourcerFile);
        Document document = new Document();//新建一个空白pdf文档
        document.removeAllChildren();
        document.appendDocument(doc, ImportFormatMode.USE_DESTINATION_STYLES);//保留样式
        document.save(os, SaveFormat.PDF);//全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
        os.close();
        long now = System.currentTimeMillis();
        System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");  //转化用时
    } catch (Exception e) {
        e.printStackTrace();
    }
    

    数据丢失:

    在使用中发现apose对word文档转换PDF操作中会出现将页签数据丢失的情况。将问题反复重现后发现是因为word文档的样式无法保存。所以要新生成一个word文档并保留原word文档的样式,问题解决。

    Aspose word 转换为pdf 排版错位和数据丢失
    Aspose word 转换为pdf 排版错位和数据丢失

    try {
        long old = System.currentTimeMillis();
        File file = new File(targetFile);
        FileOutputStream os = new FileOutputStream(file);
        Document doc = new Document(sourcerFile);
        Document document = new Document();//新建一个空白pdf文档
        document.removeAllChildren();
        document.appendDocument(doc, ImportFormatMode.USE_DESTINATION_STYLES);//保留样式
        document.save(os, SaveFormat.PDF);//全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
        os.close();
        long now = System.currentTimeMillis();
        System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");  //转化用时
    } catch (Exception e) {
        e.printStackTrace();
    }
    
    展开全文
  • Word转PDF后,排版错乱怎么办?

    千次阅读 2020-03-06 19:07:21
    有时为了不同场合需求,我们会将Word文档PDF使用,而office软件都能直接将Word另存为PDF的功能,但如果遇到导出的PDF文档对比原Word文档页数增多了,或排版错乱了应该怎么办呢? 解决办法一:善于利用打印预览 ...

    有时为了不同场合需求,我们会将Word文档转成PDF使用,而office软件都能直接将Word另存为PDF的功能,但如果遇到导出的PDF文档对比原Word文档页数增多了,或排版错乱了应该怎么办呢?

    解决办法一:善于利用打印预览

    Word另存为PDF文档后出现与原文档不一致,一般都是表格或图片导致错位引起,所以我们可以在导出之前提前通过打印预览查看转换后的效果。

    首先用极速office打开Word文档(这款office软件打印设置和预览在同一界面,调整过程中可以实时查看效果比较方便),使用快捷键Ctrl+P进入打印页面。

    接着在“边距”的下拉菜单中选择“自定义边距”。
    在这里插入图片描述

    然后在“页面设置”的弹窗中,配合右边的打印预览,合理的进行相应设置和调整。

    最后再回到打印页面,选择“PDF虚拟打印机”开始打印为PDF文档即可。(说明:此前的修改均为打印后效果,如还是选择直接另存为PDF格式,这些修改是没有任何效果的哦)
    在这里插入图片描述

    解决方法二:借助专业软件

    出现这种错乱情况有时也可能是因为不同office软件不兼容,打开文档后显示排版不同,所以我们也可以借助专门的转换软件来处理,避免这种情况的发生。

    打开浏览器搜索Speedpdf后,打开Speedpdf在线转换官网,点击首页推荐中的“Word to pdf”
    在这里插入图片描述

    接着根据页面提示上传需要转换的Word文档后,点击“convert”即可开始转换,转换完成点击下载即可。
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 生成的word格式没有问题,但是在转换为pdf时就出现左右两边没显示完,内容被挤到右边去啦 public static boolean changeWordToPdf(String resourPath,String savePath){ boolean result = true; try { ...
  • } } 5、Excel转换pdf时,由于使用LiberOffice会导致格式错乱,就使用了一个插件,插件jar包与监听文件都在百度网盘的excel转pdf压缩包内,可以使用 import com.aspose.cells.License; import ...

    本人用的时springboot + LiberOffice ,根据需要进行代码调整

    1、所需软件:LiberOffice,可到管网下载,它支持Linux与Owindows系统,挺好用

    官网地址:下载 LibreOffice | LibreOffice 简体中文官方网站 - 自由免费的办公套件

    百度网盘地址:链接:https://pan.baidu.com/s/1R7IV4gSv_Lb8vC0avr3yqA 
                             提取码:x5x9

    2、pom依赖

     <!--office to pdf-->
            <dependency>
                <groupId>org.jodconverter</groupId>
                <artifactId>jodconverter-core</artifactId>
                <version>4.2.2</version>
            </dependency>
            <dependency>
                <groupId>org.jodconverter</groupId>
                <artifactId>jodconverter-spring-boot-starter</artifactId>
                <version>4.2.2</version>
            </dependency>
            <dependency>
                <groupId>org.jodconverter</groupId>
                <artifactId>jodconverter-local</artifactId>
                <version>4.2.2</version>
            </dependency>
            <dependency>
                <groupId>com.aspose</groupId>
                <artifactId>aspose-cells</artifactId>
                <version>8.5.2</version>
            </dependency>

    3、文件配置 

    jodconverter.local.office-home=是liberOffice的安装路径,安装路径要求无空格及中文字符

    jodconverter.local.port-numbers是liberOffice的端口,可自定义

    jodconverter.local.max-tasks-per-process 处理最大线程数,建议不要太大

    jodconverter.local.enabled=true
    jodconverter.local.office-home=D:/LibreOffice
    jodconverter.local.port-numbers=8100
    jodconverter.local.max-tasks-per-process=5

    4、pdf转换方法

    先注入一下

     @Resource
        private DocumentConverter converter;
    
        /**
         * 生成pdf预览文件
         **/
        @Override
        public void createPdf(String docPath,String pdfPath) throws Exception {
            
            File file = new File(docPath);
            InputStream in = new FileInputStream(file);
            String pdfFilePath = pdfPath + XXXXXXXXX + ".pdf";
            switch (suffix) {
                case "xls":
                case "xlsx":
                case "csv":
                    ExcelToPDFUtil.excel2pdf(docPath, pdfFilePath);
                    break;
                case "doc":
                    File pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.DOC).to(pdfOutFile).execute();
                    break;
                case "docx":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.DOCX).to(pdfOutFile).execute();
                    break;
                case "ppt":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.PPT).to(pdfOutFile).execute();
                    break;
                case "pptx":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.PPTX).to(pdfOutFile).execute();
                    break;
                case "txt":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.TXT).to(pdfOutFile).execute();
                    break;
                case "pdf":
                    CopyFileUtil.copyFileToPath(docPath, pdfFilePath);
                    break;
                case "html":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.HTML).to(pdfOutFile).execute();
                    break;
                case "rtf":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.RTF).to(pdfOutFile).execute();
                    break;
                case "swf":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.SWF).to(pdfOutFile).execute();
                    break;
                case "svg":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.SVG).to(pdfOutFile).execute();
                    break;
                case "png":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.PNG).to(pdfOutFile).execute();
                    break;
                case "jpg":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.JPEG).to(pdfOutFile).execute();
                    break;
                case "tif":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.TIFF).to(pdfOutFile).execute();
                    break;
                case "bmp":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.BMP).to(pdfOutFile).execute();
                    break;
                case "gif":
                    pdfOutFile = new File(pdfFilePath);
                    converter.convert(in).as(DefaultDocumentFormatRegistry.GIF).to(pdfOutFile).execute();
                    break;
                default:
                    break;
            }
    
           
        }
    

    5、Excel转换pdf时,由于使用LiberOffice会导致格式错乱,就使用了一个插件,插件jar包与监听文件都在百度网盘的excel转pdf压缩包内,可以使用

    import com.aspose.cells.License;
    import com.aspose.cells.PdfSaveOptions;
    import com.aspose.cells.Workbook;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.Date;
    
    public class ExcelToPDFUtil {
    
        public static void main(String[] args) throws Exception {
    //        String sourceFilePath="d:/文件.xlsx";
    //        String desFilePath="d:/文件.pdf";
    //        excel2pdf(sourceFilePath, desFilePath);
    
        }
    
        /**
         * 获取license 去除水印
         * @return
         */
        public static boolean getLicense() {
            boolean result = false;
            try {
                InputStream is = ExcelToPDFUtil.class.getClassLoader().getResourceAsStream("license/license-excel.xml");
                License aposeLic = new License();
                aposeLic.setLicense(is);
                result = true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        /**
         * excel 转为pdf 输出。
         *
         * @param sourceFilePath  excel文件
         * @param desFilePathd  pad 输出文件目录
         */
        public static void excel2pdf(String sourceFilePath, String desFilePathd ) throws Exception {
            if (!getLicense()) { // 验证License 若不验证则转化出的pdf文档会有水印产生
                return;
            }
            Workbook wb = null;
            FileOutputStream fileOS = null;
            try {
    
                wb = new Workbook(sourceFilePath);// 原始excel路径
                int[] showSheets= new int[wb.getWorksheets().getCount()] ;
                fileOS = new FileOutputStream(desFilePathd);
                PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
                pdfSaveOptions.setOnePagePerSheet(true);
                //当excel中对应的sheet页宽度太大时,在PDF中会拆断并分页。此处等比缩放。
    //            int[] autoDrawSheets={3};
    //            autoDraw(wb,autoDrawSheets);
    
                //根据sheet页进行绘制。
                printSheetPage(wb,showSheets);
                wb.save(fileOS, pdfSaveOptions);
                fileOS.flush();
                fileOS.close();
            } catch (Exception e) {
                e.printStackTrace();
                throw e;
            }finally {
               if(fileOS != null){
                   fileOS.flush();
                   fileOS.close();
                   fileOS = null;
               }
               if(wb != null){
                   wb = null;
               }
            }
        }
    
    
        /**
         * 设置打印的sheet 自动拉伸比例
         * @param wb
         * @param page 自动拉伸的页的sheet数组
         */
        public static void autoDraw(Workbook wb,int[] page){
            if(null!=page&&page.length>0){
                for (int i = 0; i < page.length; i++) {
                    wb.getWorksheets().get(i).getHorizontalPageBreaks().clear();
                    wb.getWorksheets().get(i).getVerticalPageBreaks().clear();
                }
            }
        }
    
    
        /**
         * 隐藏workbook中不需要的sheet页。
         * @param wb
         * @param page 显示页的sheet数组
         */
        public static void printSheetPage(Workbook wb,int[] page){
            for (int i= 1; i < wb.getWorksheets().getCount(); i++)  {
                wb.getWorksheets().get(i).setVisible(false);
            }
            if(null==page||page.length==0){
                wb.getWorksheets().get(0).setVisible(true);
            }else{
                for (int i = 0; i < page.length; i++) {
                    wb.getWorksheets().get(i).setVisible(true);
                }
            }
        }
    
    }
    
    
    

    6、由于pdf不需要转换,直接重写即可

    public class CopyFileUtil {
    
        /**
         * 输入文件路径
         *
         * @param oldPath
         * @param newPath
         * @throws IOException
         */
        public static void copyFileToPath(String oldPath, String newPath) throws IOException {
    //获取要复制的文件
            File oldfile = new File(oldPath);
    //文件输入流,用于读取要复制的文件
            FileInputStream fileInputStream = new FileInputStream(oldfile);
    //要生成的新文件(指定路径如果没有则创建)
            File newfile = new File(newPath);
    //获取父目录
            File fileParent = newfile.getParentFile();
    //判断是否存在
            if (!fileParent.exists()) {
    // 创建父目录文件夹
                fileParent.mkdirs();
            }
    //判断文件是否存在
            if (!newfile.exists()) {
    //创建文件
                newfile.createNewFile();
            }
    
    //新文件输出流
            FileOutputStream fileOutputStream = new FileOutputStream(newfile);
            byte[] buffer = new byte[1024];
            int len;
    //将文件流信息读取文件缓存区,如果读取结果不为-1就代表文件没有读取完毕,反之已经读取完毕
            while ((len = fileInputStream.read(buffer)) != -1) {
                fileOutputStream.write(buffer, 0, len);
                fileOutputStream.flush();
            }
            fileInputStream.close();
            fileOutputStream.close();
    
        }
    
    }

    故此完美转换pdf

    7、在linux下转换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

    展开全文
  • word存在数据库中BLOB类型字段中 然后拿出数据转pdf 就遇到了字段乱码的问题 如下 还有字体变乱问题 刚开始以为是文档格式问题 后面发下有点文档是好的 ,就考虑到是不是字体包问题,本地没有这个字体包 ...
  • 将Visio图片插入word文档之中,然后Acrobat生成pdf文件,发现文字位置错误,如下图 word中原图是这样的: 其实,一般来说,类似的问题可以参考我的前一篇博客的介绍,解决word中visio图转化成pdf后文字变大...
  • Python实现word转pdf

    万次阅读 多人点赞 2019-11-29 18:48:48
    在做word转pdf的功能过程中找了很多java的实现(POI),对于普通的文档还是支持的还可以,但是对于文档里面涉及图片、表格、水印等就会出现很多样式上的问题,字体重复,水印丢失,表格位置错乱等。 1、poi用到的...
  • word转pdf字体格式变乱的问题

    千次阅读 2016-06-23 14:04:00
    完成word转pdf的功能之后,本地测试没问题,然后发布到服务器上,就遇到了字体变乱的问题,如下: 由于我本地发布后导出没有出现同样情况,而服务器和本地的最大区别在于字体库,于是,把服务器上关于需要用的...
  • Java语言实现word转PDF(10分钟解决)

    万次阅读 2018-09-20 16:28:39
    前言: ...关键是做出来的文件格式有各种各样的问题,有时生成的文件打不开,有时文档格式混乱。搞了好几天的需求终于实现了,最后看到效果那一刻。。。唉呀妈呀 脑瓜疼 脑瓜疼 此时就需要另辟新径了...
  • Word批量转Pdf,原生方法,不会出现乱码、方块字,不会错乱。只有工具,无源码。持续改进中
  • 项目中需要实现word转pdf,...但使用wps编辑过的Word文档通过aspose转pdf的时候就出现排版错乱:空行增加,页数增加,45°的水印变为横着。有没有大佬知道怎么解决?</p>
  • 项目中有一个在线上传并预览实验报告的需求,因为项目部署在ubuntu上面,所以借助libreoffice实现word转pdf,然后使用pdf.js在线预览pdf文档.Python里面调用libreoffice转换Word-&gt;pdf的方法:subprocess.call( '...
  • 将windows系统下的中文字体文件(C:\Windows\Fonts),放到/usr/share/fonts下,必须重启openoffice。 转载于:https://www.cnblogs.com/CLAYJJ/p/11247945.html
  • 用Docx4j生成word,然后转换为pdf展示,在前面的博文java docx4j动态生成表格,保存为word,并通过Libreoffice转PDF已经给过较为完美的解决方案,但是实现起来发现有些表格(较长)在转换成pdf格式乱掉。...
  • *、java开发中word转pdf时会出现文本意外换行的错乱排版 问题:文本编辑器的内容是从word中粘贴过来的样式等不兼容导致错乱 猜测:形成pdf时,由于pdf每行的字符数是恒定的,然后当该行的中文字符数、数字字符数...
  • word转pdf时,图片错位,乱跑

    万次阅读 2016-10-19 21:34:01
    参考:word转pdf时,图片错位问题: 在word通过另存为转换pdf时,经常出现图片错误的现象,如何解决呢?方法: 点word-文件-打印-adobe pdf-另存为-桌面,通过这方法打印出的pdf,图片应该不会错位。
  • java word pdf ,完美解决。

    万次阅读 2019-07-15 10:02:51
    我没有成功,最红有中文的空白的bug。请参考这个 https://www.cnblogs.com/zhaosq/p/9796255.html 这个解决了! ...以下废弃:》》》》》》》》》》》》》》》》》》》》》》》》》》》》 ...主要借鉴博客园:htt...
  • 你好,在网上搜索到你的一个帖子,关于 word pdf 使用POI4.1.2时出现异常的解放方案,你的方法是重写 jar包中的 XWPFStylesDocument 类,如何重写,可以提供代码吗?
  • 文章目录 安装 引用依赖 创建操作类 OfficeToPdf 解决中文乱码 注意事项 安装 参考这篇文章:Linux环境下安装... word 格式尽量简单,常规的文字、表格都没问题。在同一页插入多个分节符,可能导致PDF排版错乱
  • java实现word转pdf在线预览格式 前段时间的项目里涉及了此功能,调研过一些方案,踩过一些坑,一一总结在此。 java转pdf的方案很多,但是很多都要收费,转pdf也有一些格式方面的问题。 方案对比: poi格式错乱 ...
  • SpringBoot word文档转pdf

    千次阅读 2020-09-27 18:33:57
    一.背景 项目中有个需求大体意思是,上传一个word模板,根据word模板合成word文件,再将word文件...开源可商用,仅支持docx格式word。 jodconverter+LibreOffice 方案 开源可商用,调用本地office服务,进行pdf转换
  • 写完的文章要PDF的一份,使用Adobe Acrobat 7.0 Professional版,结果中出现这样的问题:word中visio图不能正确的转换,出现的错误主要是visio图中的文字位置和外框错乱了,(我主要是画的流程图)。自己搞了...
  • pdf转word不乱码

    2018-09-25 16:28:16
    当初是学校的pdf文件强行word然后出现各种的排列问题才找到的这个软件,现在是为了多赚一点积分下载优秀文档才上传,真实有效的软件
  • org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion( wordMLPackage); //注释生成pdf 默认的内容 org.docx4j.convert.out.pdf.viaXSLFO.Conversion....
  • Word转PDF表格边框横线丢失

    万次阅读 2019-12-16 08:26:25
    工作环境(蓝色粗体字为特别注意内容)1,系统环境:Win...在处理word文档,将word转为PDF的时候,一般有两种方式:①Word-》打印选择PDF打印机,②直接通过PDF插件转换。下面来简单介绍一下这两种方法。 一、PDF打印...
  • 前几天有粉丝私信转换君说为什么格式转换这么难?每次都要将内容复制过去再...一、Excel转wordExcel转word还是比较简单的,只需先将表格的内容复制下来。然后在Word中按下【Ctrl+Alt+V】,接着选择【Microsoft Exce...
  • 为了显示文件的重要性,正式性,以及因不同电脑打开可能出现的格式错乱等文档兼容问题,我们常常需要将写好的Word文件转换成PDF格式Word转换成PDF其实很简单,安装Office2016及以上版本,直接将Word另存为PDF格式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 498
精华内容 199
关键字:

word转pdf格式错乱