2010-02-19 31 views
0

我正在按照Chuck Ainslie's articles中的指示嚴格地構建自定義打印模板。我想要做的一件事就是用實際的頁碼生成一個目錄表。在自定義打印模板中獲取頁碼

有沒有什麼辦法可以找到layoutrect實例包含的文檔部分?基本上,我想掃描原始文檔中的特定標籤(例如<h1>標籤),然後找出哪些版面包含這些標籤。從那裏我可以找出哪個devicerect是父母,並告訴我的頁碼。

在佈局過程中,當調用onLayoutComplete處理程序時,似乎沒有任何方法可以獲得實際佈局的源代碼。

回答

0

我設法生成一個動態內容表(動態的意義上,頁碼在打印時收集,不在靜態HTML頁面)。雖然這並不漂亮。

我找不到任何方法來確定我的文檔的哪一部分正在流入特定設備和佈局矩形。相反,我將我的文檔分解成單獨的html文件,每個部分一個。要打印,我創建一個HTML文件,看起來大致是這樣的:

<html> 
    <body> 
    <h1>Table of Contents</h1> 
    <table> 
     <tr><th>Report</th><th>Page</th></tr> 
     <tr><td><a href="0.html">Foo</a></td><td>0</td></tr> 
     <tr><td><a href="1.html">Bar</a></td><td>0</td></tr> 
     <tr><td><a href="2.html">Etc</a></td><td>0</td></tr> 
     ... 
    </table> 
    </body> 
</html> 

而不是將該文件發送到打印機,我的打印模板翻出從文檔對象中的所有部分的URL。然後將它們發送給打印機,並且每個打印機都會跟蹤該部分打印的頁碼。打印完成後,它會更新原始文檔並用實際頁碼替換'0'佔位符。然後打印目錄。

這不是很優雅,現在我必須在我的打印模板代碼周圍添加其餘的UI。