Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

replace (fix) fonts in LibreOffice Draw after importing PDF

I adapted BASIC macro to Draw but don't understand why it converted fonts only in first page. The code is:

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

Where is glitch?

like image 605
AndriuZ Avatar asked Jan 01 '26 14:01

AndriuZ


1 Answers

This statement grabs only the first page:

page = pages.getByIndex(0)

Do this instead:

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

This uses the XIndexAccess interface.

like image 114
Jim K Avatar answered Jan 05 '26 05:01

Jim K



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!