iTextSharp忽略新创建的PDF中的边距

时间:2013-08-29 11:17:36

标签: itextsharp margins

我想解析一个asp.net面板控件,它由一个html表(有4列)组成一个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]()

1 个答案:

答案 0 :(得分: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