【问题标题】:replace (fix) fonts in LibreOffice Draw after importing PDF导入 PDF 后替换(修复)LibreOffice Draw 中的字体
【发布时间】:2023-03-22 11:04:01
【问题描述】:

我将 BASIC 宏改编为 Draw,但不明白为什么它只在第一页转换字体。代码是:

REM  *****  BASIC  ***** https://www.prahladyeri.com/blog/2016/02/ten-libreoffice-macro-recipes.html#searchandrepl

Sub replace_letters
  Dim badletters() As String
  Dim goodletters() As String
  Dim n As Long
  Dim document As Object
  Dim pages as Object
  Dim sheet as Object
  Dim replace As Object

  badletters() = Array("À", "È", "Ë", "Á", "Ð", "Ø", "Û", "Þ", "à", "è", "ë", "á", "ð", "ø", "û", "þ")
  goodletters() = Array("Ą", "Č", "Ė", "Į", "Š", "Ų", "Ū", "Ž", "ą", "č", "ė", "į", "š", "ų", "ū", "ž")
  document = ThisComponent
  rem ?? need every page - see sheet = doc.CurrentSelection.Spreadsheet
  pages = document.getDrawPages()
  page = pages.getByIndex(0)
  replace = page.createReplaceDescriptor rem document.createReplaceDescriptor in case of Writer
  rem replace.SearchRegularExpression = True
  For n = lbound(badletters()) To ubound(badletters())
    replace.SearchString = badletters(n)
    replace.ReplaceString = goodletters(n)
    page.replaceAll(replace)
  Next n
  MsgBox("Done")
End Sub

故障在哪里?

【问题讨论】:

    标签: replace fonts libreoffice-basic libreoffice-draw


    【解决方案1】:

    这个语句只抓取第一页:

    page = pages.getByIndex(0)
    

    改为这样做:

    For pageNum = 0 To pages.getCount() - 1
        page = pages.getByIndex(pageNum)
    

    这使用XIndexAccess 接口。

    【讨论】:

      【解决方案2】:

      我知道这是一个旧字体,并且已经让操作人员满意,但是可以在字体下的 LibreOffice/OpenOffice 选项中设置替换字体... 设置、打开文档和所有字体自动更换,无需进一步操作。对于那些不想涉足宏和基本以及所有这些的人。

      【讨论】:

        猜你喜欢
        • 2013-01-09
        • 1970-01-01
        • 2013-01-31
        • 2010-11-13
        • 1970-01-01
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多