Word(我正在使用Word 2010和2016)中的VBA中的VBA中的CopyAsPicture方法是将给定的一段文本(在文档中选择的某些字符串)转换为图片。
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磅的文本将在结果图片中显示为12磅或类似的图像
2)并非所有字体都可以识别。我想用这种方式来描绘一些特殊字体(在otf和ttf中都使用)。这些字体被忽略,取而代之的是我得到标准字体(Times New Roman或其他)的图片。
在Microsoft的VBA文档中找不到这些问题的帮助。
其他信息:
1)为什么要这样做?我使用了人们通常没有的一些稀有字体,并且将它们包含到.docx中也无法正常工作。我必须与同事共享这些文档,他们也应该能够看到特殊字体中的字符。
2)图片生成使用标准字体的西里尔字母进行。到目前为止很好。
3)图片生成也可以使用带有剪贴画而不是图片的字体(这种特殊字体用于例如儿童读物或教科书,以供人们训练阅读和书写)
4)在我的情况下,没有被图形化的字体(但被某些标准系统字体的图片代替)是我以.otf格式获得的字体,但我将其转换为.ttf(因为我认为自己可以然后包括进入文档,但这也不起作用)。 -到目前为止,我没有测试它是否可以与原始otf一起使用,但是我对此表示怀疑,因为到目前为止,ttf和otf字体都没有问题。
问题:
我想了解为什么字体大小和某些字体。
当然,也欢迎提出解决方案的想法。
答案 0 :(得分:1)
.PasteSpecial DataType:=wdPasteMetafilePicture
图元文件图片旨在保留字体数据。因此,当在没有该字体的设备上打开文档时,Word将遵循其字体替换规则。我还隐约记得,图元文件格式中存在与字体有关的错误。
我建议您与其他paste data types一起玩,看看哪种最适合您。