Add additional sparse array JSON tests

This commit is contained in:
m-holger 2024-02-10 16:59:20 +00:00
parent 431987475b
commit d28969bf37
4 changed files with 1282 additions and 1 deletions

View File

@ -33,5 +33,22 @@ $td->runtest("copy sparse array",
{$td->COMMAND => "test_driver 97 many-nulls.pdf"},
{$td->STRING => "test 97 done\n", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
$td->runtest("copy file with many nulls",
{$td->COMMAND =>
"qpdf minimal-nulls.pdf --qdf --static-id --no-original-object-ids a.pdf"},
{$td->STRING => "", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
$td->runtest("compare files",
{$td->FILE => "a.pdf"},
{$td->FILE => "minimal-nulls.pdf"});
$td->runtest("file with many nulls to JSON v1",
{$td->COMMAND => "qpdf minimal-nulls.pdf --json=1 -"},
{$td->FILE => "minimal-nulls-1.json", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
$td->runtest("file with many nulls to JSON v2",
{$td->COMMAND => "qpdf minimal-nulls.pdf --json=2 -"},
{$td->FILE => "minimal-nulls-2.json", $td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES);
cleanup();
$td->report(4);
$td->report(8);

View File

@ -0,0 +1,453 @@
{
"version": 1,
"parameters": {
"decodelevel": "generalized"
},
"pages": [
{
"contents": [
"4 0 R"
],
"images": [],
"label": null,
"object": "3 0 R",
"outlines": [],
"pageposfrom1": 1
}
],
"pagelabels": [],
"acroform": {
"fields": [],
"hasacroform": false,
"needappearances": false
},
"attachments": {},
"encrypt": {
"capabilities": {
"accessibility": true,
"extract": true,
"moddifyannotations": true,
"modify": true,
"modifyassembly": true,
"modifyforms": true,
"modifyother": true,
"printhigh": true,
"printlow": true
},
"encrypted": false,
"ownerpasswordmatched": false,
"parameters": {
"P": 0,
"R": 0,
"V": 0,
"bits": 0,
"filemethod": "none",
"key": null,
"method": "none",
"streammethod": "none",
"stringmethod": "none"
},
"recovereduserpassword": null,
"userpasswordmatched": false
},
"outlines": [],
"objects": {
"1 0 R": {
"/Pages": "2 0 R",
"/Type": "/Catalog"
},
"2 0 R": {
"/Count": 1,
"/Kids": [
"3 0 R"
],
"/Type": "/Pages"
},
"3 0 R": {
"/Contents": "4 0 R",
"/MediaBox": [
0,
0,
612,
792
],
"/Nulls": [
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"6 0 R",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
"/Parent": "2 0 R",
"/Resources": {
"/Font": {
"/F1": "7 0 R"
},
"/ProcSet": "8 0 R"
},
"/Type": "/Page"
},
"4 0 R": {
"/Length": "5 0 R"
},
"5 0 R": 44,
"6 0 R": null,
"7 0 R": {
"/BaseFont": "/Helvetica",
"/Encoding": "/WinAnsiEncoding",
"/Name": "/F1",
"/Subtype": "/Type1",
"/Type": "/Font"
},
"8 0 R": [
"/PDF",
"/Text"
],
"trailer": {
"/ID": [
"ÏîgE<67>EMÛÊߢ$²\u0005#",
"1AY&SXŠfi#—bd3…'Ł"
],
"/Root": "1 0 R",
"/Size": 9
}
},
"objectinfo": {
"1 0 R": {
"stream": {
"filter": null,
"is": false,
"length": null
}
},
"2 0 R": {
"stream": {
"filter": null,
"is": false,
"length": null
}
},
"3 0 R": {
"stream": {
"filter": null,
"is": false,
"length": null
}
},
"4 0 R": {
"stream": {
"filter": null,
"is": true,
"length": 44
}
},
"5 0 R": {
"stream": {
"filter": null,
"is": false,
"length": null
}
},
"6 0 R": {
"stream": {
"filter": null,
"is": false,
"length": null
}
},
"7 0 R": {
"stream": {
"filter": null,
"is": false,
"length": null
}
},
"8 0 R": {
"stream": {
"filter": null,
"is": false,
"length": null
}
}
}
}

View File

@ -0,0 +1,424 @@
{
"version": 2,
"parameters": {
"decodelevel": "generalized"
},
"pages": [
{
"contents": [
"4 0 R"
],
"images": [],
"label": null,
"object": "3 0 R",
"outlines": [],
"pageposfrom1": 1
}
],
"pagelabels": [],
"acroform": {
"fields": [],
"hasacroform": false,
"needappearances": false
},
"attachments": {},
"encrypt": {
"capabilities": {
"accessibility": true,
"extract": true,
"modify": true,
"modifyannotations": true,
"modifyassembly": true,
"modifyforms": true,
"modifyother": true,
"printhigh": true,
"printlow": true
},
"encrypted": false,
"ownerpasswordmatched": false,
"parameters": {
"P": 0,
"R": 0,
"V": 0,
"bits": 0,
"filemethod": "none",
"key": null,
"method": "none",
"streammethod": "none",
"stringmethod": "none"
},
"recovereduserpassword": null,
"userpasswordmatched": false
},
"outlines": [],
"qpdf": [
{
"jsonversion": 2,
"pdfversion": "1.3",
"pushedinheritedpageresources": false,
"calledgetallpages": true,
"maxobjectid": 8
},
{
"obj:1 0 R": {
"value": {
"/Pages": "2 0 R",
"/Type": "/Catalog"
}
},
"obj:2 0 R": {
"value": {
"/Count": 1,
"/Kids": [
"3 0 R"
],
"/Type": "/Pages"
}
},
"obj:3 0 R": {
"value": {
"/Contents": "4 0 R",
"/MediaBox": [
0,
0,
612,
792
],
"/Nulls": [
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"6 0 R",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
10,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
"/Parent": "2 0 R",
"/Resources": {
"/Font": {
"/F1": "7 0 R"
},
"/ProcSet": "8 0 R"
},
"/Type": "/Page"
}
},
"obj:4 0 R": {
"stream": {
"dict": {
"/Length": "5 0 R"
}
}
},
"obj:5 0 R": {
"value": 44
},
"obj:6 0 R": {
"value": null
},
"obj:7 0 R": {
"value": {
"/BaseFont": "/Helvetica",
"/Encoding": "/WinAnsiEncoding",
"/Name": "/F1",
"/Subtype": "/Type1",
"/Type": "/Font"
}
},
"obj:8 0 R": {
"value": [
"/PDF",
"/Text"
]
},
"trailer": {
"value": {
"/ID": [
"b:cfee6745ad454ddb88cadfa224b20523",
"b:31415926535897932384626433832795"
],
"/Root": "1 0 R",
"/Size": 9
}
}
}
]
}

View File

@ -0,0 +1,387 @@
%PDF-1.3
%¿÷¢þ
%QDF-1.0
1 0 obj
<<
/Pages 2 0 R
/Type /Catalog
>>
endobj
2 0 obj
<<
/Count 1
/Kids [
3 0 R
]
/Type /Pages
>>
endobj
%% Page 1
3 0 obj
<<
/Contents 4 0 R
/MediaBox [
0
0
612
792
]
/Nulls [
null
null
null
null
null
null
null
null
null
null
6 0 R
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
10
null
null
null
null
null
null
null
null
null
null
]
/Parent 2 0 R
/Resources <<
/Font <<
/F1 7 0 R
>>
/ProcSet 8 0 R
>>
/Type /Page
>>
endobj
%% Contents for page 1
4 0 obj
<<
/Length 5 0 R
>>
stream
BT
/F1 24 Tf
72 720 Td
(Potato) Tj
ET
endstream
endobj
5 0 obj
44
endobj
6 0 obj
null
endobj
7 0 obj
<<
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
/Name /F1
/Subtype /Type1
/Type /Font
>>
endobj
8 0 obj
[
/PDF
/Text
]
endobj
xref
0 9
0000000000 65535 f
0000000025 00000 n
0000000079 00000 n
0000000161 00000 n
0000002909 00000 n
0000003008 00000 n
0000003027 00000 n
0000003048 00000 n
0000003166 00000 n
trailer <<
/Root 1 0 R
/Size 9
/ID [<cfee6745ad454ddb88cadfa224b20523><31415926535897932384626433832795>]
>>
startxref
3201
%%EOF