我正在使用itextsharp设计一个pdf表。我想问一下是否有人知道:
我正在使用vb.net
Protected Sub Create_Pdf_Click(sender As Object, e As EventArgs) Handles Create_Pdf.Click
Dim pdfDoc As New Document()
Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(pdfDoc, New FileStream("D://PDF/myfile.pdf", FileMode.Create))
pdfDoc.Open()
pdfDoc.Add(New Paragraph("Here is header text"))
Dim table As New PdfPTable(3)
Dim cell As New PdfPCell(New Phrase("Header spanning 3 columns"))
cell.Colspan = 3
cell.HorizontalAlignment = 1
table.AddCell(cell)
table.AddCell("Col 1 Row 1")
table.AddCell("Col 2 Row 1")
table.AddCell("Col 3 Row 1")
table.AddCell("Col 1 Row 2")
table.AddCell("Col 2 Row 2")
table.AddCell("Col 3 Row 2")
pdfDoc.Add(table)
pdfDoc.Close()
End Sub
答案 0 :(得分:0)
当您像这样定义Document
时:
Dim pdfDoc As New Document()
您定义的文档的页面大小为A4,边距为36个用户单位。如果您不想要任何边距,则需要创建如下文档:
Document doc = new Document(PageSize.A4, 0f, 0f, 0f, 0f);
当你像这样创建PdfPTable
时:
Dim table As New PdfPTable(3)
您创建的表格占可用宽度的80%。您可以通过添加以下行将其更改为100%:
table.WidthPercentage = 100
或者,如果要指定特定宽度,则可以使用:
table.TotalWidth = 595f
table.LockedWidth = true
请注意,595
是A4页面的宽度(用户单位)。
边界定义为PdfPCell
:
PdfPCell cell = new PdfPCell(phrase)
cell.BorderColor = BaseColor.RED
cell.BorderWidth = 3f
cell.Border = Rectangle.BOX
当然,您也可以单独定义每个边框。这在此解释:ITextSharp: Set table cell border color
在您的情况下,您可能希望为DefaultCell
定义这些属性。这样,您就不必为每个单独的单元格反复定义它们。
如果我更详细一点(例如,我也可以谈论表事件和单元事件,例如绘制虚线边框),这将导致我们走得太远。请下载免费的电子书The Best iText Questions on StackOverflow,在那里你会找到一些比你更少的问题的答案。