Заменить (исправить) шрифты в LibreOffice Draw после импорта PDF
Я адаптировал базовый макрос для рисования, но не понимаю, почему он конвертировал шрифты только на первой странице. Код является:
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
Где глюк?
2 ответа
Это утверждение захватывает только первую страницу:
page = pages.getByIndex(0)
Сделайте это вместо этого:
For pageNum = 0 To pages.getCount() - 1
page = pages.getByIndex(pageNum)
Это использует интерфейс XIndexAccess.
Я знаю, что это старый, и он уже ответил удовлетворительно, но есть возможность настроить заменяющие шрифты прямо в параметрах LibreOffice/OpenOffice под шрифтами ... Настройте, откройте документ, и все шрифты заменяются автоматически , никаких дополнительных действий не требуется. Для тех, кто не хочет баловаться макросами, базовыми функциями и всем остальным.