2010-02-19 3 views
0

Je crée un modèle d'impression personnalisé en suivant à la lettre les instructions de Chuck Ainslie's articles. Une chose que je voudrais faire est de générer une table des matières à la volée avec les numéros de page réels.Obtention de numéros de page dans un modèle d'impression personnalisé

Y a-t-il moyen de trouver quelle partie du document contient une instance de layoutrect? Fondamentalement, je veux numériser le document original pour des étiquettes spécifiques (disons <h1> étiquettes), puis comprendre quel layoutrect contient ces étiquettes. De là, je peux comprendre quel est le dévicerect est le parent et cela me dit le numéro de page.

Lors de la mise en page, lorsque le gestionnaire onLayoutComplete est appelé, il ne semble pas y avoir de moyen d'obtenir la source de ce qui a été réellement mis en page.

Répondre

0

J'ai réussi à générer une table des matières dynamique (dynamique dans le sens où les numéros de page sont collectés au moment de l'impression et ne sont pas dans la page html statique). Ce n'est pas joli cependant.

Je n'ai trouvé aucun moyen de déterminer quelle partie de mon document a été transférée dans le périphérique spécifique et les mises en page. Au lieu de cela, je divise mon document en fichiers html individuels, un pour chaque section. Pour imprimer, je crée un fichier HTML qui ressemble à peu près comme ceci:

<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> 

Plutôt que d'envoyer ce document à l'imprimante, mon modèle d'impression sur toutes les tractions URL de la section de l'objet document. Il envoie ensuite chacun d'entre eux à l'imprimante et pour chacun, il suit le numéro de page sur lequel la section est imprimée. Une fois l'impression terminée, le document d'origine est mis à jour et les espaces réservés '0' sont remplacés par les numéros de page réels. Ensuite, la table des matières est imprimée.

Ce n'est pas très élégant et maintenant je dois ajouter le reste de l'interface utilisateur autour de mon code de modèle d'impression.

Questions connexes