vb.net 使用 pdfStamper 和 VB 或 C# 将表格添加到现有的 PDF itextsharp
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18689555/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Add a table to existing PDF itextsharp with pdfStamper and VB or C#
提问by cMinor
I want to use a function to insert a table to a existing PDF like:
我想使用一个函数将表格插入到现有的 PDF 中,例如:
Private Shared Function wTable(ByVal cols As Integer) As iTextSharp.text.Table
Dim table As New iTextSharp.text.Table(cols)
With table
.WidthPercentage = 100
.BorderWidth = 0
.Cellpadding = 1
.Cellspacing = 0
.TableFitsPage = False
.CellsFitPage = True
.AutoFillEmptyCells = True
.Widths = New Single() {20, 80}
End With
Dim font As iTextSharp.text.Font = font8
Dim fontBold As iTextSharp.text.Font = font8Bold
Dim c As Cell = New Cell(New Phrase("Allacci Sparsi", fontBold))
c.SetHorizontalAlignment("center")
table.AddCell(c, 0, 0)
Dim str As String = "Il termine di esecuzione dei lavori è stabilito all'art. 14 del Foglio Condizioni e di seguito definiti in Tabella 1. " _
& "All'art. 16 del 'Foglio Condizioni' sono definiti i riferimenti per l'applicazione delle penali in caso di ritardo nell'esecuzione delle opere richieste. " _
& " All'art. 17 del 'Foglio Condizioni' sono definiti i criteri per l'incentivo sulla celerità di intervento."
c = New Cell(New Phrase(str, font))
c.SetHorizontalAlignment("left")
table.AddCell(c, 0, 1)
Return table
End Function
then call it using stamper like:
然后使用压模调用它,例如:
Dim reader As iTextSharp.text.pdf.PdfReader = Nothing
Dim stamper As iTextSharp.text.pdf.PdfStamper = Nothing
Dim cb As iTextSharp.text.pdf.PdfContentByte = Nothing
Dim rect As iTextSharp.text.Rectangle = Nothing
Dim pageCount As Integer = 0
Try
reader = New iTextSharp.text.pdf.PdfReader(sourcePdf)
rect = reader.GetPageSizeWithRotation(1)
stamper = New iTextSharp.text.pdf.PdfStamper(reader, New System.IO.FileStream(outputPdf, IO.FileMode.Create))
cb = stamper.GetOverContent(1)
Dim ct = New ColumnText(cb)
ct.Alignment = Element.ALIGN_CENTER
ct.SetSimpleColumn(36, 36, PageSize.A4.Width - 36, PageSize.A4.Height - 300)
ct.AddElement(wTable(2))
ct.Go()
stamper.Close()
reader.Close()
Catch ex As Exception
Throw ex
End Try
However program throws exepction saying: "Element is not allowed".
但是程序抛出异常说:“不允许元素”。
I have seen an example inserting table, but they do not use pdfstamper herethey use
我看过一个插入表格的例子,但他们在这里不使用 pdfstamper他们使用
doc.Open()
...
doc.Add(table)
...
doc.Close()
How to add a table using pdfstamper with itextsharp, in C# or even in VB?
如何在 C# 甚至 VB 中使用带有 itextsharp 的 pdfstamper 添加表格?
回答by cMinor
Just insert something like before stamper.Close():
只需插入类似之前的内容stamper.Close():
Dim nTbl As PdfPTable = New PdfPTable(2)
'create column sizes
Dim rows As Single() = {50.0F, 250.0F}
'set row width
nTbl.SetTotalWidth(rows)
nTbl.AddCell("Cell1")
nTbl.AddCell("Cell2")
'coords x=300,y=300
nTbl.WriteSelectedRows(0, 50, 300, 300, stamper.GetOverContent(1))
stamper.Close()
reader.Close()
回答by KaruppaSamy K
Dim oldFile As String = "D:\karuppasamy\OBM Application Form 2014 Final.pdf"
Dim newFile As String = "D:\karuppasamy\PDF\OBM Application Form 2014 Final.pdf"
Dim reader As iTextSharp.text.pdf.PdfReader = Nothing
Dim stamper As iTextSharp.text.pdf.PdfStamper = Nothing
Dim cb As iTextSharp.text.pdf.PdfContentByte = Nothing
Dim rect As iTextSharp.text.Rectangle = Nothing
Dim pageCount As Integer = 0
Try
reader = New iTextSharp.text.pdf.PdfReader(oldFile)
rect = reader.GetPageSizeWithRotation(1)
stamper = New iTextSharp.text.pdf.PdfStamper(reader, New System.IO.FileStream(newFile, IO.FileMode.Create))
cb = stamper.GetOverContent(1)
Dim ct = New ColumnText(cb)
ct.Alignment = Element.ALIGN_LEFT
ct.SetSimpleColumn(70, 36, PageSize.A4.Width - 36, PageSize.A4.Height - 300)
Dim nTbl As PdfPTable = New PdfPTable(2)
'create column sizes
Dim rows As Single() = {135.0F, 145.0F}
'set row width
nTbl.SetTotalWidth(rows)
nTbl.AddCell(New Paragraph("Application Ref No:", FontFactory.GetFont("Arial", 15)))
nTbl.AddCell(New Paragraph("HPOBM00017", FontFactory.GetFont("Arial", 15)))
'coords x=300,y=300
' nTbl.WriteSelectedRows(0, 50, 40, 835, stamper.GetOverContent(1))
nTbl.WriteSelectedRows(0, 20, 300, 835, stamper.GetOverContent(1))
stamper.Close()
reader.Close()
ct.Go()
Catch ex As Exception
Throw ex
End Try

