summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Sharp <ken.sharp@artifex.com>2013-05-24 16:17:45 +0100
committerKen Sharp <ken.sharp@artifex.com>2013-05-24 16:18:36 +0100
commit2f08dfcd4db7f6a95ac9ee983692d922c09a1ffd (patch)
treec9bac0680e38d6fce8de4e53019a3df40da5c6e1
parent66695586781291ca37d190c537784ccf94595428 (diff)
downloadghostpdl-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.ps36
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