我正在紧跟Chuck Ainslie's articles中的指示构建自定义打印模板。我想做的一件事是使用实际的页码生成一个目录。
有没有办法找到layoutrect实例包含的文档部分?基本上,我想扫描原始文档中的特定标签(例如< h1>标签),然后找出哪个layoutrect包含这些标签。从那里我可以找出哪个devicerect是父母,并告诉我页码。
在布局期间,当调用onLayoutComplete处理程序时,似乎没有任何方法可以获得实际布局的源。
答案 0 :(得分: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。