0

我想将一个由 html 表(有 4 列)组成的 asp.net 面板控件解析为 PD 文档。我已将 Pagesize 设置为 A4,所有边距设置为 10。创建我的 pdf 时,左右边距非常大。我怎样才能得到左边和边距?

这是使用的代码:

Dim strFileName = "CBB_" & lblZoekCriteria.Text & ".pdf"

Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "attachment;filename=" & strFileName)
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Dim sw As New StringWriter()
Dim hw As New HtmlTextWriter(sw)
'Me.Page.RenderControl(hw)
pnlProtestInfo.RenderControl(hw)

Dim sr As New StringReader(sw.ToString())
Dim pdfDoc As New Document(PageSize.A4, 10, 10, 10, 10)
Dim htmlparser As New HTMLWorker(pdfDoc)
PdfWriter.GetInstance(pdfDoc, Response.OutputStream)
pdfDoc.Open()
htmlparser.Parse(sr)
pdfDoc.Close()
Response.Write(pdfDoc)
Response.[End]()
4

1 回答 1

1

当您设置边距时,您是在指示 iText不要在这些区域中绘制,就是这样。您没有告诉 iText 绘制任何内容的宽度。

如果没有看到您正在解析的 HTML,我无法具体告诉您要修复什么。但是,下面是一个非常基本的示例,它使用了一个设置为 100% 宽度的表格,它应该可以满足您的需求。

另外,请记住它HTMLWorker是旧的且不受支持的,并且仅支持少数最基本的 HTML 和 CSS 标记和属性。相反,我们鼓励您迁移到 XMLWorker.

''//Output a file to the desktop
Dim strFileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.pdf")

''//Out very basic sample HTML
Dim sampleHtml = <table border="1" width="100%" align="center">
                     <tr>
                         <td>0:0</td>
                         <td>0:1</td>
                     </tr>
                     <tr>
                         <td>1:0</td>
                         <td>1:1</td>
                     </tr>
                 </table>

''//Standard PDF setup, nothing special
Using fs As New FileStream(strFileName, FileMode.Create, FileAccess.Write, FileShare.None)

    ''//Create our document with margins specified
    Using pdfDoc As New Document(PageSize.A4, 10, 10, 10, 10)
        Using PdfWriter.GetInstance(pdfDoc, fs)

            pdfDoc.Open()

            ''//Parse our HTML into the document
            Using sr As New StringReader(sampleHtml.ToString())
                Using htmlparser As New HTMLWorker(pdfDoc)
                    htmlparser.Parse(sr)
                End Using
            End Using

            pdfDoc.Close()
        End Using
    End Using
End Using
于 2013-08-29T14:06:40.987 回答