2009-07-08 8 views
3

Ich versuche, ein RTF-Dokument von Hand zu generieren und wird es schließlich programmatisch tun. Ich plane, pyRTF zu verbessern, so dass es "Inhaltsverzeichnis" generieren kann, was meiner Meinung nach nicht möglich ist.Inhaltsverzeichnis zum RTF-Dokument hinzufügen

Ich kann RTF-Steuerwörter (\ tc, \ tcf und \ tcl.) Nicht verwenden, um ein Inhaltsverzeichnis zu generieren. http://msdn.microsoft.com/en-us/library/aa140283(office.10).aspx gibt Details über TOC, aber ich konnte kein RTF finden oder machen, die ein Inhaltsverzeichnis haben.

Also gibt es ein einfaches Beispiel, das eine RTF mit TOC zeigt?

Antwort

2

Ich erstelle eine Tabelle mit Hyperlinks zu Lesezeichen zum Titel auf verschiedenen Seiten.

z.B.

'{\\field{\\*\\fldinst HYPERLINK \\\\l "%s"} {\\fldrslt %s}}'%(bookmark, text) 
"{\\field{\\*\\fldinst PAGEREF %s }}"%bookmark 
1
{\rtf1\ansi\deff0\adeflang1045 
{\fonttbl {\f0\fsserif\fcharset238 Verdana;}} 

\titlepage\line\line\line\line\line 
{\pard \s1\f0\b\scaps\fs80\qc 
{\field{\*\fldinst HYPERLINK \\l "toc"} {\fldrslt\ul0 Title Page\line\fs30\scaps0\b0 go to Table of Contents}} 
\par} 

\page{\*\bkmkstart page2}{\*\bkmkend page2}\line\line\line\line\line{\pard\f0\fs80\b\scaps\qc\sa10000{\field{\*\fldinst HYPERLINK \\l "toc"} {\fldrslt Page \chpgn}}\par} 
\page{\*\bkmkstart page3}{\*\bkmkend page3}\line\line\line\line\line{\pard\f0\fs80\b\scaps\qc\sa10000{\field{\*\fldinst HYPERLINK \\l "toc"} {\fldrslt Page \chpgn}}\par} 
\page{\*\bkmkstart page4}{\*\bkmkend page4}\line\line\line\line\line{\pard\f0\fs80\b\scaps\qc\sa10000{\field{\*\fldinst HYPERLINK \\l "toc"} {\fldrslt Page \chpgn}}\par} 
\page{\*\bkmkstart page5}{\*\bkmkend page5}\line\line\line\line\line{\pard\f0\fs80\b\scaps\qc\sa10000{\field{\*\fldinst HYPERLINK \\l "toc"} {\fldrslt Page \chpgn}}\par} 

\page{\*\bkmkstart toc}{\*\bkmkend toc}{\pard\sa1000\f0\fs50\b\qc{\field{\*\fldinst TOC}{\fldrslt Table of Contents}}\par} 
{\pard\f0\fs28\fi0\trowd\cellx8000\cellx8600 
\pard\intbl\ql {\field{\*\fldinst HYPERLINK \\l "page2"} {\fldrslt\ul0 Link to anchor #page2}}\cell\pard\intbl\qr {\field{\*\fldinst PAGEREF page2}}\cell\row 
\pard\intbl\ql {\field{\*\fldinst HYPERLINK \\l "page3"} {\fldrslt\ul0 Link to anchor #page3}}\cell\pard\intbl\qr {\field{\*\fldinst PAGEREF page3}}\cell\row 
\pard\intbl\ql {\field{\*\fldinst HYPERLINK \\l "page4"} {\fldrslt\ul0 Link to anchor #page4}}\cell\pard\intbl\qr {\field{\*\fldinst PAGEREF page4}}\cell\row 
\pard\intbl\ql {\field{\*\fldinst HYPERLINK \\l "page5"} {\fldrslt\ul0 Link to anchor #page5}}\cell\pard\intbl\qr {\field{\*\fldinst PAGEREF page5}}\cell\row 
\par} 
} 
+0

Dieser Code-Schnipsel geht in eine Endlosschleife auf meinem Computer. – Ags1