PDFSharp;将SVG签名添加到PDF文件

时间:2017-02-20 20:03:58

标签: vb.net pdf svg visual-studio-2015 stream

我使用jSignature javascript将签名保存到SVG。现在,我试图通过签名空白将SVG放在PDF文档的顶部。

我能够通过将SVG转换为文件,使用SVG(SVG渲染库2.3.0)打开该文件并将其转换为流然后使用PDFSharp将其放到PDF上来实现。我的问题是我无法从字符串加载SVG库。它必须从文件加载。我从数据库中提取这些签名及其表单相关数据。

Dim FileText As String
Dim Bytes() As Byte
Using DB As New wotcDB
    FileText = (From t In DB.interviews Where t.ID = 1 Select t.Signature).FirstOrDefault
End Using

Bytes = System.Text.Encoding.ASCII.GetBytes(FileText)
Using DataStream As New System.IO.MemoryStream(Bytes)
    svgDocument = Svg.SvgDocument.Open(DataStream) 'Issue
End Using

我得到的错误如下;

Severity    Code    Description Project File    Line    Suppression State
Error   BC30518 Overload resolution failed because no accessible 'Open' can be called with these arguments:
'Public Shared Overloads Function Open(Of T As {SvgDocument, New})(path As String) As T': Type parameter 'T' cannot be inferred.
'Public Shared Overloads Function Open(Of T As {SvgDocument, New})(stream As Stream) As T': Type parameter 'T' cannot be inferred.  WOTC-FE d:\Programming\Applications\frmDebug.vb 54  Active

我讨厌在重载清楚地表明我可以使用流时创建一个转换为图形的文件的想法。我做错了什么?

2 个答案:

答案 0 :(得分:0)

在记事本中打开svg文件,检查它是否实际使用ASCII编码。我认为它更有可能是UTF-8。如果是这样,请使用

Bytes = System.Text.Encoding.UTF8.GetBytes(FileText)

代替。

答案 1 :(得分:0)

我找到了答案。这是我已经尝试过但失败的东西,但现在它有效。由于该类型无法推断,我不得不申报。我尝试将其作为流做,但它失败了。那么今天我决定通过它,我明白了。

mySVG = SvgDocument.Open(Of SvgDocument)(newStream)

这很明显,我绊倒了它。所以对于有这个问题的任何人来说,解决它。请注意我的程序正在运行Option Explicit,Option Strict。