2016-04-12 28 views
3

Ist es möglich, mit pdfmake eine Inhaltsverzeichnisstabelle (TOC) zu erstellen? Die Bibliothek wird die PDF für mich generieren, aber ich habe keine Ahnung, auf welcher Seite ein bestimmtes Objekt gerendert wird. Dies hängt natürlich von der Seitengröße, Ausrichtung usw. ab. Einige Inhalte werden auf eine nächste Seite geleitet. Ich kann nicht sehen, wie ich im Voraus berechnen soll, wo ein Kapitel endet.Wie erstellt man ein Inhaltsverzeichnis mit pdfmake?

dieses Dokument Definition vor:

var dd = { 
    footer: function(currentPage, pageCount) { return currentPage.toString() + ' of ' + pageCount; }, 
    content: [ 
     'Table of contents\n\n', 
     'Chapter 1 ....... ?', 
     'Chapter 2 ....... ?', 
     'Chapter 3 ....... ?', 
     'Chapter 4 ....... ?', 
     { 
      text: '', 
      pageBreak: 'after' 
     }, 
     { 
      text: 'Chapter 1: is on page 2', 
      pageBreak: 'after' 
     }, 
     { 
      stack: [ 
       'Chapter 2: is on page 3\n', 
       'A LOT OF ROWS 2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n', 
       'A LOT OF ROWS 2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n', 
       'A LOT OF ROWS 2\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n', 
       'A LOT OF ROWS 2\nWill go to the next page if this line contains a lot of text. Will go to the next page if this line contains a lot of text. Will go to the next page if this line contains a lot of text.' 
       ], 
      pageBreak: 'after' 
     }, 
     { 
      text: 'chapter 3: is on page 5', 
      pageBreak: 'after' 
     }, 
     { 
      text: 'chapter 4: is on page 6' 
     }, 
    ] 
} 

Die einfachste wat zu Test ist dieses dd Objekt auf dem Spielplatz einzufügen: http://pdfmake.org/playground.html

Alle Ideen, wie ein Inhaltsverzeichnis erstellen?

Antwort

2

Während diese erst vor kurzem unterstützt Sie jetzt tun können

var docDefinition = { 
    content: [ 
    { 
     toc: { 
     // id: 'mainToc' // optional 
     title: {text: 'INDEX', style: 'header'} 
     } 
    }, 
    { 
     text: 'This is a header', 
     style: 'header', 
     tocItem: true, // or tocItem: 'mainToc' if is used id in toc 
     // or tocItem: ['mainToc', 'subToc'] for multiple tocs 
    } 
    ] 
} 

Quelle: https://github.com/bpampuch/pdfmake#table-of-contents


Bitte beachten Sie, dass dies in der jüngsten 0.1.28 Release noch nicht ist. Aber ich denke, es wird in den nächsten aufgenommen werden und in der Zwischenzeit können Sie bequem von der Quelle bauen:

git clone https://github.com/bpampuch/pdfmake.git 
cd pdfmake 
npm install # or: yarn 
git submodule update --init libs/FileSaver.js 
npm run build # or: yarn run build 

Quelle: https://github.com/bpampuch/pdfmake#building-from-sources


kann ich bestätigen, dass die oben ToC Beispiel in diesem Fall funktioniert so lange, wie Sie mindestens eine tocItem haben. Null tocItem s und eine toc werden derzeit wegen der leeren ToC-Tabelle eine Ausnahme auslösen.