我使用iTextSharp 5.5.7版生成PDF文檔,使用它們的「流式傳輸」模式 - 我的意思是我沒有指定每一段文本的位置,我只是將段落添加到文檔中,讓iTextSharp找出在哪裏繪製它們。我輸出的文本是報告生成器的結果,因此每次都是不同的。iText(Sharp) - 如何避免創建空白頁?
我遇到的問題是這樣的:想象一下,給定頁面大小和選定的字體,我可以在頁面上放置40行文本。我輸出40個段落,然後我輸出一個空白段落(內容=「」),然後是填充整個頁面的圖像。 iTextSharp完全按照我的說法進行 - 我最終獲得了一頁充滿文本,空白頁面,然後是包含我的圖像的頁面。
但現在我的文檔看起來很有趣 - 在這一切中間有一個意外的空白頁面。
我不能說「不輸出任何空白行」,因爲當然只有20行文字後纔會顯示空白行,在這種情況下,它必須在那裏。我需要一些方法來告訴iTextSharp「只有當它不是頁面上唯一的東西時才包含這個段落」,否則以某種方式檢測到頁面在OnEndPage()中是空白的,並禁止它的輸出(而不會破壞我的頁碼)。
有關我如何做到這一點的任何建議?
添加了來自報告生成LATER
輸出:
<html>
<p>Information header</p>
<p>Detail</p>
<p>Detail</p>
<p>Detail</p>
<p></p> <!-- Blank line inserted by report generator for clarity -->
<p>Information header</p>
<p>Detail</p>
<p>Detail</p>
<p>Detail</p>
...
<p>Detail</p> <!-- just by random happenstance this is the last line that will fit on the first page -->
<p></p> <!-- This line happens to be blank, I have no control over it -->
<img src="blah blah"></image>
我的(僞)代碼:
foreach (HtmlNode node in htmlFromReportGenerator)
{
if (node is text)
pdfDoc.Add(new Paragraph(node.text));
else if (node is image)
pdfDoc.Add(new Image(node.image));
}
你爲什麼要用插入空白頁的骯髒技巧?骯髒的技巧有骯髒的副作用。請參閱http://stackoverflow.com/a/11185274/1622493以瞭解如何添加空白頁。你不應該期望Stack Overflow上的人得到另一個答案,因爲你沒有提供任何允許我們重現你的問題的代碼。 –
我已經重讀了你的問題(它的表達方式非常混亂),也許你不想在40段和圖像之間添加一個空白頁。也許你正在使用添加空白段落的骯髒技巧,因爲你想在文本和圖像之間引入一些空格。在任何情況下,有這麼多文本和沒有示例代碼的問題,不是一個好的堆棧溢出問題。 –
無論如何:iText忽略'document.newPage()'如果頁面是空白的。如果你想引入一個空白頁面,你必須做一些特別的工作。聲明*這個意外空白的頁面在所有內容中*都不清楚。你應該做更多的努力來解釋這個問題。 –