在gridview itextsharp上设置splitlate = false

时间:2015-09-29 22:36:48

标签: asp.net gridview itextsharp

以下是我要导出的页面布局:



-------------------------------
' Text text text               '
'                              '
' Gridview                     '
'                              '
' Text text text               '
--------------------------------




渲染到HTML后,这是我的表格



<table cellspacing="0" id="mytest_gvMain" style="width:100%;border-collapse:collapse;">
  <tbody>
    <tr>
      <th scope="col">Item</th>
      <th scope="col">Description</th>
      <th scope="col">Quantity</th>
      <th scope="col">Unit</th>
      <th scope="col">Rate</th>
    </tr>
    <tr>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;

如您所见,gridview位于页面中间。因为gridview可以扩展到不同页面的任何大小,我想设置SplitLate = false,所以行保持在一起。现在,最后一行中的一些文本位于第1页,其中一些位于第2页的第一行。请查看此图像Some data on last row of page 5 and some on first row of page 6。 第5页的最后一行和第6页的第一行的一些数据。我已经阅读了一些建议document.add(表)的文档,但是会将表添加到我的文档末尾。有没有办法在gridview本身上设置SplitLate?

根据Chris的建议,我已根据此链接Cannot get CSS to work in iTextSharp (5.4.3) when making pdf更新了我的代码以使用xmlworker。

 Using input As New MemoryStream(bytes, False)

    Dim ms As New MemoryStream()

    Dim document As New iTextSharp.text.Document(iTextSharp.text.PageSize.LETTER, 36, 36, 36, 36)
    Dim writer As PdfWriter = PdfWriter.GetInstance(document, ms)

    writer.CloseStream = False
    document.Open()

    Dim htmlContext As HtmlPipelineContext = New HtmlPipelineContext(Nothing)
    htmlContext.SetAcceptUnknown(True)
    htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory())
    Dim cssResolver As ICSSResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(False)
    cssResolver.AddCssFile(HttpContext.Current.Server.MapPath("/assets/css/pdf.css"), True)

    Dim pipeline As New CssResolverPipeline(cssResolver, New HtmlPipeline(htmlContext, New PdfWriterPipeline(document, writer)))
    Dim pdfworker As New XMLWorker(pipeline, True)
    Dim p As New XMLParser(True, pdfworker, New System.Text.UTF8Encoding)

    Try

        'p.AddListener(pdfworker)
        'p.Parse(input, Encoding.UTF8)

        XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, input, New FileStream(HttpContext.Current.Server.MapPath("~/assets/css/pdf.css"), FileMode.Open, FileAccess.Read))
    Catch

    Finally
        pdfworker.Close()

    End Try

    document.Close()
    ms.Position = 0

    Response.Buffer = True
    Response.Clear()
    Response.ContentType = "application/pdf"
    Response.AddHeader("content-disposition", "attachment; filename=preview.pdf")
    Response.BinaryWrite(ms.GetBuffer())
    Response.Flush()
End Using

任何帮助表示赞赏。

0 个答案:

没有答案