OpenOffice转excel为pdf时出现折行问题(Linux + Windows)

问题: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地址后,发现连接被拒绝了。

解决办法:

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

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

public class ConverterDocument extends OpenOfficeDocumentConverter {...}

更改为继承StreamOpenOfficeDocumentConverter这个类。

public class ConverterDocument extends StreamOpenOfficeDocumentConverter {...}

https://www.oschina.net/question/438301_2143753


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答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等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值