【问题标题】:iText7 - Add text to the bottom of existing pdfiText7 - 将文本添加到现有 pdf 的底部
【发布时间】:2020-07-08 07:04:39
【问题描述】:

我需要使用 iText 在现有 .pdf 文档的底部添加一些文本内容。我有一个工作方法,但是新内容显示在左上角,与现有内容重叠:

public PdfDocument GetDocumentWithAppendedContent(string path, string content)
    {
        var stream = new MemoryStream();
        var writer = new PdfWriter(stream);
        writer.SetCloseStream(false); // so I can reuse stream to create a readonly document later

        var pdfResult = new PdfDocument(new PdfReader(path), writer);
        var document = new Document(pdfResult);

        var div = new Div().SetMargin(0).SetPadding(0).SetKeepTogether(true);
        div.Add(new Paragraph(content));
        document.Add(div);
        
        document.Close();
        pdfResult.Close();

        stream.Position = 0;
        return new PdfDocument(new PdfReader(stream)); // return a readonly version
    }

如何“移动”最后一页底部的content,而不是第一页的开头?我是 iText 的新手,令人惊讶的是,我在网上找不到解决方案。

【问题讨论】:

  • PDF 通常不包含指示继续添加新内容的位置的标记。当然,可以简单地确定页面上所有内容的边界框并从下面开始。但考虑到页面可能有一些页脚或一些背景图形,这种简单的方法可能不是您想要的......

标签: c# .net pdf itext7


【解决方案1】:

你可以使用这样的代码来做到这一点。

   PdfPage     page   = doc.GetPage(doc.GetNumberOfPages());
    //Create canvas fro the last page
    Canvas      canvas = new Canvas(page, page.GetPageSize());
    //Set fixed position to put the div at the left bottom  corner of the canvas
    div.SetFixedPosition(0, 0, page.getPageSize().getWidth());
    canvas.Add(p);
    doc.Close();

【讨论】:

  • 感谢您的回答,如果最后一页没有完全填满,这将非常有效。但是有没有办法将 Div 添加到现有的层次结构中,以便它与文档的其余部分一起流动?
  • @dzenesiz 你找到解决方案了吗?如果是,请分享。
猜你喜欢
  • 2018-06-23
  • 2021-07-25
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 2018-09-28
  • 2021-09-13
相关资源
最近更新 更多