VB.net使用iText7

时间:2018-01-09 14:26:46

标签: vb.net pdf itext7

我正在尝试使用页眉和页脚创建PDF。标题和脚都是图像。由于我的pdf创建了一个随机数量的页面,我需要自动将其添加到每个页面。我知道我需要使用某种事件处理程序。不幸的是我无法在vb.net语言中找到任何示例,我只能找到java / C#示例,而且我非常擅长阅读/将这些语言转换为vb.net。我还不是编程方面的专家。

任何人都可以指出我正确的方向。

Edit4:删除了随机内容,不再需要回答我的问题。

以下这段代码是我创建PDF本身的全部内容。

Imports System.IO

Imports MySql.Data.MySqlClient

Imports iText.Kernel

Imports iText.Kernel.Pdf

Imports iText.Kernel.Font

Imports iText.Kernel.Font.PdfFont

Imports iText.Kernel.Font.PdfFontFactory

Imports iText.IO.Image

Imports iText.IO.Image.ImageData

Imports iText.IO.Image.ImageDataFactory

Imports iText.Layout.Element.Image

Imports iText.Layout

Imports iText.Layout.Element

Imports iText.Layout.Element.Table


Imports iText.Kernel.Events.Event

Imports iText.Kernel.Events.PdfDocumentEvent

Imports iText.Kernel.Geom.PageSize

Imports iText.Kernel.Geom.Rectangle

Imports iText.Kernel.Pdf.PdfDocument


Imports iText.Kernel.Pdf.PdfNumber

Imports iText.Kernel.Pdf.PdfWriter

Imports iText.Kernel.Pdf.Canvas.PdfCanvas

Imports iText.Kernel.Pdf.Canvas.PdfCanvasConstants

Imports iText.Kernel.Pdf.Xobject.PdfFormXObject

Imports iText.Layout.Canvas

Imports iText.Layout.Document

Imports iText.Layout.Style

Imports iText.Layout.Layout.LayoutArea

Imports iText.Layout.Layout.LayoutContext

Imports iText.Layout.Layout.LayoutResult

Imports iText.Layout.Renderer.CellRenderer
Imports iText.Layout.Renderer.DrawContext
Imports iText.Layout.Renderer.TableRenderer
Imports iText.Signatures.PdfSignatureAppearance


Public Sub NewiText7PdfCreation()

'Dim dest As String = "\\test\verkoop\offerte v2\Offerte " & offertenummer2 & "-" & offertenummer & " " & TextBox2.Text & ".pdf"

Dim dest As String = "iText7Test.pdf"


Dim writer As PdfWriter = New PdfWriter(dest)
Dim pdf As PdfDocument = New PdfDocument(writer)
Dim doc As Document = New Document(pdf)

Dim font As PdfFont = PdfFontFactory.CreateFont("C:\Windows\Fonts\calibri.ttf")

'header

Dim headerlocation As String = "Resources\Offerte-NL.png"
Dim headerimage2 As Image = New Image(ImageDataFactory.Create(headerlocation))
doc.Add(headerimage2)


'klant gegevens

doc.Add(New Paragraph("Debiteur gegevens").SetFont(font))

Dim debnr As String = TextBox1.Text
Dim bn As String = TextBox2.Text
Dim adr As String = TextBox3.Text
Dim pcwp As String = TextBox4.Text
Dim cp As String = TextBox5.Text
Dim km As String = TextBox6.Text

Dim klanttable As New Table(2)

klanttable.SetMaxWidth(350)
klanttable.SetHorizontalAlignment(0)
klanttable.SetFont(font)
klanttable.SetFontSize(8)
klanttable.SetWidth(350)
klanttable.SetMinWidth(120)

klanttable.AddCell("Debiteur nr.: ")
klanttable.AddCell(debnr)
klanttable.AddCell("(Bedrijfs)naam:")
klanttable.AddCell(bn)
klanttable.AddCell("Adres:")
klanttable.AddCell(adr)
klanttable.AddCell("Postcode & woonplaats:")
klanttable.AddCell(pcwp)
klanttable.AddCell("Contactpersoon:")
klanttable.AddCell(cp)
klanttable.AddCell("Kenmerk:")
klanttable.AddCell(km)

Dim cell As New Cell

klanttable.SetMarginTop(10)
klanttable.SetMarginBottom(10)

doc.Add(klanttable)

doc.Close()

End Sub

编辑:

在iText网站上找到了一个很好的教程。

https://developers.itextpdf.com/content/itext-7-jump-start-tutorial-net/chapter-3-using-renderers-and-event-handlers

我还没有完全了解如何将这段代码插入到我自己的代码中。我想我需要创建一个处理事件的新类。 但是我该如何调用此事件。

我只是在我的代码中添加以下行:

Implements IEventHandler

这个新的子。

  Public Sub HandleEvent([event] As [Event]) Implements IEventHandler.HandleEvent
    Throw New NotImplementedException()
End Sub

如何调整sub以处理page-start事件和page-end事件(如果它仍然以这种方式调用)

编辑:我刚刚导入所有的东西,以确保我得到了一切。当一切正常时我会删除所有未使用的东西。

0 个答案:

没有答案