【问题标题】:iTextSharp: table row gets pushed to new page if it doesn't fit on the current oneiTextSharp:如果表格行不适合当前页面,则将其推送到新页面
【发布时间】:2011-09-21 05:48:17
【问题描述】:

我正在使用iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(TextReader reader, StyleSheet style) 将 html 表格转换为 pdf 文档。有些行包含大量数据,可能不适合当前页面,因此 iTextSharp 创建一个新页面并将该行放置在那里。如果该行不适合下一页,它会正确拆分它。

有没有办法告诉它不使用这些分页符?这是它的样子:

【问题讨论】:

    标签: c# pdf itext pdf-generation page-break


    【解决方案1】:

    对我有用的技巧是检查ParseToList() 的结果并查找PdfPTable 类型的任何元素。如果您看到将其SplitLate 属性设置为False。这里有一些 VB,你应该可以很容易地转换成 C#:

    Dim Elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(SR, Nothing)
    For Each El In Elements
        If TypeOf El Is PdfPTable Then
            DirectCast(El, PdfPTable).SplitLate = False
        End If
        Doc.Add(El)
    Next
    

    【讨论】:

      【解决方案2】:

      Chris Haas 的回答很棒 - 它对我有用。 这是 C# 中的一个:

              string template = File.ReadAllText(@"C:\my_template.html");
              var htmlText = Engine.Razor.RunCompile(template, Guid.NewGuid().ToString(), model: GetViewModel());
      
              TextReader reader = new StringReader(htmlText);
              var document = new Document(PageSize.A4, 30, 30, 30, 30);
      
              using (var stream = new MemoryStream())
              {
                  PdfWriter.GetInstance(document, stream);
      
                  document.Open();
                  var pages = HTMLWorker.ParseToList(reader, new StyleSheet());
                  foreach (var page in pages)
                  {
                      if (page is PdfPTable)
                      {
                          (page as PdfPTable).SplitLate = false;
                      }
                      document.Add(page as IElement);
                  }
      
                  document.Close();
      
                  File.WriteAllBytes(@"C:\my_template.pdf", stream.ToArray());
              }
      

      【讨论】:

        【解决方案3】:

        我很确定表行是“原子的”,如果它们溢出给定的页面,它们将被 CROPPED。

        上图中的 PDF 是否在下一页继续该行?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-03
          相关资源
          最近更新 更多