【问题标题】:How to print a .ODT file in C # or VB.NET?如何在 C# 或 VB.NET 中打印 .ODT 文件?
【发布时间】:2018-03-14 16:30:14
【问题描述】:

我在 VB.NET 中有一个程序,可以打开和更改带有 ODT 扩展名的文档,我使用的是 AODL dll,下面是一段代码:

Imports AODL.Document.TextDocuments

Dim document As New TextDocument
document.Load(PathLayout)
SearchAndReplaceString(document, "@NAME", "JOSÉ")
SearchAndReplaceString(document, "@LASTNAME", "HARTMANN")
document.SaveTo(PathLayout& nameArchive & ".odt")
document.Dispose()

 Public Sub SearchAndReplaceString(ByRef document As TextDocument, ByVal searchText As String, ByVal replaceText As String)

我可以做些什么来打印这份文件?

我试过下面的代码:

但是,无法识别对象

【问题讨论】:

  • 也许显示你尝试了什么,你看到了什么。
  • 感谢@ChristianM,我已经改进了我的问题

标签: c# .net vb.net openoffice-writer


【解决方案1】:

图像中的代码显然基于https://wiki.openoffice.org/wiki/AODL_example_17,使用OpenOfficeLib.Connection。我找不到获取这个库的好地方,听起来你可能也没有。

相反,我建议坚持使用 LibreOffice SDK 附带的标准 unoidl 库。这是使用 VB.NET 打印文档的示例。它改编自 SDK 中包含的 WriterDemo 示例。

Imports System
Imports Microsoft.VisualBasic
Imports unoidl.com.sun.star.lang
Imports unoidl.com.sun.star.uno
Imports unoidl.com.sun.star.bridge
Imports unoidl.com.sun.star.view
Imports uno.util
Imports System.Environment
Module WriterDemo
    Sub Main()
        Dim unoPath As String = "C:\Program Files (x86)\LibreOffice 5\program"
        SetEnvironmentVariable("UNO_PATH", unoPath, EnvironmentVariableTarget.Process)
        SetEnvironmentVariable("PATH", GetEnvironmentVariable("PATH") + ";" + unoPath, EnvironmentVariableTarget.Process)
        Dim xContext As XComponentContext = Bootstrap.bootstrap()
        Dim xFactory As XMultiServiceFactory = DirectCast(xContext.getServiceManager(), XMultiServiceFactory)
        Dim xDesktop As unoidl.com.sun.star.frame.XDesktop
        xDesktop = DirectCast(xFactory.createInstance("com.sun.star.frame.Desktop"), unoidl.com.sun.star.frame.XDesktop)
        Dim xComponentLoader As unoidl.com.sun.star.frame.XComponentLoader
        xComponentLoader = DirectCast(xDesktop, unoidl.com.sun.star.frame.XComponentLoader)
        Dim arProps() As unoidl.com.sun.star.beans.PropertyValue = New unoidl.com.sun.star.beans.PropertyValue() {}
        Dim xComponent As unoidl.com.sun.star.lang.XComponent
        xComponent = xComponentLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, arProps)
        Dim xTextDocument As unoidl.com.sun.star.text.XTextDocument
        xTextDocument = DirectCast(xComponent, unoidl.com.sun.star.text.XTextDocument)
        Dim xText As unoidl.com.sun.star.text.XText = xTextDocument.getText()
        Dim xSimpleText As unoidl.com.sun.star.text.XSimpleText
        xSimpleText = DirectCast(xText, unoidl.com.sun.star.text.XSimpleText)
        Dim xCursor As unoidl.com.sun.star.text.XTextCursor = xSimpleText.createTextCursor()
        xText.insertString(xCursor, "The first line in the newly created text document." & vbLf, False)
        Dim xPrintable As unoidl.com.sun.star.view.XPrintable
        xPrintable = DirectCast(xComponent, unoidl.com.sun.star.view.XPrintable)
        Dim printOpts() As unoidl.com.sun.star.beans.PropertyValue = New unoidl.com.sun.star.beans.PropertyValue() {}
        xPrintable.print(printOpts)
    End Sub
End Module

代码运行说明:VB.Net example for LibreOffice SDK.

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多