`
eppen
  • 浏览: 4534 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

用JODConverter和openoffice生成PDF文档时候的PAGESIZE设置问题

阅读更多

生成PDF的方法有很多

其中一个方法就是JODConverterhttp://www.artofsolving.com/opensource/jodconverter和openoffice 来生成。

一般的如何转换这里就不介绍了。可以看看其他文章。例如:http://nopainnogain.iteye.com/blog/819432

这里要说的是如果我们要转换的excel等的纸张大小不是默认的A4的情况下如何处理。

一般转换的时候会有部分代码是下面这样。

  // convert 
  DocumentConverter converter = new OpenOfficeDocumentConverter(connection); 
  converter.convert(inputFile, outputFile); 

用上面的代码转换的时候,

 

无论输入文档的纸张定义成多大,都会被当成默认的A4来进行的转换,转换后的PDF也是A4的。

转换的具体过程,其实跟手动操作是一样的,openoffice打开要转换的文档,再点转换PDF按钮。

打开文档后,默认A4大小,我们调整纸张大小,转换后可以得到希望大小的PDF文件。

经过查看,其实转换PDF时候的参数设置里面并没有设置纸张大小的选择。所以只能从加载文档的地方想办法。

 

查看源代码OpenOfficeDocumentConverter的convert方法的源代码,可以看到其中调用到OpenOfficeDocumentConverter的下面的方法:

 

private void loadAndExport(String inputUrl, Map/*<String,Object>*/ loadProperties, String outputUrl, Map/*<String,Object>*/ storeProperties) 


上面的方法主要三个内容:

 

 

document = loadDocument(inputUrl, loadProperties);
refreshDocument(document);
storeDocument(document, outputUrl, storeProperties);


loadDocument是加载office文档的,通过loadProperties传递的参数。支持的参数都定义在jar包里面的document-formats.xml里面了,没有 纸张设置的参数。

 

我们要做的只能增加几个参数。这个参数的具体内容需要查阅openoffice的文档。

因为loadDocument方法是private的,我们只能想别的办法,好在 refreshDocument不是private

我们可以新建一个class继承OpenOfficeDocumentConverter 并override refreshDocument方法。

 

        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(25400, 27940);
	}

/*
	 * XComponent:xCalcComponent
	 * 
	 * @seecom.artofsolving.jodconverter.openoffice.converter.
	 * AbstractOpenOfficeDocumentConverter
	 * #refreshDocument(com.sun.star.lang.XComponent)
	 */
	@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 (IllegalArgumentException e) {
			e.printStackTrace();
		}

	}



 

如果是excel有多个sheet,上面的部分只会影响第一个sheet,其他sheet还会以A4的大小输出。

 

上面的代码在JODConverter v2.x下面测试通过

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 zhoumiantingyu 2017-12-04  
请问有在linux上进行过测试吗?我在centos6上运行后,还是以A4大小进行的转换

相关推荐

    JODConverter连接OpenOffice服务问题

    在IT领域,文档转换是一项常见的任务,而JODConverter作为一款开源的Java库,广泛用于自动化转换各种文档格式,如.doc、.pdf、.odt等。然而,在实际应用中,正确配置并连接到OpenOffice服务可能会遇到一些挑战。本文...

    jodconverter4.1+ OpenOffice 4.1.5在线预览文档

    "jodconverter4.1+ OpenOffice 4.1.5在线预览文档"是一个针对这一需求的解决方案,它结合了Java技术、Maven构建工具以及开源的OpenOffice软件,实现了高效且灵活的Office文档在线预览功能。 首先,jodconverter是一...

    openoffice转pdf所需jodconverter-2.2.2

    在这种背景下,OpenOffice和JODConverter成为了非常实用的工具,它们能够帮助用户方便地将文档转换为PDF格式。本文将详细介绍OpenOffice与JODConverter的关系,以及如何利用JODConverter 2.2.2版本解决特定的文件...

    jodconverter-2.2.2.zip 利用openoffice word转pdf所需jar

    jodconverter-2.2.2.zip 利用openoffice word转pdf所需jar 使用说明:https://blog.csdn.net/weixin_40845192/article/details/104660387

    liunx平台openoffice下文件转格式jodconverter

    JODConverter是基于OpenOffice的开源文件转换工具,它提供了一个简单而高效的API,使得开发者能够方便地将各种文档格式转换为PDF或其他格式,以满足在线预览的需求。 首先,我们要了解JODConverter的工作原理。...

    jodconverter2.2.2 jar包(openoffice转换docx)

    本文将详细讲解如何使用JODConverter 2.2.2这个Java库来解决OpenOffice转换docx和其他格式的问题。 首先,JODConverter是基于Java的一个开源工具,它利用OpenOffice的API来执行文件转换。由于OpenOffice内部支持...

    openOffice转换工具jodConverter,maven配置及jar包。

    OpenOffice转换工具JODConverter是Java开发者用于文档格式转换的一个利器,它利用OpenOffice的API实现对各种文档格式,如.doc、.docx、.pdf等的相互转换。在这个场景中,我们关注的是如何在Java项目中配置和使用...

    jodconverter-2.2.1.rar

    这个压缩包包含了`jodconverter-2.2.1.jar`和`jodconverter-2.2.1-sources.jar`两个文件,它们是`JodConverter`库的核心组件,用于解决OpenOffice在转换2007及以上版本的Office文档到PDF时遇到的问题,以及处理可能...

    openoffice4+jodconverter2.2.2文档转换事例

    要开始使用OpenOffice 4和JODConverter,首先需要在计算机上安装OpenOffice。下载官方的安装包,按照安装向导进行操作,确保在安装过程中选择“添加到路径”选项,这样可以在命令行中直接调用OpenOffice的命令。 ...

    java+jodconverter-2.2.2.jar以及相关java代码和openoffice服务启动

    JodConverter一个Java的OpenDocument 文件转换器,可以进行...本资源包含了所有的jodconverter及相关jar包以及java代码和openoffice服务器文档,供大家下载使用。 OpenOffice的下载地址:http://www.openoffice.org/

    jodconverter-2.2.2_转pdf.rar

    JodConverter 2.2.2是一款基于Java的开源工具,它专门用于实现这一功能,尤其在2.2.1版本的基础上增加了对docx和xlsx文件到PDF的转换支持,使得其在文档处理方面的能力得到了显著提升。 首先,我们来深入了解...

    利用jodconverter-core-3.0-beta-4实现office转pdf,同时解决excel断裂的问题

    `jodconverter`是一个基于OpenOffice或LibreOffice的Java库,用于将Office文档转换为其他格式,包括PDF。在这个案例中,我们使用的版本是`3.0-beta-4`,它提供了稳定且高效的转换服务。`jodconverter`通过与...

    使用openoffice转换PDF工具类及所有jar包

    本主题聚焦于如何使用OpenOffice库进行PDF转换,特别是在Java环境下。OpenOffice是一款开源的办公软件套件,其提供了API接口,使得开发者能够通过编程方式控制OpenOffice进行文档操作,包括转换为PDF格式。 首先,...

    web项目使用OpenOffice实现前端在线预览office、pdf等文档源码

    本文将深入探讨如何使用OpenOffice技术在Web项目中实现在前端在线预览这些文档。OpenOffice是一款开源的办公软件套件,它提供了一个强大的API,可以用来转换文档格式,使得Web应用程序能够预览和处理非HTML内容。 ...

    jodconverter:JODConverter使用LibreOffice或Apache OpenOffice自动执行文档转换

    文档:JODConverter文档(正在进行中)可在找到。 依存关系: 模块依赖性。 该叉子不依赖SIGAR。 JODConverter仅需要检索办公流程(PID)并杀死办公流程(使用PID)。 在没有SIGAR的情况下,使用从较旧版本的...

    JODConverter2.2.2 文档转换软件

    JODConverter,是一个Java的OpenDocument文件转换器,依赖于OpenOffice.org或者LibreOffice提供的服务来进行转换,它能将Microsoft Office文档(Word,Excel,PowerPoint)转换为PDF格式。

    openoffice完整jar包

    **标题与描述解析** 标题"openoffice完整jar包...总结,通过理解和使用OpenOffice的Java库,结合JODConverter工具,开发者可以构建起一个高效、安全的在线文档预览系统,满足用户在Web环境下预览各种办公文档的需求。

    jodconverter-2.2.2.jar

    确保正确配置OpenOffice的路径和端口设置,以便JodConverter可以找到并与其建立连接。 **使用JodConverter-2.2.2说明.txt** `jodconverter-2.2.2说明.txt` 文件很可能是提供关于如何使用JodConverter的详细指南,...

    java OpenOffice wordExcel转换PDF

    总结起来,"java OpenOffice wordExcel转换PDF"涉及的关键知识点包括Java编程、OpenOffice UNO接口、JODConverter库的使用、OpenOffice/LibreOffice的安装与配置,以及文档转换中的问题排查和性能优化。通过理解和...

    Java用OpenOffice将office转换为PDF

    Java使用OpenOffice转换Office文档为PDF是一种常见的技术需求,尤其在企业级应用中,为了保持一致性和跨平台兼容性,可能会需要将Word、Excel或PowerPoint文档转换为PDF格式。以下将详细介绍如何在Java环境中利用...

Global site tag (gtag.js) - Google Analytics