Поработав с этим некоторое время, я думаю, что вывод состоит в том, что учебник, которому вы следуете, применим к устаревшей версии iText / iTextSharp.
Их sourceforge сайт ссылается на соответствующий пример с января 2006 года, и ваш перевод на VB.NET выглядит точным - проблема в том, что текущая версия iTextSharp не ' t содержит тип Graphic
, и после некоторого поиска он, похоже, не был просто переименован - более вероятно, что полный графический API был значительно изменен.
На странице sourceforge есть отказ от ответственности (последняя строка), что связанные примеры могут больше не работать,
Обратите внимание, что некоторые примеры не будут работать с самой последней версией iTextSharp.
С учетом данных и использования Reflector я обнаружил, что ожидаемый метод Graphic.Stroke()
существует только в классе PdfContentByte
; однако Document.Add()
ожидает класс, который реализует IElement
, а PdfContentByte
- нет.
Это наименьшее изменение, которое я мог бы сделать, чтобы закрыть для компиляции, но оно значительно меняет цель кода и, вероятно, не будет работать должным образом. Вот моя обновленная версия для справки:
Public Class Chap0404
Public Sub New()
Console.WriteLine("Chapter 4 example 4: Simple Graphic")
Dim document As Document = New Document
Try
Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream("Chap0404.pdf", FileMode.Create))
document.Open()
Dim grx As PdfContentByte = New PdfContentByte(writer)
grx.Rectangle(100, 700, 100, 100)
grx.MoveTo(100, 700)
grx.LineTo(200, 800)
grx.Stroke()
'document.Add(grx)
Catch de As DocumentException
Console.Error.WriteLine(de.Message)
Catch ioe As IOException
Console.Error.WriteLine(ioe.Message)
End Try
document.Close()
End Sub
End Class