![](/img/trans.png)
[英]How can I set top margin of the first page of pdf document using 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.cs和https://github的概念。 com/itext/i7ns-samples/blob/develop/itext/itext.samples/itext/samples/sandbox/events/TextFooter.cs來實現你所需要的。
思路如下:
如何在 iText7 的特定頁面底部插入元素? :您可以臨時調用Document#setBottomMargin
,因為通過Document#add
的元素不會放置在邊距上。 然后,一旦第一頁布局,您可以再次設置初始邊距。 但是,此選項需要了解您的布局流程,因為只有在第一頁的內容布局后才應設置邊距。
再提一個建議:雖然事件功能還是比較靈活有用的,感覺就像是用大錘敲碎了堅果。 您需要調用Canvas#ShowTextAligned
,這可以在沒有任何事件處理的情況下完成。 因此,理想情況下,我更願意執行以下操作:
DocumentRenderer
的擴展處理頁面的布局區域Canvas#ShowTextAligned
填充保留框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.