【发布时间】:2019-03-07 01:15:54
【问题描述】:
Word 中 VBA 中的 CopyAsPicture 方法(我使用的是 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: https://stackoverflow.com/questions/8888145/convert-text-to-image-in-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 字体没有问题。
问题:
我想了解为什么字体大小和某些字体会被忽略。
当然,如何解决这个问题的想法也很受欢迎。
【问题讨论】: