diff options
author | Ken Sharp <ken.sharp@artifex.com> | 2013-05-24 16:17:45 +0100 |
---|---|---|
committer | Ken Sharp <ken.sharp@artifex.com> | 2013-05-24 16:18:36 +0100 |
commit | 2f08dfcd4db7f6a95ac9ee983692d922c09a1ffd (patch) | |
tree | c9bac0680e38d6fce8de4e53019a3df40da5c6e1 | |
parent | 66695586781291ca37d190c537784ccf94595428 (diff) | |
download | ghostpdl-2f08dfcd4db7f6a95ac9ee983692d922c09a1ffd.tar.gz |
pdfwrite - ignore overly complex PageLabels for now
The current PageLabels code doesn't handle anything except the simplest
case (/Nums at the page tree root), so ignore anything more complex so
that we don't throw an error.
More work to do, I want to handle a proper tree.
No differences expected.
-rw-r--r-- | gs/Resource/Init/gs_pdfwr.ps | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/gs/Resource/Init/gs_pdfwr.ps b/gs/Resource/Init/gs_pdfwr.ps index 604746ba9..1308c45a6 100644 --- a/gs/Resource/Init/gs_pdfwr.ps +++ b/gs/Resource/Init/gs_pdfwr.ps @@ -469,20 +469,28 @@ userdict /.pdfcvstring () put /.pdfpagelabels { dup type /dicttype eq { - /Nums oget - mark exch - 0 1 2 index length 1 sub { - 1 index exch oget - exch - } for - pop - counttomark array astore - 1 dict dup begin exch /Nums exch def end - .pdfcvs - mark /pdfpagelabels 3 -1 roll .pdfputparams - dup type /booleantype ne { - /pdfpagelabels .pdfparamerror - } if cleartomark + dup /Nums knownoget { + exch pop + mark exch + 0 1 2 index length 1 sub { + 1 index exch oget + exch + } for + pop + counttomark array astore + 1 dict dup begin exch /Nums exch def end + .pdfcvs + mark /pdfpagelabels 3 -1 roll .pdfputparams + dup type /booleantype ne { + /pdfpagelabels .pdfparamerror + } if cleartomark + }{ + /Kids knownoget { + (PageLabel tree too complex, ignoring PageLabels\n) print flush + }{ + (Invalid number tree in PageLabels, ignoring PageLabels\n) print flush + }ifelse + }ifelse }{ /pdfpagelabels .pdfparamerror } ifelse |