| 
 完整代码 
在这里贴出“txt转pdf”完整的可运行的示例代码: 
 import java.lang._; import java.io.File; import ooo.connector.BootstrapSocketConnector; import com.sun.star.lang.XComponent; import com.sun.star.uno.XComponentContext; import com.sun.star.uno.UnoRuntime; import com.sun.star.beans.PropertyValue; import com.sun.star.frame.XComponentLoader; import com.sun.star.frame.XStorable; import com.sun.star.util.XCloseable; object AnyToPdf extends Application {   // get the remote office component context   def createContext() : XComponentContext = {     val oooExeFolder = "C:/Program Files/OpenOffice.org 3/program/"     BootstrapSocketConnector.bootstrap(oooExeFolder)   }   def createComponentLoader(context: XComponentContext) : XComponentLoader = {     // get the remote office service manager     val mcf = context.getServiceManager()     val desktop = mcf.createInstanceWithContext("com.sun.star.frame.Desktop", context)     UnoRuntime.queryInterface(classOf[XComponentLoader], desktop)   }   def loadDocument(loader: XComponentLoader, inputFilePath: String) : Object = {     // Preparing properties for loading the document     val propertyValue = new PropertyValue()     propertyValue.Name = "Hidden"     propertyValue.Value = new Boolean(true)     // Composing the URL by replacing all backslashs     val inputFile = new File(inputFilePath)     val inputUrl = "file:///" + inputFile.getAbsolutePath().replace('\\', '/')     loader.loadComponentFromURL(inputUrl, "_blank", 0, Array(propertyValue))   }   def convertDocument(doc: Object, outputFilePath: String, convertType: String) {     // Preparing properties for converting the document     // Setting the flag for overwriting     val overwriteValue = new PropertyValue()     overwriteValue.Name = "Overwrite"     overwriteValue.Value = new Boolean(true)     // Setting the filter name     val filterValue = new PropertyValue()     filterValue.Name = "FilterName"     filterValue.Value = convertType     // Composing the URL by replacing all backslashs     val outputFile = new File(outputFilePath)     val outputUrl = "file:///" + outputFile.getAbsolutePath().replace('\\', '/')     // Getting an object that will offer a simple way to store     // a document to a URL.     val storable = UnoRuntime.queryInterface(classOf[XStorable], doc)     // Storing and converting the document     storable.storeToURL(outputUrl, Array(overwriteValue, filterValue))   }   def closeDocument(doc: Object) {     // Closing the converted document. Use XCloseable.clsoe if the     // interface is supported, otherwise use XComponent.dispose     val closeable = UnoRuntime.queryInterface(classOf[XCloseable], doc)     if (closeable != null) {       closeable.close(false)     } else {       val component = UnoRuntime.queryInterface(classOf[XComponent], doc)       component.dispose()     }   }   val inputFilePath = "D:\\convert\\input.txt"   val outputFilePath = "D:\\convert\\output.pdf"   // Getting the given type to convert to   val convertType = "writer_pdf_Export"   val context = createContext()   println("connected to a running office ...")   val loader = createComponentLoader(context)   println("loader created ...")   val doc = loadDocument(loader, inputFilePath)   println("document loaded ...")   convertDocument(doc, outputFilePath, convertType)   println("document converted ...")   closeDocument(doc)   println("document closed ...") }
 
 很显然,这里不是我所厌恶的Java语言。这是一段Scala代码,就从最基本的代码使用上看,Scala也已经比Java代码要节省许多了。
总结 
其实解决这个问题还是走了不少弯路的,究其原因可能是从示例代码出发去寻找解决方案,而并没有去系统地阅读各种资料。在这个过程中,我找到了一些比较重要的文档: 
API/Tutorials/PDF export:对于PDF导出功能各种参数的详细解释。  
Text Documents:关于文本文档相关操作的详细说明。  
DocumentHanding:“文档操作”示例代码的解释,包括文档打印等等。  
当然,最详细文档莫过于完整的开发人员指南了,如果您想要详细了解这方面的内容,这应该也属于必读内容之一。 
有了OpenOffice.org,就相当于我们拥有了一套完整的文档操作类库,可以用来实现各种功能。除了转PDF以外,例如我们还可以将一篇数百万字的小说加载为文档,再每十页导出一份图片,方便用户在线预览顺便防点拷贝。此外,虽然我是在Windows下操作OOo,但是OOo和Java本身都是跨平台的,因此同样的代码也可以运行在Linux平台上。我目前正在尝试在Ubuntu Server上部署一份OOo和代码,如果有什么特别的情况,我也会另行记录。 
事实上有一点我之前一直没有提到:如果您使用Windows及.NET进行开发,OOo也提供了C++/CLI接口,可以使用C#、F#进行编程,且代码与本文描述的几乎如出一辙(只要把queryInterface方法调用改成直接转换),在.NET 4.0中也可正常使用。 
如果您有其他解决方案,也请一起交流一下。 
本文链接:http://www.blueidea.com/tech/program/2010/7702.asp  
出处:老赵点滴
 
责任编辑:bluehearts 
上一页 使用OpenOffice.org将各类文档转为PDF [3] 下一页 
◎进入论坛网络编程版块参加讨论
	       |