首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iTextSharp VB.Net -修复我的表的格式以正确显示

iTextSharp VB.Net -修复我的表的格式以正确显示
EN

Stack Overflow用户
提问于 2015-02-23 14:57:33
回答 1查看 3.7K关注 0票数 0

到目前为止,我一直得到PDF的生活:

我只想要一个PDF文件,它像Excel那样显示它们。示例:

如何使我的iTextSharp值正确显示?我只想让我的话排成直线,而不是一分为二。我的按钮代码如下所示:A4.如@JoshPart所建议的那样旋转

代码语言:javascript
运行
复制
Dim pdfTable As New PdfPTable(DataGridView1.ColumnCount)

    'Add Title of PDF
    Dim cell1 As New PdfPCell(New Phrase(StudentToolStripMenuItem.Text))
    cell1.Colspan = 28
    cell1.Border = 0
    cell1.HorizontalAlignment = 1
    pdfTable.AddCell(cell1)

    'Creating iTextSharp Table from the DataTable data
    pdfTable.DefaultCell.Padding = 3
    pdfTable.WidthPercentage = 100
    pdfTable.HorizontalAlignment = Element.ALIGN_LEFT
    pdfTable.DefaultCell.BorderWidth = 1


    'Adding Header row
    For Each column As DataGridViewColumn In DataGridView1.Columns
        Dim cell As New PdfPCell(New Phrase(column.HeaderText))
        cell.BackgroundColor = New iTextSharp.text.BaseColor(240, 240, 240)
        pdfTable.AddCell(cell)
    Next

    'Adding DataRow
    For Each row As DataGridViewRow In DataGridView1.Rows
        If row.IsNewRow = False Then
            For Each cell As DataGridViewCell In row.Cells
                pdfTable.AddCell(cell.Value.ToString())
            Next
        End If
    Next

    'Exporting to PDF
    Dim folderPath As String = "C:\Mickosis\Class Manager\PDFs\"
    If Not Directory.Exists(folderPath) Then
        Directory.CreateDirectory(folderPath)
    End If
    Using stream As New FileStream(folderPath & StudentToolStripMenuItem.Text & ".pdf", FileMode.Create)
        Dim pdfDoc As New Document(PageSize.A4.Rotate, 5.0F, 5.0F, 5.0F, 5.0F)
        PdfWriter.GetInstance(pdfDoc, stream)
        pdfDoc.Open()
        pdfDoc.Add(pdfTable)
        pdfDoc.Close()
        stream.Close()
    End Using

    MsgBox("PDF Created", , msgboxtitle)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-25 15:05:24

A4纸旋转是280毫米或11英寸宽。你试图在它上放置28列,这意味着每一列可以有10毫米或3/8英寸的空间,而且不包括任何单元格填充或列边框。在普通的可读字体大小下,正如您所看到的,您只能在一行中容纳3到5个字符。

一种选择是删除字体大小,可能是一些不可读的东西,比如3或4。

代码语言:javascript
运行
复制
Dim HeaderFont = FontFactory.GetFont(FontFactory.HELVETICA, 4)
Dim cell As New PdfPCell(New Phrase("Your Text", HeaderFont))

但是,更好的选择是只使用更大的页面大小。如果您也降低字体大小,您可能可以不使用A2,但是您可能需要使用A1,甚至可能是A0。

代码语言:javascript
运行
复制
Dim Doc As New Document(PageSize.A1.Rotate, 5.0F, 5.0F, 5.0F, 5.0F)

当然,当你在屏幕上看到这个时,你必须放大,当你打印它时,你需要缩小到更小的纸张,你可能无法阅读它,但这是28列真正长文本的样子。

我说过的第三个选择是垂直分割你的桌子。尽管有可能,但它并不是自动的,而且如果值的长度经常发生变化,则会非常脆弱。布鲁诺在这里写了一篇很棒的文章。

乔希谈到的第四个选项是旋转文本或垂直绘制文本。您可以看到在这里垂直书写的一个示例,尽管这非常复杂。然而,旋转文本实际上非常容易,您只需将单元格上的Rotation属性设置为90的倍数即可。

代码语言:javascript
运行
复制
cell.Rotation = 90
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28676585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档