LibreOffice Calc宏:如何将单元格范围导出为PDF文件?

时间:2015-05-28 14:30:34

标签: pdf libreoffice openoffice-calc libreoffice-calc libreoffice-basic

我有以下代码将工作表导出为PDF文件:

Option Explicit

Sub exportToPdf

    Dim document As Object
    Dim dispatcher As Object

    document=ThisComponent.CurrentController.Frame
    dispatcher=createUnoService("com.sun.star.frame.DispatchHelper")

    Dim args1(1) as new com.sun.star.beans.PropertyValue

    args1(0).Name = "URL"
    args1(0).Value = "file:///home/someuser/Desktop/exported.pdf"
    args1(1).Name = "FilterName"
    args1(1).Value = "calc_pdf_Export"

    dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())

End Sub

工作正常。我有以下问题:

  • 是否可以在不创建unoService的情况下导出PDF? (以及如何做到这一点?)

  • 如何导出一系列单元格而不是整张纸张?

1 个答案:

答案 0 :(得分:1)

创建uno服务不是问题。但你应该避免调度员。这就是为什么用openoffice录制宏不是很有帮助。你必须使用API​​来打扰自己。

本教程将介绍PDF导出的工作原理:https://wiki.openoffice.org/wiki/API/Tutorials/PDF_export

要进行自定义,需要MediaDescriptorhttps://www.openoffice.org/api/docs/common/ref/com/sun/star/document/MediaDescriptor.html

此服务可能由:: com :: sun :: star :: beans :: PropertyValue []表示。此类型具有NameValue属性。

MediaDescriptor至少需要一个FilterName。可以在此处找到一个不太实际的FilterNames列表:https://wiki.openoffice.org/wiki/Framework/Article/Filter/FilterList_OOo_3_0

为了进一步定制,FilterData是可能的。对于那些阅读:https://wiki.openoffice.org/wiki/API/Tutorials/PDF_export#General_properties

截至Value的{​​{1}}的{​​{1}}过滤数据演示,还使用了FilterData数组。

所以我们得到:

PropertyValue