OpenOffice转PDF遇到的问题

原文:https://blog.csdn.net/FANKYIXUN/article/details/80627339 

问题:Java 操作  OpenOffice 将excel 转换为 pdf ,因多列出现折行;
原因:OpenOffice 默认输出为A4 大小,源excel 存在队列,总宽度超出 A4 宽度,所以出现折行;
解决方法:自定义一个类,继承OpenOfficeDocumentConverter 类 重写方法,与 refreshDocument 方法,设置 OpenOffice 输出 pdf 的宽度参数:

Windows系统参考代码如下:

package com.syni.app.utils;
 
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
import com.sun.star.awt.Size;
import com.sun.star.beans.PropertyValue;
import com.sun.star.lang.XComponent;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.view.PaperFormat;
import com.sun.star.view.XPrintable;
 
public class ConverterDocument extends OpenOfficeDocumentConverter {
    public ConverterDocument(OpenOfficeConnection connection) {
        super(connection);
    }
 
    public final static Size A5, A4, A3;
    public final static Size B4, B5, B6;
    public final static Size KaoqinReport;
 
    static {
        A5 = new Size(14800, 21000);
        A4 = new Size(21000, 29700);
        A3 = new Size(29700, 42000);
 
        B4 = new Size(25000, 35300);
        B5 = new Size(17600, 25000);
        B6 = new Size(12500, 17600);
 
        KaoqinReport = new Size(29700, 27940);  //最大限度  宽 1600000
    }
 
 
 
    @Override
    protected void refreshDocument(XComponent document) {
        super.refreshDocument(document);
 
        // The default paper format and orientation is A4 and portrait. To
        // change paper orientation
        // re set page size
        XPrintable xPrintable = (XPrintable) UnoRuntime.queryInterface(XPrintable.class, document);
        PropertyValue[] printerDesc = new PropertyValue[2];
 
        // Paper Orientation
        //  printerDesc[0] = new PropertyValue();
        //  printerDesc[0].Name = "PaperOrientation";
        //  printerDesc[0].Value = PaperOrientation.PORTRAIT;
 
        // Paper Format
        printerDesc[0] = new PropertyValue();
        printerDesc[0].Name = "PaperFormat";
        printerDesc[0].Value = PaperFormat.USER;
 
        // Paper Size
        printerDesc[1] = new PropertyValue();
        printerDesc[1].Name = "PaperSize";
        printerDesc[1].Value = KaoqinReport;
 
        try {
            xPrintable.setPrinter(printerDesc);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
    }
}

问题:把项目打包到Linux服务器上后进行使用,发现转换出来的pdf文件还是会出现折行问题,排查之后发现,由于公司Linux系统没有网络打印机,于是在Windows系统下调用OpenOffice服务,改了本地机器的ip地址后,发现连接被拒绝了。

原因:因为远程服务启动的时候,host=真实的对外IP,有远程协议,这是因调用带有协议的文档操作

解决办法:

    1.因为远程服务启动的时候,host=真实的对外IP,不能写127.0.0.1。改成本地机器的IP地址即可。

    2.更改自定义类ConverterDocument,不再继承OpenOfficeDocumentConverter这个类。改为继承 StreamOpenOfficeDocumentConverter这个类。

public class ConverterDocument extends StreamOpenOfficeDocumentConverter {...}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您好,OpenOffice换为PDF格式问题可能是由于以下原因导致的: 1. OpenOffice版本过旧,不支持PDF格式换。 2. OpenOfficePDF时出现错误,可能是由于文件格式不兼容或文件损坏。 3. OpenOfficePDF时出现错误,可能是由于缺少PDF换插件或插件不兼容。 解决方法: 1. 更新OpenOffice版本,确保支持PDF格式换。 2. 检查文件格式是否兼容,或者尝试重新保存文件。 3. 安装或更新PDF换插件,确保插件与OpenOffice版本兼容。 希望以上信息对您有所帮助。 ### 回答2: OpenOffice是一款功能强大的开源办公软件,用户可以用它来创建、编辑和保存各种文档,如文本文档、电子表格、演示文稿等。但是,在将OpenOffice中的文档保存为PDF格式时,有时会出现一些问题,这与OpenOffice的版本和PDF打印机的设置有关。 首先,要确保使用的OpenOffice版本支持将文档换成PDF格式。在OpenOffice中,用户可以通过“文件”菜单中的“导出为PDF”选项将文档换成PDF格式。如果出现该选项不可用的情况,可能是因为当前安装的OpenOffice版本不支持导出PDF。此时,用户可以在openoffice.org网站上下载适用于自己系统的最新版本进行更新。 第二,要确保已经正确安装了PDF打印机。PDF打印机是一种虚拟打印机,其作用是将打印任务换成PDF格式,并将其保存到指定的位置。用户可以通过在系统设置菜单中添加打印机来安装PDF打印机。在OpenOffice中,用户将文档保存为PDF时,应该选择PDF打印机作为打印机,然后设置相关选项并完成保存。 第三,要注意PDF格式的兼容性问题。在使用OpenOffice保存为PDF时,可能会因为使用了不兼容的字体、图像或特殊符号等导致PDF打印失败。如果出现这种情况,可以考虑将文档中的这些元素换成更常见和通用的格式,或者更换支持的PDF打印机。 总之,OpenOffice换成PDF格式问题需要考虑多个方面因素,包括软件版本、PDF打印机和兼容性等。只有在正确的设置和操作下,才能成功将OpenOffice文档换为高质量的PDF格式文档,以满足我们的需求。 ### 回答3: OpenOffice是一款自由和开源的办公软件,它包含了处理文字、电子表格、演示文稿和数据库的各种应用程序。如果您要与其他人共享文件或保护文件信息,将文件换为PDF格式是一种不错的选择。 打开OpenOffice文件并将其换为PDF格式很简单。只需按照以下步骤操作即可: 1. 打开OpenOffice Writer、Calc或Impress程序,然后打开要换的文件。 2. 单击“文件”菜单,然后单击“导出为PDF”选项。 3. 在“导出为PDF”对话框中,选择您需要的设置,然后单击“导出”按钮。 这些设置包括选择PDF的版本(PDF/A-1等),修改水印、页面大小、页面布局、图像压缩选项和PDF安全性等。 如果您正在使用OpenOffice程序的较早版本,您需要使用PDF导出程序。这个程序与OpenOffice程序一起安装,并将其添加到“文件”菜单中。在PDF导出程序中,您可以设置与“导出为PDF”对话框相同的选项。 总之,如果您需要将OpenOffice文件换为PDF格式,那么利用OpenOffice自带的功能或PDF导出程序,都能满足您的需求。同时,您也可以使用其他PDF换工具来实现这一目标,如Adobe Acrobat等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值