我正在尝试在使用VB.net和itextsharp时更改PDF文件中的字体。 我想我到处都是,但我没有宣布正确的事情。 我得到的代码看起来不错但我收到了错误。
Dim FontColour As VariantType = New BaseColor(35, 31, 32)
Dim Calibri8 As VariantType = FontFactory.GetFont("Calibri", 8, FontColour)
我得到的错误如下。
严重级代码描述项目文件行抑制状态 错误BC30311“BaseColor”类型的值无法转换为“VariantType”。 J C:\ Users \ Jeffrey \ Documents \ Visual Studio 2013 \ Projects \ J \ J \ UniFormulieren \ Offerte \ OfferteUniverseel.vb 61 Active
严重级代码描述项目文件行抑制状态 错误BC30311“字体”类型的值无法转换为“VariantType”。 J C:\ Users \ Jeffrey \ Documents \ Visual Studio 2013 \ Projects \ J \ J \ UniFormulieren \ Offerte \ OfferteUniverseel.vb 62 Active
我也尝试过使用下面的其他方法。
Dim bftimes As BaseFont = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, False)
Dim times As New Font(bftimes, 10)
这样我可以介绍“Times new roman”而不是Calibri。 上面的代码只会让我们遇到添加Times new roman,Courier和Helvetica。
我正在使用Microsoft Visual Studio 2017与VB.NET和iTextSharp。 我的C#并不是那么好,但它帮助我在VB.net中实现了这一点:)
编辑:
第一个解决方案是我尝试使用Nalan M.的答案。 https://stackoverflow.com/a/29641544/9056174
EDIT2:
解
感谢您的帮助!我对这种变种类型如此苛刻,以至于我无视另一种选择。
进行了以下调整,确实它就像一个魅力!
Dim FontColour As BaseColor = New BaseColor(35, 31, 32)
Dim Calibri8 As Font = FontFactory.GetFont("Calibri", 8, FontColour)
谢谢你们的帮助。 (仍然不明白为什么我自己没有想到它,使用C#到VB.net转换器有时会让你发疯)
答案 0 :(得分:2)
错误消息
类型' BaseColor'的价值无法转换为' VariantType'
和
类型的值'字体'无法转换为' VariantType'
表明问题所在:BaseColor
和Font
个实例无法转换为VariantType
。
因此,必须将它们分配给不同类型的变量。幸运的是,有一些天然的选择:让我们采用已知的实际类型BaseColor
和Font
!
Dim FontColour As BaseColor = New BaseColor(35, 31, 32)
Dim Calibri8 As Font = FontFactory.GetFont("Calibri", 8, FontColour)