簡體   English   中英

如何在 iText7 的特定頁面底部插入元素?

[英]How can I insert an element to the bottom of a specific page in iText7?

我正在探索 .NET PDF 庫的不同選項。 我的一個要求是在第一頁的底部放置一個框,如果任何內容到達該框,它應該溢出到下一頁。

例如: 在此處輸入圖像描述

如上所示,第 7 段通常會占用“保留”區域所占用的一些空間。 相反,將占用該空間的部分轉移到下一頁。

該圖像是使用 Gembox.Document 通過將框添加為僅在第一頁上呈現的頁腳元素來實現的。 但是,在 iText7 中,我看到的添加頁腳的示例(例如這個)將內容作為浮動元素呈現在現有內容之上,並且不影響文檔的 rest 的布局/流程。

我還嘗試在沒有 canvas(下面的片段)的情況下在 PageEnd 事件處理程序上添加一個段落,但不是將其添加到指定頁面,而是將其添加到整個文檔的末尾。

public void HandleEvent(Event evt)
{
    var docEvent = (PdfDocumentEvent)evt;
    var page = docEvent.GetPage();
    int pageNum = docEvent.GetDocument().GetPageNumber(page);

    if (pageNum == 1)
    {
        doc.Add(new Paragraph("Testing a thing"));
    }
}

我正在尋找可以使用 iText7 復制的效果類型嗎?

正如您所說,您正在探索不同的 .NET PDF 庫。 所以我會建議PDFFlow library ,它完全可以滿足您的需求。 如果您有頁腳,則主文檔流將采用頁面區域的 rest 並且將自動繼續到下一頁而不覆蓋頁腳。

DocumentBuilder.New()
    .AddSection()
        .AddParagraph("long text")
    .ToSection()
        .AddFooterToBothPages(40)
            .AddParagraph("this a footer set for each page of this section")
.ToDocument()
    .Build("result.pdf");

重復區域示例

這是一個教程,其中包含使用頁眉、頁腳、左/右重復區域的代碼示例: AddingRepeatingArea 教程

希望對你有幫助:)

我相信你可以結合https://github.com/itext/i7ns-samples/blob/develop/itext/itext.samples/itext/samples/sandbox/acroforms/AddExtraTable.cshttps://github的概念。 com/itext/i7ns-samples/blob/develop/itext/itext.samples/itext/samples/sandbox/events/TextFooter.cs來實現你所需要的。

思路如下:

  • 通過使 iText 為文檔的渲染器減少第一頁的空間,為您的盒子保留位置
  • 借助 iText 的結束頁面事件填充此框

如何在 iText7 的特定頁面底部插入元素? :您可以臨時調用Document#setBottomMargin ,因為通過Document#add的元素不會放置在邊距上。 然后,一旦第一頁布局,您可以再次設置初始邊距。 但是,此選項需要了解您的布局流程,因為只有在第一頁的內容布局后才應設置邊距。

再提一個建議:雖然事件功能還是比較靈活有用的,感覺就像是用大錘敲碎了堅果。 您需要調用Canvas#ShowTextAligned ,這可以在沒有任何事件處理的情況下完成。 因此,理想情況下,我更願意執行以下操作:

  • 通過DocumentRenderer的擴展處理頁面的布局區域
  • 調用Canvas#ShowTextAligned填充保留框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM