2009-08-25 2 views
1

Я сделал это:я сделал «импорт» - тип ошибки ОЖИДАЕМЫЕ

Imports iTextSharp.text.rtf 

, а затем это:

Dim grx As graphic = New graphic 

и на первый «графический» Я получаю «тип ожидаемого»

графический является членом iTextSharp.text.rtf

Вот окружающий код:

Public Sub New1() 
    Console.WriteLine("Chapter 4 example 4: Simple Graphic") 
    Dim document As Document = New Document 
    Try 
     PdfWriter.GetInstance(document, New FileStream("Chap0404.pdf", FileMode.Create)) 
     document.Open() 
     Dim grx As graphic = New graphic 
     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 

Вот весь учебник: (извините его не учебник, но тот, что они называют его)

Imports System 
Imports System.IO 
Imports iTextSharp.text 
Imports iTextSharp.text.pdf 
Namespace iTextSharp.tutorial.Chap04 

Public Class Chap0404 

    Public Sub New() 
     Console.WriteLine("Chapter 4 example 4: Simple Graphic") 
     Dim document As Document = New Document 
     Try 
      PdfWriter.GetInstance(document, New FileStream("Chap0404.pdf", FileMode.Create)) 
      document.Open 
      Dim grx As Graphic = New Graphic 
      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 

End пространство имен

+0

Не могли бы вы разместить исходный код? Часто этот тип ошибки вызван кодом, близким к указанной строке, а не точно на нем. –

+1

добавил тэг ['itextsharp'] – STW

ответ

3

После игры с этим некоторое время я думаю, что вывод о том, что руководство, к которому вы относитесь, относится к устаревшей версии iText/iTextSharp.

их sourceforge сайт ссылок на сопрягая example с января 2006 года, и ваш перевод на VB.NET выглядит точным - проблема в том, что текущая версия iTextSharp не содержит Graphic типа, и после некоторого поиска его похоже, не было только переименовано - более вероятно, что полный графический API был значительно изменен.

страница SourceForge имеет отказ от ответственности (последняя строка), что связанные примеры не может работать больше,

Обратите внимание, что некоторые, например, не будет работать с самой последней версией iTextSharp.

С данного доказательства, и использование отражателя, я обнаружил, что ожидаемый 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 
+0

попробовал это не работает –

+0

Является ли оператор импорта корректным в VS (нет squiggley?); вы уверены, что у вас есть все необходимые ссылки? – STW

+0

Да, я уверен, что я получил его прямо из учебника –

Смежные вопросы