如何使用iTextsharp for VB.NET在PDF中将字体更改为Calibri

时间:2017-12-05 12:20:50

标签: vb.net visual-studio itext

我正在尝试在使用V​​B.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转换器有时会让你发疯)

1 个答案:

答案 0 :(得分:2)

错误消息

  

类型' BaseColor'的价值无法转换为' VariantType'

  

类型的值'字体'无法转换为' VariantType'

表明问题所在:BaseColorFont个实例无法转换为VariantType

因此,必须将它们分配给不同类型的变量。幸运的是,有一些天然的选择:让我们采用已知的实际类型BaseColorFont

Dim FontColour As BaseColor = New BaseColor(35, 31, 32)
Dim Calibri8 As Font = FontFactory.GetFont("Calibri", 8, FontColour)