使用 LibreOffice 和 Python UNO 从 ODT 创建符合 PDF/UA 的 PDF

问题描述 投票:0回答:1

请考虑以下示例:

import uno

def create_pdf(file_url):

    local_context = uno.getComponentContext()
    resolver = local_context.ServiceManager.createInstanceWithContext(
        "com.sun.star.bridge.UnoUrlResolver", local_context)
    context = resolver.resolve(
        "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
    desktop = context.ServiceManager.createInstanceWithContext(
        "com.sun.star.frame.Desktop", context)
    document = desktop.loadComponentFromURL(file_url, "_blank", 0, ())

    # TODO: Create a Universal Accessibility (PDF/UA) PDF

我需要完成它才能创建符合 PDF/UA 标准的 PDF。

如果我是从 Writer 中的文档中执行此操作,步骤将是:

  1. 选择文件 > 导出为 > 导出为 PDF...
  2. PDF 选项对话框打开。
  3. 选中通用辅助功能(PDF/UA)复选框。
  4. 单击导出按钮。

我正在努力寻找适用的例子。请问有人知道如何编码吗?

谢谢

python libreoffice libreoffice-writer
1个回答
0
投票

我想出了以下内容:

from pathlib import Path

from com.sun.star.beans import PropertyValue

def export_doc(doc, output_path: Path, filter_name: str) -> None:

    output_url = output_path.resolve().as_uri()

    properties = [] 
    
    p = PropertyValue() 
    p.Name = 'FilterName' 
    p.Value = filter_name
    properties.append(p) 
    
    doc.storeToURL(output_url, tuple(properties))

我已经尝试通过了:

  • “writer_pdf_导出”
  • “MS Word 2007 XML”

我要注意的是,当涉及到 PDF 时,它似乎会采用 GUI 中上次使用的设置。因此,它只会导出 PDF/UA(如果这是上次导出的内容)。

将来,我会尝试使其更加健壮,但目前已经足够了。

© www.soinside.com 2019 - 2024. All rights reserved.