Несмотря на то, что вы не можете использовать JAVA2D с iTextSharp, вы все равно можете рисовать векторную графику в формате PDF, напрямую записывая объект PdfWriter.DirectContent
. Он поддерживает все стандартные методы MoveTo()
, LineTo()
, CurveTo()
и т. Д., Которые вы ожидаете от программы векторного рисования. Ниже представлено полнофункциональное приложение VB.Net WinForms, предназначенное для iTextSharp 5.1.1.0, которое демонстрирует некоторые простые способы использования.
Option Explicit On
Option Strict On
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim OutputFile As String = Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "VectorTest.pdf")
Using FS As New FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.None)
Using Doc As New Document(PageSize.LETTER)
Using writer = PdfWriter.GetInstance(Doc, FS)
''//Open the PDF for writing
Doc.Open()
Dim cb As PdfContentByte = writer.DirectContent
''//Save the current state so that we can restore it later. This is not required but it makes it easier to undo things later
cb.SaveState()
''//Draw a line with a bunch of options set
cb.MoveTo(100, 100)
cb.LineTo(500, 500)
cb.SetRGBColorStroke(255, 0, 0)
cb.SetLineWidth(5)
cb.SetLineDash(10, 10, 20)
cb.SetLineCap(PdfContentByte.LINE_CAP_ROUND)
cb.Stroke()
''//This undoes any of the colors, widths, etc that we did since the last SaveState
cb.RestoreState()
''//Draw a circle
cb.SaveState()
cb.Circle(200, 500, 50)
cb.SetRGBColorStroke(0, 255, 0)
cb.Stroke()
''//Draw a bezier curve
cb.RestoreState()
cb.MoveTo(100, 300)
cb.CurveTo(140, 160, 300, 300)
cb.SetRGBColorStroke(0, 0, 255)
cb.Stroke()
''//Close the PDF
Doc.Close()
End Using
End Using
End Using
End Sub
End Class
EDIT
Кстати, хотя вы не можете использовать JAVA2D (который, очевидно, является Java и не будет работать с .Net), вы можете создавать изображения iTextSharp, используя стандартный класс System.Drawing.Image
, и передавать его статическому методу iTextSharp.text.Image.GetInstance()
. К сожалению, System.Drawing.Image
является растровым / растровым объектом, поэтому он не поможет вам в этом случае.