Preserve some outline functionality in page splitting

This commit is contained in:
Jay Berkenbilt 2018-12-19 17:01:56 -05:00
parent 4fbffdf8ed
commit 313ba08126
6 changed files with 2324 additions and 1 deletions

View File

@ -1,5 +1,13 @@
2018-12-19 Jay Berkenbilt <ejb@ql.org>
* When splitting pages using --split-pages, the outlines
dictionary and some supporting metadata are copied into the split
files. The result is that all bookmarks from the original file
appear, and those that point to pages that are preserved work
while those that point to pages that are not preserved don't do
anything. This is an interim step toward proper support for
bookmark preservation in split files.
* Add QPDFOutlineDocumentHelper and QPDFOutlineObjectHelper for
handling outlines (bookmarks) including bidirectionally mapping
between bookmarks and pages. Initially there is no support for

View File

@ -2622,6 +2622,30 @@ static void write_outfile(QPDF& pdf, Options& o)
"/Nums", QPDFObjectHandle::newArray(labels));
outpdf.getRoot().replaceKey("/PageLabels", page_labels);
}
// Copying the outlines tree, names table, and any
// outdated Dests key from the original file will make
// some things work in the split files. It is not a
// complete solution, but at least outlines whose
// destinations are on pages that have been preserved will
// work normally. There are other top-level structures
// that should be copied as well. This will be improved in
// the future.
std::list<std::string> to_copy;
to_copy.push_back("/Names");
to_copy.push_back("/Dests");
to_copy.push_back("/Outlines");
for (std::list<std::string>::iterator iter = to_copy.begin();
iter != to_copy.end(); ++iter)
{
QPDFObjectHandle orig = pdf.getRoot().getKey(*iter);
if (! orig.isIndirect())
{
orig = pdf.makeIndirectObject(orig);
}
outpdf.getRoot().replaceKey(
*iter,
outpdf.copyForeignObject(orig));
}
std::string page_range = QUtil::int_to_string(first, pageno_len);
if (o.split_pages > 1)
{

View File

@ -1159,7 +1159,7 @@ my @sp_cases = (
[11, 'pdf extension', '', 'split-out.Pdf'],
[4, 'fallback', '--pages 11-pages.pdf 1-3 minimal.pdf --', 'split-out'],
);
$n_tests += 12;
$n_tests += 16;
for (@sp_cases)
{
$n_tests += 1 + $_->[0];
@ -1204,6 +1204,17 @@ foreach my $i (qw(01-06 07-11))
{$td->FILE => "labels-split-$i.pdf"});
}
$td->runtest("split page with outlines",
{$td->COMMAND => "qpdf --qdf --static-id --split-pages=10".
" outlines-with-actions.pdf split-out-outlines.pdf"},
{$td->STRING => "", $td->EXIT_STATUS => 0});
foreach my $i (qw(01-10 11-20 21-30))
{
$td->runtest("check output ($i)",
{$td->FILE => "split-out-outlines-$i.pdf"},
{$td->FILE => "outlines-split-$i.pdf"});
}
foreach my $d (@sp_cases)
{
my ($n, $description, $xargs, $out) = @$d;

View File

@ -0,0 +1,760 @@
%PDF-1.3
%¿÷¢þ
%QDF-1.0
%% Original object ID: 1 0
1 0 obj
<<
/Names 2 0 R
/Outlines 3 0 R
/Pages 4 0 R
/Type /Catalog
>>
endobj
%% Original object ID: 35 0
2 0 obj
<<
/Dests 5 0 R
>>
endobj
%% Original object ID: 38 0
3 0 obj
<<
/Count 6
/First 6 0 R
/Last 7 0 R
/Type /Outlines
>>
endobj
%% Original object ID: 2 0
4 0 obj
<<
/Count 10
/Kids [
8 0 R
9 0 R
10 0 R
11 0 R
12 0 R
13 0 R
14 0 R
15 0 R
16 0 R
17 0 R
]
/Type /Pages
>>
endobj
%% Original object ID: 36 0
5 0 obj
<<
/Names [
(gabeebee)
[
9 0 R
/FitR
66
714
180
770
]
(glarp)
[
null
/XYZ
null
null
null
]
]
>>
endobj
%% Original object ID: 39 0
6 0 obj
<<
/Count 4
/Dest [
13 0 R
/XYZ
null
null
null
]
/First 18 0 R
/Last 19 0 R
/Next 7 0 R
/Parent 3 0 R
/Title (Potato 1 -> 5: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 50 0
7 0 obj
<<
/Dest [
null
/XYZ
66
756
3
]
/Parent 3 0 R
/Prev 6 0 R
/Title (Salad 2 -> 15: /XYZ 66 756 3)
/Type /Outline
>>
endobj
%% Page 1
%% Original object ID: 3 0
8 0 obj
<<
/Contents 20 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 2
%% Original object ID: 8 0
9 0 obj
<<
/Contents 24 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 3
%% Original object ID: 11 0
10 0 obj
<<
/Contents 26 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 4
%% Original object ID: 14 0
11 0 obj
<<
/Contents 28 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 5
%% Original object ID: 17 0
12 0 obj
<<
/Contents 30 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 6
%% Original object ID: 20 0
13 0 obj
<<
/Contents 32 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 7
%% Original object ID: 23 0
14 0 obj
<<
/Contents 34 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 8
%% Original object ID: 26 0
15 0 obj
<<
/Contents 36 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 9
%% Original object ID: 29 0
16 0 obj
<<
/Contents 38 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 10
%% Original object ID: 32 0
17 0 obj
<<
/Contents 40 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Original object ID: 40 0
18 0 obj
<<
/Count -3
/Dest [
null
/Fit
]
/First 42 0 R
/Last 43 0 R
/Next 19 0 R
/Parent 6 0 R
/Title (Mern 1.1 -> 11: /Fit)
/Type /Outline
>>
endobj
%% Original object ID: 47 0
19 0 obj
<<
/Count 2
/Dest [
null
/FitH
792
]
/First 44 0 R
/Last 45 0 R
/Parent 6 0 R
/Prev 18 0 R
/Title <feff005300710075006100730068002000f703c002ac00f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032>
/Type /Outline
>>
endobj
%% Contents for page 1
%% Original object ID: 4 0
20 0 obj
<<
/Length 21 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 0) Tj
ET
endstream
endobj
21 0 obj
45
endobj
%% Original object ID: 6 0
22 0 obj
<<
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
/Name /F1
/Subtype /Type1
/Type /Font
>>
endobj
%% Original object ID: 7 0
23 0 obj
[
/PDF
/Text
]
endobj
%% Contents for page 2
%% Original object ID: 9 0
24 0 obj
<<
/Length 25 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 1) Tj
ET
endstream
endobj
25 0 obj
45
endobj
%% Contents for page 3
%% Original object ID: 12 0
26 0 obj
<<
/Length 27 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 2) Tj
ET
endstream
endobj
27 0 obj
45
endobj
%% Contents for page 4
%% Original object ID: 15 0
28 0 obj
<<
/Length 29 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 3) Tj
ET
endstream
endobj
29 0 obj
45
endobj
%% Contents for page 5
%% Original object ID: 18 0
30 0 obj
<<
/Length 31 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 4) Tj
ET
endstream
endobj
31 0 obj
45
endobj
%% Contents for page 6
%% Original object ID: 21 0
32 0 obj
<<
/Length 33 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 5) Tj
ET
endstream
endobj
33 0 obj
45
endobj
%% Contents for page 7
%% Original object ID: 24 0
34 0 obj
<<
/Length 35 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 6) Tj
ET
endstream
endobj
35 0 obj
45
endobj
%% Contents for page 8
%% Original object ID: 27 0
36 0 obj
<<
/Length 37 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 7) Tj
ET
endstream
endobj
37 0 obj
45
endobj
%% Contents for page 9
%% Original object ID: 30 0
38 0 obj
<<
/Length 39 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 8) Tj
ET
endstream
endobj
39 0 obj
45
endobj
%% Contents for page 10
%% Original object ID: 33 0
40 0 obj
<<
/Length 41 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 9) Tj
ET
endstream
endobj
41 0 obj
45
endobj
%% Original object ID: 41 0
42 0 obj
<<
/Count -2
/Dest [
null
/FitV
100
]
/First 46 0 R
/Last 47 0 R
/Next 43 0 R
/Parent 18 0 R
/Title (Biherbadem 1.1.1 -> 12: /FitV 100)
/Type /Outline
>>
endobj
%% Original object ID: 44 0
43 0 obj
<<
/Count 1
/Dest [
null
/XYZ
null
null
null
]
/First 48 0 R
/Last 48 0 R
/Parent 18 0 R
/Prev 42 0 R
/Title (Gawehwehweh 1.1.2 -> 12: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 48 0
44 0 obj
<<
/Dest (gabeebee)
/Next 45 0 R
/Parent 19 0 R
/Title (Gabeebeebee \(name\) 1.2.1 -> 1: /FitR 66 714 180 770)
/Type /Outline
>>
endobj
%% Original object ID: 49 0
45 0 obj
<<
/A <<
/D [
8 0 R
/XYZ
null
null
null
]
/S /GoTo
/Type /Action
>>
/Parent 19 0 R
/Prev 44 0 R
/Title (Merschqaberschq \(A\) 1.2.2 -> 0: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 42 0
46 0 obj
<<
/A <<
/D (glarp)
/S /GoTo
/Type /Action
>>
/Next 47 0 R
/Parent 42 0 R
/Title (Glarpenspliel \(A, name\) 1.1.1.1 -> 18: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 43 0
47 0 obj
<<
/Dest [
null
/XYZ
null
null
null
]
/Parent 42 0 R
/Prev 46 0 R
/Title (Hagoogamagoogle 1.1.1.2 -> 19: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 45 0
48 0 obj
<<
/Dest 49 0 R
/Parent 43 0 R
/Title (Jawarnianbvarwash 1.1.2.1 -> 22: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 46 0
49 0 obj
[
null
/XYZ
null
null
null
]
endobj
xref
0 50
0000000000 65535 f
0000000052 00000 n
0000000167 00000 n
0000000232 00000 n
0000000339 00000 n
0000000538 00000 n
0000000772 00000 n
0000001018 00000 n
0000001217 00000 n
0000001449 00000 n
0000001682 00000 n
0000001916 00000 n
0000002150 00000 n
0000002384 00000 n
0000002618 00000 n
0000002852 00000 n
0000003086 00000 n
0000003321 00000 n
0000003545 00000 n
0000003751 00000 n
0000004099 00000 n
0000004201 00000 n
0000004248 00000 n
0000004394 00000 n
0000004480 00000 n
0000004582 00000 n
0000004653 00000 n
0000004755 00000 n
0000004826 00000 n
0000004928 00000 n
0000004999 00000 n
0000005101 00000 n
0000005172 00000 n
0000005274 00000 n
0000005345 00000 n
0000005447 00000 n
0000005518 00000 n
0000005620 00000 n
0000005691 00000 n
0000005793 00000 n
0000005865 00000 n
0000005967 00000 n
0000006015 00000 n
0000006244 00000 n
0000006501 00000 n
0000006685 00000 n
0000006965 00000 n
0000007196 00000 n
0000007417 00000 n
0000007581 00000 n
trailer <<
/Root 1 0 R
/Size 50
/ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
>>
startxref
7637
%%EOF

View File

@ -0,0 +1,760 @@
%PDF-1.3
%¿÷¢þ
%QDF-1.0
%% Original object ID: 1 0
1 0 obj
<<
/Names 2 0 R
/Outlines 3 0 R
/Pages 4 0 R
/Type /Catalog
>>
endobj
%% Original object ID: 35 0
2 0 obj
<<
/Dests 5 0 R
>>
endobj
%% Original object ID: 38 0
3 0 obj
<<
/Count 6
/First 6 0 R
/Last 7 0 R
/Type /Outlines
>>
endobj
%% Original object ID: 2 0
4 0 obj
<<
/Count 10
/Kids [
8 0 R
9 0 R
10 0 R
11 0 R
12 0 R
13 0 R
14 0 R
15 0 R
16 0 R
17 0 R
]
/Type /Pages
>>
endobj
%% Original object ID: 36 0
5 0 obj
<<
/Names [
(gabeebee)
[
null
/FitR
66
714
180
770
]
(glarp)
[
16 0 R
/XYZ
null
null
null
]
]
>>
endobj
%% Original object ID: 39 0
6 0 obj
<<
/Count 4
/Dest [
null
/XYZ
null
null
null
]
/First 18 0 R
/Last 19 0 R
/Next 7 0 R
/Parent 3 0 R
/Title (Potato 1 -> 5: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 50 0
7 0 obj
<<
/Dest [
13 0 R
/XYZ
66
756
3
]
/Parent 3 0 R
/Prev 6 0 R
/Title (Salad 2 -> 15: /XYZ 66 756 3)
/Type /Outline
>>
endobj
%% Page 1
%% Original object ID: 3 0
8 0 obj
<<
/Contents 20 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 2
%% Original object ID: 8 0
9 0 obj
<<
/Contents 24 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 3
%% Original object ID: 11 0
10 0 obj
<<
/Contents 26 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 4
%% Original object ID: 14 0
11 0 obj
<<
/Contents 28 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 5
%% Original object ID: 17 0
12 0 obj
<<
/Contents 30 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 6
%% Original object ID: 20 0
13 0 obj
<<
/Contents 32 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 7
%% Original object ID: 23 0
14 0 obj
<<
/Contents 34 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 8
%% Original object ID: 26 0
15 0 obj
<<
/Contents 36 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 9
%% Original object ID: 29 0
16 0 obj
<<
/Contents 38 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 10
%% Original object ID: 32 0
17 0 obj
<<
/Contents 40 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Original object ID: 40 0
18 0 obj
<<
/Count -3
/Dest [
9 0 R
/Fit
]
/First 42 0 R
/Last 43 0 R
/Next 19 0 R
/Parent 6 0 R
/Title (Mern 1.1 -> 11: /Fit)
/Type /Outline
>>
endobj
%% Original object ID: 47 0
19 0 obj
<<
/Count 2
/Dest [
11 0 R
/FitH
792
]
/First 44 0 R
/Last 45 0 R
/Parent 6 0 R
/Prev 18 0 R
/Title <feff005300710075006100730068002000f703c002ac00f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032>
/Type /Outline
>>
endobj
%% Contents for page 1
%% Original object ID: 4 0
20 0 obj
<<
/Length 21 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 10) Tj
ET
endstream
endobj
21 0 obj
46
endobj
%% Original object ID: 6 0
22 0 obj
<<
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
/Name /F1
/Subtype /Type1
/Type /Font
>>
endobj
%% Original object ID: 7 0
23 0 obj
[
/PDF
/Text
]
endobj
%% Contents for page 2
%% Original object ID: 9 0
24 0 obj
<<
/Length 25 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 11) Tj
ET
endstream
endobj
25 0 obj
46
endobj
%% Contents for page 3
%% Original object ID: 12 0
26 0 obj
<<
/Length 27 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 12) Tj
ET
endstream
endobj
27 0 obj
46
endobj
%% Contents for page 4
%% Original object ID: 15 0
28 0 obj
<<
/Length 29 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 13) Tj
ET
endstream
endobj
29 0 obj
46
endobj
%% Contents for page 5
%% Original object ID: 18 0
30 0 obj
<<
/Length 31 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 14) Tj
ET
endstream
endobj
31 0 obj
46
endobj
%% Contents for page 6
%% Original object ID: 21 0
32 0 obj
<<
/Length 33 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 15) Tj
ET
endstream
endobj
33 0 obj
46
endobj
%% Contents for page 7
%% Original object ID: 24 0
34 0 obj
<<
/Length 35 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 16) Tj
ET
endstream
endobj
35 0 obj
46
endobj
%% Contents for page 8
%% Original object ID: 27 0
36 0 obj
<<
/Length 37 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 17) Tj
ET
endstream
endobj
37 0 obj
46
endobj
%% Contents for page 9
%% Original object ID: 30 0
38 0 obj
<<
/Length 39 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 18) Tj
ET
endstream
endobj
39 0 obj
46
endobj
%% Contents for page 10
%% Original object ID: 33 0
40 0 obj
<<
/Length 41 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 19) Tj
ET
endstream
endobj
41 0 obj
46
endobj
%% Original object ID: 41 0
42 0 obj
<<
/Count -2
/Dest [
10 0 R
/FitV
100
]
/First 46 0 R
/Last 47 0 R
/Next 43 0 R
/Parent 18 0 R
/Title (Biherbadem 1.1.1 -> 12: /FitV 100)
/Type /Outline
>>
endobj
%% Original object ID: 44 0
43 0 obj
<<
/Count 1
/Dest [
10 0 R
/XYZ
null
null
null
]
/First 48 0 R
/Last 48 0 R
/Parent 18 0 R
/Prev 42 0 R
/Title (Gawehwehweh 1.1.2 -> 12: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 48 0
44 0 obj
<<
/Dest (gabeebee)
/Next 45 0 R
/Parent 19 0 R
/Title (Gabeebeebee \(name\) 1.2.1 -> 1: /FitR 66 714 180 770)
/Type /Outline
>>
endobj
%% Original object ID: 49 0
45 0 obj
<<
/A <<
/D [
null
/XYZ
null
null
null
]
/S /GoTo
/Type /Action
>>
/Parent 19 0 R
/Prev 44 0 R
/Title (Merschqaberschq \(A\) 1.2.2 -> 0: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 42 0
46 0 obj
<<
/A <<
/D (glarp)
/S /GoTo
/Type /Action
>>
/Next 47 0 R
/Parent 42 0 R
/Title (Glarpenspliel \(A, name\) 1.1.1.1 -> 18: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 43 0
47 0 obj
<<
/Dest [
17 0 R
/XYZ
null
null
null
]
/Parent 42 0 R
/Prev 46 0 R
/Title (Hagoogamagoogle 1.1.1.2 -> 19: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 45 0
48 0 obj
<<
/Dest 49 0 R
/Parent 43 0 R
/Title (Jawarnianbvarwash 1.1.2.1 -> 22: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 46 0
49 0 obj
[
null
/XYZ
null
null
null
]
endobj
xref
0 50
0000000000 65535 f
0000000052 00000 n
0000000167 00000 n
0000000232 00000 n
0000000339 00000 n
0000000538 00000 n
0000000773 00000 n
0000001017 00000 n
0000001218 00000 n
0000001450 00000 n
0000001683 00000 n
0000001917 00000 n
0000002151 00000 n
0000002385 00000 n
0000002619 00000 n
0000002853 00000 n
0000003087 00000 n
0000003322 00000 n
0000003546 00000 n
0000003753 00000 n
0000004103 00000 n
0000004206 00000 n
0000004253 00000 n
0000004399 00000 n
0000004485 00000 n
0000004588 00000 n
0000004659 00000 n
0000004762 00000 n
0000004833 00000 n
0000004936 00000 n
0000005007 00000 n
0000005110 00000 n
0000005181 00000 n
0000005284 00000 n
0000005355 00000 n
0000005458 00000 n
0000005529 00000 n
0000005632 00000 n
0000005703 00000 n
0000005806 00000 n
0000005878 00000 n
0000005981 00000 n
0000006029 00000 n
0000006260 00000 n
0000006519 00000 n
0000006703 00000 n
0000006982 00000 n
0000007213 00000 n
0000007436 00000 n
0000007600 00000 n
trailer <<
/Root 1 0 R
/Size 50
/ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
>>
startxref
7656
%%EOF

View File

@ -0,0 +1,760 @@
%PDF-1.3
%¿÷¢þ
%QDF-1.0
%% Original object ID: 1 0
1 0 obj
<<
/Names 2 0 R
/Outlines 3 0 R
/Pages 4 0 R
/Type /Catalog
>>
endobj
%% Original object ID: 35 0
2 0 obj
<<
/Dests 5 0 R
>>
endobj
%% Original object ID: 38 0
3 0 obj
<<
/Count 6
/First 6 0 R
/Last 7 0 R
/Type /Outlines
>>
endobj
%% Original object ID: 2 0
4 0 obj
<<
/Count 10
/Kids [
8 0 R
9 0 R
10 0 R
11 0 R
12 0 R
13 0 R
14 0 R
15 0 R
16 0 R
17 0 R
]
/Type /Pages
>>
endobj
%% Original object ID: 36 0
5 0 obj
<<
/Names [
(gabeebee)
[
null
/FitR
66
714
180
770
]
(glarp)
[
null
/XYZ
null
null
null
]
]
>>
endobj
%% Original object ID: 39 0
6 0 obj
<<
/Count 4
/Dest [
null
/XYZ
null
null
null
]
/First 18 0 R
/Last 19 0 R
/Next 7 0 R
/Parent 3 0 R
/Title (Potato 1 -> 5: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 50 0
7 0 obj
<<
/Dest [
null
/XYZ
66
756
3
]
/Parent 3 0 R
/Prev 6 0 R
/Title (Salad 2 -> 15: /XYZ 66 756 3)
/Type /Outline
>>
endobj
%% Page 1
%% Original object ID: 3 0
8 0 obj
<<
/Contents 20 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 2
%% Original object ID: 8 0
9 0 obj
<<
/Contents 24 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 3
%% Original object ID: 11 0
10 0 obj
<<
/Contents 26 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 4
%% Original object ID: 14 0
11 0 obj
<<
/Contents 28 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 5
%% Original object ID: 17 0
12 0 obj
<<
/Contents 30 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 6
%% Original object ID: 20 0
13 0 obj
<<
/Contents 32 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 7
%% Original object ID: 23 0
14 0 obj
<<
/Contents 34 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 8
%% Original object ID: 26 0
15 0 obj
<<
/Contents 36 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 9
%% Original object ID: 29 0
16 0 obj
<<
/Contents 38 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Page 10
%% Original object ID: 32 0
17 0 obj
<<
/Contents 40 0 R
/MediaBox [
0
0
612
792
]
/Parent 4 0 R
/Resources <<
/Font <<
/F1 22 0 R
>>
/ProcSet 23 0 R
>>
/Type /Page
>>
endobj
%% Original object ID: 40 0
18 0 obj
<<
/Count -3
/Dest [
null
/Fit
]
/First 42 0 R
/Last 43 0 R
/Next 19 0 R
/Parent 6 0 R
/Title (Mern 1.1 -> 11: /Fit)
/Type /Outline
>>
endobj
%% Original object ID: 47 0
19 0 obj
<<
/Count 2
/Dest [
null
/FitH
792
]
/First 44 0 R
/Last 45 0 R
/Parent 6 0 R
/Prev 18 0 R
/Title <feff005300710075006100730068002000f703c002ac00f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032>
/Type /Outline
>>
endobj
%% Contents for page 1
%% Original object ID: 4 0
20 0 obj
<<
/Length 21 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 20) Tj
ET
endstream
endobj
21 0 obj
46
endobj
%% Original object ID: 6 0
22 0 obj
<<
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
/Name /F1
/Subtype /Type1
/Type /Font
>>
endobj
%% Original object ID: 7 0
23 0 obj
[
/PDF
/Text
]
endobj
%% Contents for page 2
%% Original object ID: 9 0
24 0 obj
<<
/Length 25 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 21) Tj
ET
endstream
endobj
25 0 obj
46
endobj
%% Contents for page 3
%% Original object ID: 12 0
26 0 obj
<<
/Length 27 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 22) Tj
ET
endstream
endobj
27 0 obj
46
endobj
%% Contents for page 4
%% Original object ID: 15 0
28 0 obj
<<
/Length 29 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 23) Tj
ET
endstream
endobj
29 0 obj
46
endobj
%% Contents for page 5
%% Original object ID: 18 0
30 0 obj
<<
/Length 31 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 24) Tj
ET
endstream
endobj
31 0 obj
46
endobj
%% Contents for page 6
%% Original object ID: 21 0
32 0 obj
<<
/Length 33 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 25) Tj
ET
endstream
endobj
33 0 obj
46
endobj
%% Contents for page 7
%% Original object ID: 24 0
34 0 obj
<<
/Length 35 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 26) Tj
ET
endstream
endobj
35 0 obj
46
endobj
%% Contents for page 8
%% Original object ID: 27 0
36 0 obj
<<
/Length 37 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 27) Tj
ET
endstream
endobj
37 0 obj
46
endobj
%% Contents for page 9
%% Original object ID: 30 0
38 0 obj
<<
/Length 39 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 28) Tj
ET
endstream
endobj
39 0 obj
46
endobj
%% Contents for page 10
%% Original object ID: 33 0
40 0 obj
<<
/Length 41 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Salad 29) Tj
ET
endstream
endobj
41 0 obj
46
endobj
%% Original object ID: 41 0
42 0 obj
<<
/Count -2
/Dest [
null
/FitV
100
]
/First 46 0 R
/Last 47 0 R
/Next 43 0 R
/Parent 18 0 R
/Title (Biherbadem 1.1.1 -> 12: /FitV 100)
/Type /Outline
>>
endobj
%% Original object ID: 44 0
43 0 obj
<<
/Count 1
/Dest [
null
/XYZ
null
null
null
]
/First 48 0 R
/Last 48 0 R
/Parent 18 0 R
/Prev 42 0 R
/Title (Gawehwehweh 1.1.2 -> 12: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 48 0
44 0 obj
<<
/Dest (gabeebee)
/Next 45 0 R
/Parent 19 0 R
/Title (Gabeebeebee \(name\) 1.2.1 -> 1: /FitR 66 714 180 770)
/Type /Outline
>>
endobj
%% Original object ID: 49 0
45 0 obj
<<
/A <<
/D [
null
/XYZ
null
null
null
]
/S /GoTo
/Type /Action
>>
/Parent 19 0 R
/Prev 44 0 R
/Title (Merschqaberschq \(A\) 1.2.2 -> 0: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 42 0
46 0 obj
<<
/A <<
/D (glarp)
/S /GoTo
/Type /Action
>>
/Next 47 0 R
/Parent 42 0 R
/Title (Glarpenspliel \(A, name\) 1.1.1.1 -> 18: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 43 0
47 0 obj
<<
/Dest [
null
/XYZ
null
null
null
]
/Parent 42 0 R
/Prev 46 0 R
/Title (Hagoogamagoogle 1.1.1.2 -> 19: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 45 0
48 0 obj
<<
/Dest 49 0 R
/Parent 43 0 R
/Title (Jawarnianbvarwash 1.1.2.1 -> 22: /XYZ null null null)
/Type /Outline
>>
endobj
%% Original object ID: 46 0
49 0 obj
[
10 0 R
/XYZ
null
null
null
]
endobj
xref
0 50
0000000000 65535 f
0000000052 00000 n
0000000167 00000 n
0000000232 00000 n
0000000339 00000 n
0000000538 00000 n
0000000771 00000 n
0000001015 00000 n
0000001214 00000 n
0000001446 00000 n
0000001679 00000 n
0000001913 00000 n
0000002147 00000 n
0000002381 00000 n
0000002615 00000 n
0000002849 00000 n
0000003083 00000 n
0000003318 00000 n
0000003542 00000 n
0000003748 00000 n
0000004096 00000 n
0000004199 00000 n
0000004246 00000 n
0000004392 00000 n
0000004478 00000 n
0000004581 00000 n
0000004652 00000 n
0000004755 00000 n
0000004826 00000 n
0000004929 00000 n
0000005000 00000 n
0000005103 00000 n
0000005174 00000 n
0000005277 00000 n
0000005348 00000 n
0000005451 00000 n
0000005522 00000 n
0000005625 00000 n
0000005696 00000 n
0000005799 00000 n
0000005871 00000 n
0000005974 00000 n
0000006022 00000 n
0000006251 00000 n
0000006508 00000 n
0000006692 00000 n
0000006971 00000 n
0000007202 00000 n
0000007423 00000 n
0000007587 00000 n
trailer <<
/Root 1 0 R
/Size 50
/ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
>>
startxref
7645
%%EOF