使用 OpenOffice.org (便携版) 将 Microsoft Word 文档转换为 PDF 格式






3.67/5 (18投票s)
一篇关于使用 OpenOffice.org 便携版将 Word 文档转换为 PDF 的文章,无需在客户端机器上安装 OpenOffice.org。
目录
引言
本文介绍了一种使用 OpenOffice.org 便携版将 Microsoft Word 文档转换为 PDF 格式的方法。使用 OpenOffice.org 便携版的目的是避免在客户端机器上安装 OpenOffice.org。操作非常简单,我们只需在代码中执行 OpenOffice.org 便携版(就像从命令行运行它一样),并带有一些参数,这些参数指示它运行一个处理转换的宏。
据我所知,CodeProject 上有两篇文章解释了如何进行此转换
前者是一种非常复杂的方法,您必须安装 MS-Office。不过,如果您正在处理 Word 文档,您无论如何都会安装它;后者要求您已安装 OpenOffice.org,这还不错,但我想通过使用 XCopy 样式的方法来避免安装它的任务。
要求
在运行演示或使用代码的应用程序之前,您需要下载并将 OpenOffice.org 便携版解压到应用程序所在的同一目录中。2.0.3 或更高版本应该可以正常工作,因为一个错误已得到修复,并允许我们隐藏运行 OpenOffice.org 便携版。完成此操作后,您需要添加以下宏。
宏
在您解压文件的 OpenOfficePortable\ 目录中执行 OpenOfficePortable.exe;第一次运行时,会出现一个向导。按照说明操作,您无需注册即可使应用程序正常工作。完成此操作后,您应该会看到 OpenOffice.org 主窗口。
选择工具->宏->组织宏->OpenOffice.org Basic
单击“组织者...”然后在“库”选项卡中创建一个新库,命名为“ConversionLibrary”
切换到“模块”选项卡,选择“ConversionLibrary”,然后创建一个名为“PDFConversion”的新模块
完成此操作后,单击“编辑”按钮打开宏编辑器。默认情况下已经有一个名为 Main 的宏。您可以替换它或保留它。将以下代码粘贴到编辑器中,保存并关闭
REM ***** BASIC *****
Sub ConvertWordToPDF( cSourceFile , cDestinationFile)
cURL = ConvertToURL( cSourceFile )
' Open the document.
' Just blindly assume that the document
' is of a type that OOo will
' correctly recognize and open --
' without specifying an import filter.
oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _
Array(MakePropertyValue( "Hidden", True ),) )
cURL = ConvertToURL( cDestinationFile )
' Save the document using a filter.
oDoc.storeToURL( cURL, _
Array(MakePropertyValue( "FilterName", "writer_pdf_Export" ),)
oDoc.close( True )
End Sub
Function MakePropertyValue( Optional cName As String, _
Optional uValue ) As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function
原始宏在 OpenOffice.org 论坛中找到。
我根据我的需要修改了它,您也可以。
现在您应该能够运行演示应用程序或您自己的应用程序了。如果您已经这样做了,您可能会注意到 OpenOffice.org 便携版启动画面。要禁用此行为,请阅读下面的 隐藏 OpenOffice.org 便携版启动画面部分。如果您对库、模块、宏、目录使用了不同的名称
OpenOffice.org 便携版或可执行文件名称;您应该在应用程序配置文件(演示中的 UsingOpenOffice.exe.config)中更改这些值。
注意
如果您在自己的应用程序中使用代码,则必须在 appSettings
部分添加一个带有以下键的应用程序配置文件,否则将抛出异常。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="PortableOpenOfficeDirectory"
value="OpenOfficePortable\"></add>
<add key="PortableOpenOfficeExecutable"
value="OpenOfficePortable.exe"></add>
<add key="PortableOpenOfficeConversionLibrary"
value="ConversionLibrary"></add>
<add key="PortableOpenOfficeConversionModule"
value="PDFConversion"></add>
<add key="PortableOpenOfficeConversionFunction"
value="ConvertWordToPDF"></add>
</appSettings>
</configuration>
隐藏 OpenOffice.org 便携版启动画面
要隐藏 OpenOffice.org 便携版启动画面,请将 OpenOfficePortable\Other\OpenOfficePortableSource 目录中的 OpenOfficePortable.ini 文件复制到
OpenOfficePortable\ 并编辑它,将 DisableSplashScreen=false
的值更改为 DisableSplashScreen=true
。我还将 WaitForOpenOffice=false
的值更改为 WaitForOpenOffice=true
。阅读 OpenOffice.org 便携版的文档以了解更多选项。
[OpenOfficePortable]
OpenOfficeDirectory=App\openoffice
SettingsDirectory=Data\settings
OpenOfficeExecutable=soffice.exe
AdditionalParameters=
WaitForOpenOffice=true
RunDataLocally=false
DisableSplashScreen=true
警告
使用 OpenOffice.org 便携版存在已知问题,您至少应该阅读 本文。如果您可以运行 OpenOffice.org 便携版并手动进行转换,则代码正常运行的可能性更大。
长路径和奇怪字符 - OpenOffice.org 不喜欢从过长的路径运行。因此,虽然它可以直接从桌面运行,但如果将其放在桌面上的子目录中,它可能会因某些文件损坏而失败。OpenOffice.org 也不喜欢路径中的某些字符,例如美元符号。这就是为什么最好将 OpenOfficePortable 目录放在驱动器根目录或驱动器根目录中的 PortableApps 目录中的原因。确切长度正在确定中,启动器的下一个版本将检查此问题。
因此,尽量将您的应用程序或演示放在一个短路径中,以便 OpenOffice.org 便携版路径例如:c:\Program Files\Your Company\Your Program\OpenOfficePortable 可能会正常工作,但如果您尝试类似:C:\Documents and Settings\Your User\My Documents\Visual Studio Projects\Your Project\bin\Debug\OpenOfficePortable 可能会失败。
使用代码
在完成所有必需的操作后——下载 OpenOffice.org 便携版并将其解压到应用程序的同一文件夹中,添加宏并在需要时配置应用程序和 OpenOffice.org 便携版配置文件——您可以通过简单地将 OpenOffice.cs 文件添加到您的项目或添加对 DLL 的引用,然后以下列方式调用它来使用代码
//using PortableOpenOffice;//uncomment this if you added a reference to the dll
OpenOffice.Instance.ConvertToPDF(SourceFileName,DestinationFileName);
兴趣点
尽管本文解释了如何使用 OpenOffice.org 便携版将 Microsoft Word 文档转换为 PDF 格式,但它也可以用于进行许多其他转换。您只需修改此示例中使用的宏。即使不修改宏,您也可以将任何 OpenOffice.org 支持的格式转换为 PDF,因为我们依赖于文档会被 OpenOffice.org 识别并打开(未在宏中指定任何导入过滤器)。
结论
本文介绍了一种将 Microsoft Word 文档转换为 PDF 格式的非常简单的方法。所有实际工作都由 OpenOffice.org 完成,因此请务必访问他们的网站并阅读他们软件的许可。您还应该访问 这个网站,它在制作许多便携式应用程序(以便我们无需安装软件)方面做了大量工作。