VBA в Word: метод CopyAsPicture игнорирует размер текста, а также некоторые шрифты - PullRequest
0 голосов
/ 05 марта 2019

Метод CopyAsPicture в VBA в Word (я использую Word 2010 и 2016) предназначен для преобразования заданного фрагмента текста (некоторая строка, выбранная в документе) в изображение.

Microsoft предоставляет этот пример сценария в своих руководствах:

Sub CopyPasteAsPicture()

'Origin: https://docs.microsoft.com/en-us/office/vba/api/word.selection.copyaspicture

 ActiveDocument.Content.Select
  With Selection
   .CopyAsPicture
   .Collapse Direction:=wdCollapseEnd
   .PasteSpecial DataType:=wdPasteMetafilePicture
 End With
End Sub

Для тестирования метода CopyAsPicture я использовал, однако, следующий скрипт, который я нашел в связанном вопросе на этом форуме:

Sub CopySelPasteAsPicture()
' Take a picture of a selection and paste it at the document end

' Source: /7918792/preobrazovanie-teksta-v-izobrazhenie-v-microsoft-word

With Selection
    .CopyAsPicture
End With

ActiveDocument.Content.Select
With Selection
    .Collapse Direction:=wdCollapseEnd
    .TypeParagraph
    .TypeParagraph
    .PasteSpecial DataType:=wdPasteMetafilePicture
End With

End Sub 

Я проверил это, но обнаружил две проблемы с ним:

1) Размер текста игнорируется.Размер текста, скажем, 28 pt будет отображаться в полученном изображении как 12 pt или что-то в этом роде

2) Не все лица шрифта распознаются.У меня есть несколько специальных шрифтов (как в otf, так и в ttf), которые я хочу таким образом изобразить.Эти шрифты игнорируются, и вместо этого я получаю изображение стандартного шрифта (Times New Roman или любой другой).

Я не нахожу справки по этим вопросам в документации Microsoft по VBA.

Дополнительная информация:

1) Почему я хочу это сделать?Я использую некоторые редкие шрифты, которых обычно нет у людей, и включение их в .docx также не работает надежно.Я должен поделиться этими документами с коллегами, и они должны также видеть символы из специальных шрифтов.

2) Генерация изображений работает с кириллическими символами в стандартных шрифтах.Пока все хорошо.

3) Генерация изображений также работает со шрифтами, которые вместо картинок имеют клипарты (такие специальные шрифты используются, например, для детских книг или учебников для людей, обучающих чтению и письму)

4) Шрифтто, что в моем случае не изобразил (но заменил картинками некоторого стандартного системного шрифта), это шрифт, который я получил как .otf, но я преобразовал его в .ttf (потому что я думал, что мог тогда включать в документы, но это сделалотоже не работает).- До сих пор я не проверял, будет ли он работать с оригинальным otf, но я сомневаюсь в этом, потому что до сих пор не было проблем с шрифтами ttf и otf.

Вопрос:

Я хотел бы понять , почему размер шрифта и некоторые грани шрифта игнорируются.

Конечно, идеи, как это решить, также приветствуются.

1 Ответ

1 голос
/ 06 марта 2019
.PasteSpecial DataType:=wdPasteMetafilePicture

Изображение метафайла предназначено для сохранения данных шрифта.Поэтому, когда документ открывается на устройстве, у которого нет этого шрифта, Word будет следовать правилам замены шрифта.Я также смутно припоминаю, что в формате метафайла есть ошибка, связанная со шрифтами.

Я предлагаю вам поиграть с другими вставками типов данных и посмотреть, что лучше всего подходит для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...