2017-02-20 70 views
0

Я использую jSignature javascript для сохранения подписи к SVG. Теперь я пытаюсь поместить этот SVG поверх PDF-документа над пустой подписью.PDFSharp; Добавить подпись SVG в файл PDF

Я могу сделать это, преобразовывая SVG в файл, открывая этот файл с помощью SVG (SVG Rendering Library 2.3.0) и превращая его в поток, который затем помещаю в PDF с помощью PDFSharp. Моя проблема в том, что я не могу загрузить библиотеку 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 

Я ненавижу идею создания файла для преобразования графики, когда перегруженные ясно показывают, что я могу использовать потоки. Что я делаю неправильно?

+0

Вы используете 'svgDocument.Draw()', когда вы помещаете его в свой PDF с помощью PDFSharp? – Azimuth

ответ

0

Я нашел ответ. Это было то, что я уже пробовал и хотя и потерпел неудачу, но теперь это работает. Поскольку тип не был выведен, я должен был его объявить. Я попытался сделать это как поток, и это не удалось. Ну сегодня я решил проработать это, и понял.

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

Это так очевидно, и я споткнулся о нем. Таким образом, кому-либо еще есть эта проблема, которая решает ее. Обратите внимание, что в моей программе запущен Option Explicit, Option Strict.

0

Откройте файл svg в Блокноте и убедитесь, что на самом деле он использует кодировку ASCII. Я думаю, что это скорее UTF-8. Если да, используйте

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

вместо этого.

+0

Ошибка, которую я получаю, - это время сборки, а не время выполнения. – Kayot