diff --git a/ChangeLog b/ChangeLog index 254c589e..68aff3fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2020-01-26 Jay Berkenbilt + * Add "encrypt" key to the json output. This contains largely the + same information as given by --show-encryption but in a + consistent, parseable format. + * Add options --is-encrypted and --requires-password. These can be used with files, including encrypted files with unknown passwords, to determine whether or not a file is encrypted and whether a diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml index 3f455d83..343dbf63 100644 --- a/manual/qpdf-manual.xml +++ b/manual/qpdf-manual.xml @@ -4725,6 +4725,18 @@ print "\n"; + + + + Added encrypt key to JSON options. With + the exception of the reconstructed user password for older + encryption formats, this provides the same information as + but in a consistent, + parseable format. See output of qpdf + --json-help for details. + + + diff --git a/qpdf/qpdf.cc b/qpdf/qpdf.cc index 0ea32b8c..9be49ac5 100644 --- a/qpdf/qpdf.cc +++ b/qpdf/qpdf.cc @@ -564,6 +564,83 @@ static JSON json_schema(std::set* keys = 0) "annotation flags from /F --" " see pdf_annotation_flag_e in qpdf/Constants.h")); } + if (all_keys || keys->count("encrypt")) + { + JSON encrypt = schema.addDictionaryMember( + "encrypt", JSON::makeDictionary()); + encrypt.addDictionaryMember( + "encrypted", + JSON::makeString("whether the document is encrypted")); + encrypt.addDictionaryMember( + "userpasswordmatched", + JSON::makeString("whether supplied password matched user password;" + " always false for non-encrypted files")); + encrypt.addDictionaryMember( + "ownerpasswordmatched", + JSON::makeString("whether supplied password matched owner password;" + " always false for non-encrypted files")); + JSON capabilities = encrypt.addDictionaryMember( + "capabilities", JSON::makeDictionary()); + capabilities.addDictionaryMember( + "accessibility", + JSON::makeString("allow extraction for accessibility?")); + capabilities.addDictionaryMember( + "extract", + JSON::makeString("allow extraction?")); + capabilities.addDictionaryMember( + "printlow", + JSON::makeString("allow low resolution printing?")); + capabilities.addDictionaryMember( + "printhigh", + JSON::makeString("allow high resolution printing?")); + capabilities.addDictionaryMember( + "modifyassembly", + JSON::makeString("allow modifying document assembly?")); + capabilities.addDictionaryMember( + "modifyforms", + JSON::makeString("allow modifying forms?")); + capabilities.addDictionaryMember( + "moddifyannotations", + JSON::makeString("allow modifying annotations?")); + capabilities.addDictionaryMember( + "modifyother", + JSON::makeString("allow other modifications?")); + capabilities.addDictionaryMember( + "modify", + JSON::makeString("allow all modifications?")); + + JSON parameters = encrypt.addDictionaryMember( + "parameters", JSON::makeDictionary()); + parameters.addDictionaryMember( + "R", + JSON::makeString("R value from Encrypt dictionary")); + parameters.addDictionaryMember( + "V", + JSON::makeString("V value from Encrypt dictionary")); + parameters.addDictionaryMember( + "P", + JSON::makeString("P value from Encrypt dictionary")); + parameters.addDictionaryMember( + "bits", + JSON::makeString("encryption key bit length")); + parameters.addDictionaryMember( + "key", + JSON::makeString("encryption key; will be null" + " unless --show-encryption-key was specified")); + parameters.addDictionaryMember( + "method", + JSON::makeString("overall encryption method:" + " none, mixed, RC4, AESv2, AESv3")); + parameters.addDictionaryMember( + "streammethod", + JSON::makeString("encryption method for streams")); + parameters.addDictionaryMember( + "stringmethod", + JSON::makeString("encryption method for string")); + parameters.addDictionaryMember( + "filemethod", + JSON::makeString("encryption method for attachments")); + } return schema; } @@ -936,7 +1013,8 @@ ArgParser::initOptionTable() // The list of selectable top-level keys id duplicated in three // places: json_schema, do_json, and initOptionTable. char const* json_key_choices[] = { - "objects", "pages", "pagelabels", "outlines", "acroform", 0}; + "objects", "pages", "pagelabels", "outlines", "acroform", + "encrypt", 0}; (*t)["json-key"] = oe_requiredChoices( &ArgParser::argJsonKey, json_key_choices); (*t)["json-object"] = oe_requiredParameter( @@ -1568,8 +1646,11 @@ ArgParser::argJsonHelp() << std::endl << "specify a subset of top-level keys when you invoke qpdf, but the \"version\"" << std::endl - << "and \"parameters\" keys will always be present." + << "and \"parameters\" keys will always be present. Note that the \"encrypt\"" << std::endl + << "key's values will be populated for non-encrypted files. Some values will" + << std::endl + << "be null, and others will have values that apply to unencrypted files." << std::endl << json_schema().unparse() << std::endl; @@ -3817,6 +3898,106 @@ static void do_json_acroform(QPDF& pdf, Options& o, JSON& j) } } +static void do_json_encrypt(QPDF& pdf, Options& o, JSON& j) +{ + int R = 0; + int P = 0; + int V = 0; + QPDF::encryption_method_e stream_method = QPDF::e_none; + QPDF::encryption_method_e string_method = QPDF::e_none; + QPDF::encryption_method_e file_method = QPDF::e_none; + bool is_encrypted = pdf.isEncrypted( + R, P, V, stream_method, string_method, file_method); + JSON j_encrypt = j.addDictionaryMember( + "encrypt", JSON::makeDictionary()); + j_encrypt.addDictionaryMember( + "encrypted", + JSON::makeBool(is_encrypted)); + j_encrypt.addDictionaryMember( + "userpasswordmatched", + JSON::makeBool(is_encrypted && pdf.userPasswordMatched())); + j_encrypt.addDictionaryMember( + "ownerpasswordmatched", + JSON::makeBool(is_encrypted && pdf.ownerPasswordMatched())); + JSON j_capabilities = j_encrypt.addDictionaryMember( + "capabilities", JSON::makeDictionary()); + j_capabilities.addDictionaryMember( + "accessibility", + JSON::makeBool(pdf.allowAccessibility())); + j_capabilities.addDictionaryMember( + "extract", + JSON::makeBool(pdf.allowExtractAll())); + j_capabilities.addDictionaryMember( + "printlow", + JSON::makeBool(pdf.allowPrintLowRes())); + j_capabilities.addDictionaryMember( + "printhigh", + JSON::makeBool(pdf.allowPrintHighRes())); + j_capabilities.addDictionaryMember( + "modifyassembly", + JSON::makeBool(pdf.allowModifyAssembly())); + j_capabilities.addDictionaryMember( + "modifyforms", + JSON::makeBool(pdf.allowModifyForm())); + j_capabilities.addDictionaryMember( + "moddifyannotations", + JSON::makeBool(pdf.allowModifyAnnotation())); + j_capabilities.addDictionaryMember( + "modifyother", + JSON::makeBool(pdf.allowModifyOther())); + j_capabilities.addDictionaryMember( + "modify", + JSON::makeBool(pdf.allowModifyAll())); + JSON j_parameters = j_encrypt.addDictionaryMember( + "parameters", JSON::makeDictionary()); + j_parameters.addDictionaryMember("R", JSON::makeInt(R)); + j_parameters.addDictionaryMember("V", JSON::makeInt(V)); + j_parameters.addDictionaryMember("P", JSON::makeInt(P)); + int bits = 0; + JSON key = JSON::makeNull(); + if (is_encrypted) + { + std::string encryption_key = pdf.getEncryptionKey(); + bits = QIntC::to_int(encryption_key.length() * 8); + if (o.show_encryption_key) + { + key = JSON::makeString(QUtil::hex_encode(encryption_key)); + } + } + j_parameters.addDictionaryMember("bits", JSON::makeInt(bits)); + j_parameters.addDictionaryMember("key", key); + auto fix_method = [is_encrypted](QPDF::encryption_method_e& m) { + if (is_encrypted && m == QPDF::e_none) + { + m = QPDF::e_rc4; + } + }; + fix_method(stream_method); + fix_method(string_method); + fix_method(file_method); + std::string s_stream_method = show_encryption_method(stream_method); + std::string s_string_method = show_encryption_method(string_method); + std::string s_file_method = show_encryption_method(file_method); + std::string s_overall_method; + if ((stream_method == string_method) && + (stream_method == file_method)) + { + s_overall_method = s_stream_method; + } + else + { + s_overall_method = "mixed"; + } + j_parameters.addDictionaryMember( + "method", JSON::makeString(s_overall_method)); + j_parameters.addDictionaryMember( + "streammethod", JSON::makeString(s_stream_method)); + j_parameters.addDictionaryMember( + "stringmethod", JSON::makeString(s_string_method)); + j_parameters.addDictionaryMember( + "filemethod", JSON::makeString(s_file_method)); +} + static void do_json(QPDF& pdf, Options& o) { JSON j = JSON::makeDictionary(); @@ -3869,6 +4050,10 @@ static void do_json(QPDF& pdf, Options& o) { do_json_acroform(pdf, o, j); } + if (all_keys || o.json_keys.count("encrypt")) + { + do_json_encrypt(pdf, o, j); + } // Check against schema diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test index 57308291..bfc20178 100644 --- a/qpdf/qtest/qpdf.test +++ b/qpdf/qtest/qpdf.test @@ -607,6 +607,7 @@ my @json_files = ( ['image-streams', []], ['image-streams-small', []], ['field-types', []], + ['field-types', ['--show-encryption-key']], ['image-streams', ['--decode-level=all']], ['image-streams', ['--decode-level=specialized']], ['page-labels-and-outlines', ['--json-key=objects']], @@ -621,6 +622,8 @@ my @json_files = ( ['--json-key=objects', '--json-object=trailer', '--json-object=2 0 R']], ['field-types', ['--json-key=acroform']], ['need-appearances', ['--json-key=acroform']], + ['V4-aes', ['--json-key=encrypt']], + ['V4-aes', ['--json-key=encrypt', '--show-encryption-key']], ); $n_tests += scalar(@json_files); foreach my $d (@json_files) @@ -3176,7 +3179,7 @@ my @encrypted_files = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], ); -$n_tests += 5 + (2 * (@encrypted_files)) + (6 * (@encrypted_files - 6)) + 9; +$n_tests += 5 + (2 * (@encrypted_files)) + (7 * (@encrypted_files - 6)) + 9; $td->runtest("encrypted file", {$td->COMMAND => "test_driver 2 encrypted-with-images.pdf"}, @@ -3216,7 +3219,9 @@ foreach my $d (@encrypted_files) $modifyother, $modifyall) = @$d; my $f = sub { $_[0] ? "allowed" : "not allowed" }; + my $jf = sub { $_[0] ? "true" : "false" }; my $enc_details = ""; + my $enc_json = "{\n \"encrypt\": {\n \"capabilities\": {\n"; if ($match_owner) { $enc_details .= "Supplied password is owner password\n"; @@ -3235,6 +3240,37 @@ foreach my $d (@encrypted_files) "modify annotations: " . &$f($modifyannot) . "\n" . "modify other: " . &$f($modifyother) . "\n" . "modify anything: " . &$f($modifyall) . "\n"; + $enc_json .= + " \"accessibility\": " . &$jf($accessible) . ",\n" . + " \"extract\": " . &$jf($extract) . ",\n" . + " \"moddifyannotations\": " . &$jf($modifyannot) . ",\n" . + " \"modify\": " . &$jf($modifyall) . ",\n" . + " \"modifyassembly\": " . &$jf($modifyassembly) . ",\n" . + " \"modifyforms\": " . &$jf($modifyform) . ",\n" . + " \"modifyother\": " . &$jf($modifyother) . ",\n" . + " \"printhigh\": " . &$jf($printhigh) . ",\n" . + " \"printlow\": " . &$jf($printlow) . "\n" . + " },\n" . + " \"encrypted\": true,\n" . + " \"ownerpasswordmatched\": ---opm---,\n" . + " \"parameters\": {\n" . + " \"P\": ---P---,\n" . + " \"R\": ---R---,\n" . + " \"V\": ---V---,\n" . + " \"bits\": ---bits---,\n" . + " \"filemethod\": \"---method---\",\n" . + " \"key\": null,\n" . + " \"method\": \"---method---\",\n" . + " \"streammethod\": \"---method---\",\n" . + " \"stringmethod\": \"---method---\"\n" . + " },\n" . + " \"userpasswordmatched\": ---upm---\n" . + " },\n" . + " \"parameters\": {\n" . + " \"decodelevel\": \"generalized\"\n" . + " },\n" . + " \"version\": 1\n" . + "}\n"; if ($file =~ m/XI-/) { $enc_details .= @@ -3277,6 +3313,16 @@ foreach my $d (@encrypted_files) my $upass = $3 || ""; my $opass = $4 || ""; my $bits = (($V == 5) ? 256 : ($V == 2) ? 128 : 40); + my $method = $bits == 256 ? "AESv3" : "RC4"; + my $opm = ($pass eq $opass ? "true" : "false"); + my $upm = ($pass eq $upass ? "true" : "false"); + $enc_json =~ s/---R---/$R/; + $enc_json =~ s/---P---/$P/; + $enc_json =~ s/---V---/$V/; + $enc_json =~ s/---bits---/$bits/; + $enc_json =~ s/---method---/$method/g; + $enc_json =~ s/---opm---/$opm/; + $enc_json =~ s/---upm---/$upm/; my $eflags = "-encrypt \"$upass\" \"$opass\" $bits $xeflags --"; if (($pass ne $upass) && ($V >= 5)) @@ -3307,6 +3353,13 @@ foreach my $d (@encrypted_files) "User password = $upass\n$enc_details", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); + $td->runtest("json encrypt key ($enc_n)", + {$td->COMMAND => + "qpdf --json --json-key=encrypt" . + " --password=\"$pass\"" . + " $file.enc2"}, + {$td->STRING => $enc_json, $td->EXIT_STATUS => 0}, + $td->NORMALIZE_NEWLINES); $td->runtest("decrypt again", {$td->COMMAND => "qpdf --static-id --no-original-object-ids -qdf" . diff --git a/qpdf/qtest/qpdf/direct-pages-json.out b/qpdf/qtest/qpdf/direct-pages-json.out index c003161a..9e051daf 100644 --- a/qpdf/qtest/qpdf/direct-pages-json.out +++ b/qpdf/qtest/qpdf/direct-pages-json.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Pages": "2 0 R", diff --git a/qpdf/qtest/qpdf/json-V4-aes-encrypt---show-encryption-key.out b/qpdf/qtest/qpdf/json-V4-aes-encrypt---show-encryption-key.out new file mode 100644 index 00000000..4ee54881 --- /dev/null +++ b/qpdf/qtest/qpdf/json-V4-aes-encrypt---show-encryption-key.out @@ -0,0 +1,33 @@ +{ + "encrypt": { + "capabilities": { + "accessibility": true, + "extract": true, + "moddifyannotations": true, + "modify": true, + "modifyassembly": true, + "modifyforms": true, + "modifyother": true, + "printhigh": true, + "printlow": true + }, + "encrypted": true, + "ownerpasswordmatched": true, + "parameters": { + "P": -4, + "R": 4, + "V": 4, + "bits": 128, + "filemethod": "AESv2", + "key": "474258b004f2ce0017adeb6e79574357", + "method": "AESv2", + "streammethod": "AESv2", + "stringmethod": "AESv2" + }, + "userpasswordmatched": true + }, + "parameters": { + "decodelevel": "generalized" + }, + "version": 1 +} diff --git a/qpdf/qtest/qpdf/json-V4-aes-encrypt.out b/qpdf/qtest/qpdf/json-V4-aes-encrypt.out new file mode 100644 index 00000000..77f32c23 --- /dev/null +++ b/qpdf/qtest/qpdf/json-V4-aes-encrypt.out @@ -0,0 +1,33 @@ +{ + "encrypt": { + "capabilities": { + "accessibility": true, + "extract": true, + "moddifyannotations": true, + "modify": true, + "modifyassembly": true, + "modifyforms": true, + "modifyother": true, + "printhigh": true, + "printlow": true + }, + "encrypted": true, + "ownerpasswordmatched": true, + "parameters": { + "P": -4, + "R": 4, + "V": 4, + "bits": 128, + "filemethod": "AESv2", + "key": null, + "method": "AESv2", + "streammethod": "AESv2", + "stringmethod": "AESv2" + }, + "userpasswordmatched": true + }, + "parameters": { + "decodelevel": "generalized" + }, + "version": 1 +} diff --git a/qpdf/qtest/qpdf/json-field-types---show-encryption-key.out b/qpdf/qtest/qpdf/json-field-types---show-encryption-key.out new file mode 100644 index 00000000..e324ecd6 --- /dev/null +++ b/qpdf/qtest/qpdf/json-field-types---show-encryption-key.out @@ -0,0 +1,2721 @@ +{ + "acroform": { + "fields": [ + { + "alternativename": "text", + "annotation": { + "annotationflags": 4, + "appearancestate": "", + "object": "4 0 R" + }, + "choices": [], + "defaultvalue": "", + "fieldflags": 0, + "fieldtype": "/Tx", + "fullname": "text", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": false, + "istext": true, + "mappingname": "text", + "object": "4 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "text", + "quadding": 0, + "value": "" + }, + { + "alternativename": "r1", + "annotation": { + "annotationflags": 4, + "appearancestate": "/1", + "object": "21 0 R" + }, + "choices": [], + "defaultvalue": "/1", + "fieldflags": 49152, + "fieldtype": "/Btn", + "fullname": "r1", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": true, + "istext": false, + "mappingname": "r1", + "object": "21 0 R", + "pageposfrom1": 1, + "parent": "5 0 R", + "partialname": "", + "quadding": 0, + "value": "/1" + }, + { + "alternativename": "r1", + "annotation": { + "annotationflags": 4, + "appearancestate": "/Off", + "object": "22 0 R" + }, + "choices": [], + "defaultvalue": "/1", + "fieldflags": 49152, + "fieldtype": "/Btn", + "fullname": "r1", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": true, + "istext": false, + "mappingname": "r1", + "object": "22 0 R", + "pageposfrom1": 1, + "parent": "5 0 R", + "partialname": "", + "quadding": 0, + "value": "/1" + }, + { + "alternativename": "r1", + "annotation": { + "annotationflags": 4, + "appearancestate": "/Off", + "object": "23 0 R" + }, + "choices": [], + "defaultvalue": "/1", + "fieldflags": 49152, + "fieldtype": "/Btn", + "fullname": "r1", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": true, + "istext": false, + "mappingname": "r1", + "object": "23 0 R", + "pageposfrom1": 1, + "parent": "5 0 R", + "partialname": "", + "quadding": 0, + "value": "/1" + }, + { + "alternativename": "checkbox1", + "annotation": { + "annotationflags": 4, + "appearancestate": "/Off", + "object": "6 0 R" + }, + "choices": [], + "defaultvalue": "/Off", + "fieldflags": 0, + "fieldtype": "/Btn", + "fullname": "checkbox1", + "ischeckbox": true, + "ischoice": false, + "isradiobutton": false, + "istext": false, + "mappingname": "checkbox1", + "object": "6 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "checkbox1", + "quadding": 0, + "value": "/Off" + }, + { + "alternativename": "checkbox2", + "annotation": { + "annotationflags": 4, + "appearancestate": "/Yes", + "object": "7 0 R" + }, + "choices": [], + "defaultvalue": "/Yes", + "fieldflags": 0, + "fieldtype": "/Btn", + "fullname": "checkbox2", + "ischeckbox": true, + "ischoice": false, + "isradiobutton": false, + "istext": false, + "mappingname": "checkbox2", + "object": "7 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "checkbox2", + "quadding": 0, + "value": "/Yes" + }, + { + "alternativename": "checkbox3", + "annotation": { + "annotationflags": 4, + "appearancestate": "/Off", + "object": "8 0 R" + }, + "choices": [], + "defaultvalue": "/Off", + "fieldflags": 0, + "fieldtype": "/Btn", + "fullname": "checkbox3", + "ischeckbox": true, + "ischoice": false, + "isradiobutton": false, + "istext": false, + "mappingname": "checkbox3", + "object": "8 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "checkbox3", + "quadding": 0, + "value": "/Off" + }, + { + "alternativename": "r2", + "annotation": { + "annotationflags": 4, + "appearancestate": "/Off", + "object": "37 0 R" + }, + "choices": [], + "defaultvalue": "/2", + "fieldflags": 49152, + "fieldtype": "/Btn", + "fullname": "r2", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": true, + "istext": false, + "mappingname": "r2", + "object": "37 0 R", + "pageposfrom1": 1, + "parent": "9 0 R", + "partialname": "", + "quadding": 0, + "value": "/2" + }, + { + "alternativename": "r2", + "annotation": { + "annotationflags": 4, + "appearancestate": "/2", + "object": "38 0 R" + }, + "choices": [], + "defaultvalue": "/2", + "fieldflags": 49152, + "fieldtype": "/Btn", + "fullname": "r2", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": true, + "istext": false, + "mappingname": "r2", + "object": "38 0 R", + "pageposfrom1": 1, + "parent": "9 0 R", + "partialname": "", + "quadding": 0, + "value": "/2" + }, + { + "alternativename": "r2", + "annotation": { + "annotationflags": 4, + "appearancestate": "/Off", + "object": "39 0 R" + }, + "choices": [], + "defaultvalue": "/2", + "fieldflags": 49152, + "fieldtype": "/Btn", + "fullname": "r2", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": true, + "istext": false, + "mappingname": "r2", + "object": "39 0 R", + "pageposfrom1": 1, + "parent": "9 0 R", + "partialname": "", + "quadding": 0, + "value": "/2" + }, + { + "alternativename": "text2", + "annotation": { + "annotationflags": 4, + "appearancestate": "", + "object": "10 0 R" + }, + "choices": [], + "defaultvalue": "salad πʬ", + "fieldflags": 0, + "fieldtype": "/Tx", + "fullname": "text2", + "ischeckbox": false, + "ischoice": false, + "isradiobutton": false, + "istext": true, + "mappingname": "text2", + "object": "10 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "text2", + "quadding": 0, + "value": "salad πʬ" + }, + { + "alternativename": "combolist1", + "annotation": { + "annotationflags": 4, + "appearancestate": "", + "object": "13 0 R" + }, + "choices": [ + "one", + "two", + "pi", + "four" + ], + "defaultvalue": "", + "fieldflags": 393216, + "fieldtype": "/Ch", + "fullname": "combolist1", + "ischeckbox": false, + "ischoice": true, + "isradiobutton": false, + "istext": false, + "mappingname": "combolist1", + "object": "13 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "combolist1", + "quadding": 0, + "value": "" + }, + { + "alternativename": "list1", + "annotation": { + "annotationflags": 4, + "appearancestate": "", + "object": "11 0 R" + }, + "choices": [ + "five", + "six", + "seven", + "eight" + ], + "defaultvalue": "", + "fieldflags": 0, + "fieldtype": "/Ch", + "fullname": "list1", + "ischeckbox": false, + "ischoice": true, + "isradiobutton": false, + "istext": false, + "mappingname": "list1", + "object": "11 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "list1", + "quadding": 0, + "value": "" + }, + { + "alternativename": "drop1", + "annotation": { + "annotationflags": 4, + "appearancestate": "", + "object": "12 0 R" + }, + "choices": [ + "nine", + "ten", + "elephant", + "twelve" + ], + "defaultvalue": "", + "fieldflags": 131072, + "fieldtype": "/Ch", + "fullname": "drop1", + "ischeckbox": false, + "ischoice": true, + "isradiobutton": false, + "istext": false, + "mappingname": "drop1", + "object": "12 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "drop1", + "quadding": 0, + "value": "" + }, + { + "alternativename": "combodrop1", + "annotation": { + "annotationflags": 4, + "appearancestate": "", + "object": "14 0 R" + }, + "choices": [ + "alpha", + "beta", + "gamma", + "delta" + ], + "defaultvalue": "", + "fieldflags": 393216, + "fieldtype": "/Ch", + "fullname": "combodrop1", + "ischeckbox": false, + "ischoice": true, + "isradiobutton": false, + "istext": false, + "mappingname": "combodrop1", + "object": "14 0 R", + "pageposfrom1": 1, + "parent": null, + "partialname": "combodrop1", + "quadding": 0, + "value": "" + } + ], + "hasacroform": true, + "needappearances": true + }, + "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" + }, + "userpasswordmatched": false + }, + "objects": { + "1 0 R": { + "/AcroForm": { + "/DR": "3 0 R", + "/Fields": [ + "4 0 R", + "5 0 R", + "6 0 R", + "7 0 R", + "8 0 R", + "9 0 R", + "10 0 R", + "11 0 R", + "12 0 R", + "13 0 R", + "14 0 R" + ], + "/NeedAppearances": true + }, + "/Lang": "en-US", + "/MarkInfo": { + "/Marked": true + }, + "/OpenAction": [ + "15 0 R", + "/XYZ", + null, + null, + 0 + ], + "/Pages": "16 0 R", + "/StructTreeRoot": "17 0 R", + "/Type": "/Catalog" + }, + "10 0 R": { + "/AP": { + "/N": "40 0 R" + }, + "/DA": "0.18039 0.20392 0.21176 rg /F2 12 Tf", + "/DR": { + "/Font": "18 0 R" + }, + "/DV": "salad πʬ", + "/F": 4, + "/FT": "/Tx", + "/P": "15 0 R", + "/Rect": [ + 113.649, + 260.151, + 351.101, + 278.099 + ], + "/Subtype": "/Widget", + "/T": "text2", + "/Type": "/Annot", + "/V": "salad πʬ" + }, + "100 0 R": { + "/A": "167 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "101 0 R": { + "/A": "168 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "102 0 R": { + "/A": "169 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "103 0 R": { + "/A": "170 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "104 0 R": { + "/A": "171 0 R", + "/K": [ + 4 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "105 0 R": { + "/A": "172 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "106 0 R": { + "/A": "173 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "107 0 R": { + "/A": "174 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "108 0 R": { + "/A": "175 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "109 0 R": { + "/A": "176 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "11 0 R": { + "/AP": { + "/N": "42 0 R" + }, + "/DA": "0.18039 0.20392 0.21176 rg /F4 10 Tf", + "/DR": { + "/Font": "18 0 R" + }, + "/DV": "", + "/F": 4, + "/FT": "/Ch", + "/Opt": [ + "five", + "six", + "seven", + "eight" + ], + "/P": "15 0 R", + "/Rect": [ + 158.449, + 156.651, + 221.001, + 232.849 + ], + "/Subtype": "/Widget", + "/T": "list1", + "/Type": "/Annot", + "/V": "" + }, + "110 0 R": { + "/A": "177 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "111 0 R": { + "/A": "178 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "112 0 R": { + "/A": "179 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "113 0 R": { + "/A": "180 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "114 0 R": { + "/A": "181 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "115 0 R": { + "/A": "182 0 R", + "/K": [ + 5 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "116 0 R": { + "/A": "183 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "117 0 R": { + "/A": "184 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "118 0 R": { + "/A": "185 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "119 0 R": { + "/A": "186 0 R", + "/K": [ + 6, + 7 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "12 0 R": { + "/AP": { + "/N": "44 0 R" + }, + "/DA": "0.18039 0.20392 0.21176 rg /F4 10 Tf", + "/DR": { + "/Font": "18 0 R" + }, + "/DV": "", + "/F": 4, + "/FT": "/Ch", + "/Ff": 131072, + "/Opt": [ + "nine", + "ten", + "elephant", + "twelve" + ], + "/P": "15 0 R", + "/Rect": [ + 159.149, + 107.251, + 244.201, + 130.949 + ], + "/Subtype": "/Widget", + "/T": "drop1", + "/Type": "/Annot", + "/V": "" + }, + "120 0 R": { + "/A": "187 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "121 0 R": { + "/A": "188 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "122 0 R": { + "/A": "189 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "123 0 R": { + "/A": "190 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "124 0 R": { + "/A": "191 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "125 0 R": { + "/A": "192 0 R", + "/K": [ + 8, + 9 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "126 0 R": { + "/K": [ + 10 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "127 0 R": { + "/K": [ + 11 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "128 0 R": { + "/K": [ + 12 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "129 0 R": { + "/K": [ + 13 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "13 0 R": { + "/AP": { + "/N": "46 0 R" + }, + "/DA": "0.18039 0.20392 0.21176 rg /F4 10 Tf", + "/DR": { + "/Font": "18 0 R" + }, + "/DV": "", + "/F": 4, + "/FT": "/Ch", + "/Ff": 393216, + "/Opt": [ + "one", + "two", + "pi", + "four" + ], + "/P": "15 0 R", + "/Rect": [ + 403.949, + 159.401, + 459.001, + 232.849 + ], + "/Subtype": "/Widget", + "/T": "combolist1", + "/Type": "/Annot", + "/V": "" + }, + "130 0 R": { + "/K": [ + 14 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "131 0 R": { + "/K": [ + 15 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "132 0 R": { + "/K": [ + 16 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "133 0 R": { + "/K": [ + 17 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "134 0 R": { + "/K": [ + 18 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "135 0 R": { + "/K": [ + 19 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "136 0 R": { + "/K": [ + 20 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "137 0 R": { + "/K": [ + 21 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "138 0 R": { + "/K": [ + 22 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "139 0 R": { + "/K": [ + 23 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "14 0 R": { + "/AP": { + "/N": "48 0 R" + }, + "/DA": "0.18039 0.20392 0.21176 rg /F4 10 Tf", + "/DR": { + "/Font": "18 0 R" + }, + "/DV": "", + "/F": 4, + "/FT": "/Ch", + "/Ff": 393216, + "/Opt": [ + "alpha", + "beta", + "gamma", + "delta" + ], + "/P": "15 0 R", + "/Rect": [ + 404.599, + 101.451, + 476.701, + 135.349 + ], + "/Subtype": "/Widget", + "/T": "combodrop1", + "/Type": "/Annot", + "/V": "" + }, + "140 0 R": { + "/K": [ + 24 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Form", + "/Type": "/StructElem" + }, + "141 0 R": { + "/Ascent": 891, + "/CapHeight": 981, + "/Descent": -216, + "/Flags": 4, + "/FontBBox": [ + -543, + -303, + 1277, + 981 + ], + "/FontFile2": "193 0 R", + "/FontName": "/BAAAAA+LiberationSerif", + "/ItalicAngle": 0, + "/StemV": 80, + "/Type": "/FontDescriptor" + }, + "142 0 R": { + "/Length": "143 0 R" + }, + "143 0 R": 702, + "144 0 R": { + "/Ascent": 905, + "/CapHeight": 979, + "/Descent": -211, + "/Flags": 4, + "/FontBBox": [ + -543, + -303, + 1300, + 979 + ], + "/FontName": "/LiberationSans", + "/ItalicAngle": 0, + "/StemV": 80, + "/Type": "/FontDescriptor" + }, + "145 0 R": { + "/Ascent": 905, + "/CapHeight": 979, + "/Descent": -211, + "/Flags": 4, + "/FontBBox": [ + -543, + -303, + 1300, + 979 + ], + "/FontFile2": "195 0 R", + "/FontName": "/DAAAAA+LiberationSans", + "/ItalicAngle": 0, + "/StemV": 80, + "/Type": "/FontDescriptor" + }, + "146 0 R": { + "/Length": "147 0 R" + }, + "147 0 R": 582, + "148 0 R": { + "/Ascent": 928, + "/CapHeight": 1232, + "/Descent": -235, + "/Flags": 4, + "/FontBBox": [ + -1020, + -462, + 1792, + 1232 + ], + "/FontName": "/DejaVuSans", + "/ItalicAngle": 0, + "/StemV": 80, + "/Type": "/FontDescriptor" + }, + "149 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "15 0 R": { + "/Annots": [ + "4 0 R", + "21 0 R", + "22 0 R", + "23 0 R", + "6 0 R", + "7 0 R", + "8 0 R", + "37 0 R", + "38 0 R", + "39 0 R", + "10 0 R", + "13 0 R", + "11 0 R", + "12 0 R", + "14 0 R" + ], + "/Contents": "50 0 R", + "/Group": { + "/CS": "/DeviceRGB", + "/I": true, + "/S": "/Transparency" + }, + "/MediaBox": [ + 0, + 0, + 612, + 792 + ], + "/Parent": "16 0 R", + "/Resources": "3 0 R", + "/StructParents": 0, + "/Type": "/Page" + }, + "150 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "151 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "152 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "153 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "154 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "155 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "156 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "157 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "158 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "159 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "16 0 R": { + "/Count": 1, + "/Kids": [ + "15 0 R" + ], + "/MediaBox": [ + 0, + 0, + 612, + 792 + ], + "/Resources": "3 0 R", + "/Type": "/Pages" + }, + "160 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "161 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "162 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "163 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "164 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "165 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "166 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "167 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "168 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "169 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "17 0 R": { + "/K": [ + "52 0 R" + ], + "/ParentTree": "53 0 R", + "/RoleMap": { + "/Document": "/Document", + "/Standard": "/P" + }, + "/Type": "/StructTreeRoot" + }, + "170 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "171 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "172 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "173 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "174 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "175 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "176 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "177 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "178 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "179 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "18 0 R": { + "/F1": "54 0 R", + "/F2": "55 0 R", + "/F3": "56 0 R", + "/F4": "57 0 R", + "/ZaDi": "28 0 R" + }, + "180 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "181 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "182 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "183 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "184 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "185 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "186 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "187 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "188 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "189 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "19 0 R": { + "/BBox": [ + 0, + 0, + 137.3, + 14.8 + ], + "/Length": "20 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "190 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "191 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "192 0 R": { + "/O": "/Layout", + "/Placement": "/Block" + }, + "193 0 R": { + "/Length": "194 0 R", + "/Length1": 16184 + }, + "194 0 R": 16184, + "195 0 R": { + "/Length": "196 0 R", + "/Length1": 11088 + }, + "196 0 R": 11088, + "2 0 R": { + "/CreationDate": "D:20190103125434-05'00'", + "/Creator": "Writer", + "/Producer": "LibreOffice 6.1" + }, + "20 0 R": 12, + "21 0 R": { + "/AP": { + "/N": { + "/1": "58 0 R", + "/Off": "60 0 R" + } + }, + "/AS": "/1", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "l" + }, + "/P": "15 0 R", + "/Parent": "5 0 R", + "/Rect": [ + 152.749, + 648.501, + 164.801, + 660.549 + ], + "/Subtype": "/Widget", + "/Type": "/Annot" + }, + "22 0 R": { + "/AP": { + "/N": { + "/2": "62 0 R", + "/Off": "64 0 R" + } + }, + "/AS": "/Off", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "l" + }, + "/P": "15 0 R", + "/Parent": "5 0 R", + "/Rect": [ + 152.749, + 627.301, + 164.801, + 639.349 + ], + "/Subtype": "/Widget", + "/Type": "/Annot" + }, + "23 0 R": { + "/AP": { + "/N": { + "/3": "66 0 R", + "/Off": "68 0 R" + } + }, + "/AS": "/Off", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "l" + }, + "/P": "15 0 R", + "/Parent": "5 0 R", + "/Rect": [ + 151.399, + 606.501, + 163.451, + 618.549 + ], + "/Subtype": "/Widget", + "/Type": "/Annot" + }, + "24 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "25 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "25 0 R": 12, + "26 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "27 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "27 0 R": 82, + "28 0 R": { + "/BaseFont": "/ZapfDingbats", + "/Subtype": "/Type1", + "/Type": "/Font" + }, + "29 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "30 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "3 0 R": { + "/Font": "18 0 R", + "/ProcSet": [ + "/PDF", + "/Text" + ] + }, + "30 0 R": 12, + "31 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "32 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "32 0 R": 82, + "33 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "34 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "34 0 R": 12, + "35 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "36 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "36 0 R": 82, + "37 0 R": { + "/AP": { + "/N": { + "/1": "70 0 R", + "/Off": "72 0 R" + } + }, + "/AS": "/Off", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "l" + }, + "/P": "15 0 R", + "/Parent": "9 0 R", + "/Rect": [ + 118.649, + 388.101, + 130.701, + 400.149 + ], + "/Subtype": "/Widget", + "/Type": "/Annot" + }, + "38 0 R": { + "/AP": { + "/N": { + "/2": "74 0 R", + "/Off": "76 0 R" + } + }, + "/AS": "/2", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "l" + }, + "/P": "15 0 R", + "/Parent": "9 0 R", + "/Rect": [ + 119.349, + 362.201, + 131.401, + 374.249 + ], + "/Subtype": "/Widget", + "/Type": "/Annot" + }, + "39 0 R": { + "/AP": { + "/N": { + "/3": "78 0 R", + "/Off": "80 0 R" + } + }, + "/AS": "/Off", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "l" + }, + "/P": "15 0 R", + "/Parent": "9 0 R", + "/Rect": [ + 119.349, + 333.551, + 131.401, + 345.599 + ], + "/Subtype": "/Widget", + "/Type": "/Annot" + }, + "4 0 R": { + "/AP": { + "/N": "19 0 R" + }, + "/DA": "0.18039 0.20392 0.21176 rg /F2 12 Tf", + "/DR": { + "/Font": "18 0 R" + }, + "/DV": "", + "/F": 4, + "/FT": "/Tx", + "/P": "15 0 R", + "/Rect": [ + 123.499, + 689.901, + 260.801, + 704.699 + ], + "/Subtype": "/Widget", + "/T": "text", + "/Type": "/Annot", + "/V": "" + }, + "40 0 R": { + "/BBox": [ + 0, + 0, + 237.45, + 17.95 + ], + "/Length": "41 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "41 0 R": 12, + "42 0 R": { + "/BBox": [ + 0, + 0, + 62.55, + 76.2 + ], + "/Length": "43 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "43 0 R": 46, + "44 0 R": { + "/BBox": [ + 0, + 0, + 85.05, + 23.7 + ], + "/Length": "45 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "45 0 R": 46, + "46 0 R": { + "/BBox": [ + 0, + 0, + 55.05, + 73.45 + ], + "/Length": "47 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "47 0 R": 47, + "48 0 R": { + "/BBox": [ + 0, + 0, + 72.1, + 33.9 + ], + "/Length": "49 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "49 0 R": 45, + "5 0 R": { + "/DV": "/1", + "/FT": "/Btn", + "/Ff": 49152, + "/Kids": [ + "21 0 R", + "22 0 R", + "23 0 R" + ], + "/P": "15 0 R", + "/T": "r1", + "/V": "/1" + }, + "50 0 R": { + "/Length": "51 0 R" + }, + "51 0 R": 4747, + "52 0 R": { + "/K": [ + "82 0 R", + "83 0 R", + "84 0 R", + "85 0 R", + "86 0 R", + "87 0 R", + "88 0 R", + "89 0 R", + "90 0 R", + "91 0 R", + "92 0 R", + "93 0 R", + "94 0 R", + "95 0 R", + "96 0 R", + "97 0 R", + "98 0 R", + "99 0 R", + "100 0 R", + "101 0 R", + "102 0 R", + "103 0 R", + "104 0 R", + "105 0 R", + "106 0 R", + "107 0 R", + "108 0 R", + "109 0 R", + "110 0 R", + "111 0 R", + "112 0 R", + "113 0 R", + "114 0 R", + "115 0 R", + "116 0 R", + "117 0 R", + "118 0 R", + "119 0 R", + "120 0 R", + "121 0 R", + "122 0 R", + "123 0 R", + "124 0 R", + "125 0 R", + "126 0 R", + "127 0 R", + "128 0 R", + "129 0 R", + "130 0 R", + "131 0 R", + "132 0 R", + "133 0 R", + "134 0 R", + "135 0 R", + "136 0 R", + "137 0 R", + "138 0 R", + "139 0 R", + "140 0 R" + ], + "/P": "17 0 R", + "/Pg": "15 0 R", + "/S": "/Document", + "/Type": "/StructElem" + }, + "53 0 R": { + "/Nums": [ + 0, + [ + "82 0 R", + "84 0 R", + "86 0 R", + "93 0 R", + "104 0 R", + "115 0 R", + "119 0 R", + "119 0 R", + "125 0 R", + "125 0 R", + "126 0 R", + "127 0 R", + "128 0 R", + "129 0 R", + "130 0 R", + "131 0 R", + "132 0 R", + "133 0 R", + "134 0 R", + "135 0 R", + "136 0 R", + "137 0 R", + "138 0 R", + "139 0 R", + "140 0 R" + ] + ] + }, + "54 0 R": { + "/BaseFont": "/BAAAAA+LiberationSerif", + "/FirstChar": 0, + "/FontDescriptor": "141 0 R", + "/LastChar": 32, + "/Subtype": "/TrueType", + "/ToUnicode": "142 0 R", + "/Type": "/Font", + "/Widths": [ + 777, + 943, + 500, + 443, + 333, + 333, + 389, + 250, + 777, + 500, + 333, + 500, + 443, + 610, + 500, + 277, + 556, + 277, + 277, + 500, + 443, + 500, + 443, + 500, + 500, + 556, + 610, + 666, + 500, + 722, + 500, + 722, + 500 + ] + }, + "55 0 R": { + "/BaseFont": "/LiberationSans", + "/Encoding": "/WinAnsiEncoding", + "/FirstChar": 32, + "/FontDescriptor": "144 0 R", + "/LastChar": 255, + "/Subtype": "/TrueType", + "/Type": "/Font", + "/Widths": [ + 277, + 277, + 354, + 556, + 556, + 889, + 666, + 190, + 333, + 333, + 389, + 583, + 277, + 333, + 277, + 277, + 556, + 556, + 556, + 556, + 556, + 556, + 556, + 556, + 556, + 556, + 277, + 277, + 583, + 583, + 583, + 556, + 1015, + 666, + 666, + 722, + 722, + 666, + 610, + 777, + 722, + 277, + 500, + 666, + 556, + 833, + 722, + 777, + 666, + 777, + 722, + 666, + 610, + 722, + 666, + 943, + 666, + 666, + 610, + 277, + 277, + 277, + 469, + 556, + 333, + 556, + 556, + 500, + 556, + 556, + 277, + 556, + 556, + 222, + 222, + 500, + 222, + 833, + 556, + 556, + 556, + 556, + 333, + 500, + 277, + 556, + 500, + 722, + 500, + 500, + 500, + 333, + 259, + 333, + 583, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 277, + 333, + 556, + 556, + 556, + 556, + 259, + 556, + 333, + 736, + 370, + 556, + 583, + 333, + 736, + 552, + 399, + 548, + 333, + 333, + 333, + 576, + 537, + 333, + 333, + 333, + 365, + 556, + 833, + 833, + 833, + 610, + 666, + 666, + 666, + 666, + 666, + 666, + 1000, + 722, + 666, + 666, + 666, + 666, + 277, + 277, + 277, + 277, + 722, + 722, + 777, + 777, + 777, + 777, + 777, + 583, + 777, + 722, + 722, + 722, + 722, + 666, + 666, + 610, + 556, + 556, + 556, + 556, + 556, + 556, + 889, + 500, + 556, + 556, + 556, + 556, + 277, + 277, + 277, + 277, + 556, + 556, + 556, + 556, + 556, + 556, + 556, + 548, + 610, + 556, + 556, + 556, + 556, + 500, + 556, + 500 + ] + }, + "56 0 R": { + "/BaseFont": "/DAAAAA+LiberationSans", + "/FirstChar": 0, + "/FontDescriptor": "145 0 R", + "/LastChar": 22, + "/Subtype": "/TrueType", + "/ToUnicode": "146 0 R", + "/Type": "/Font", + "/Widths": [ + 750, + 333, + 556, + 333, + 556, + 556, + 500, + 722, + 556, + 556, + 500, + 277, + 666, + 556, + 500, + 556, + 556, + 777, + 556, + 277, + 222, + 556, + 556 + ] + }, + "57 0 R": { + "/BaseFont": "/DejaVuSans", + "/Encoding": "/WinAnsiEncoding", + "/FirstChar": 32, + "/FontDescriptor": "148 0 R", + "/LastChar": 255, + "/Subtype": "/TrueType", + "/Type": "/Font", + "/Widths": [ + 317, + 400, + 459, + 837, + 636, + 950, + 779, + 274, + 390, + 390, + 500, + 837, + 317, + 360, + 317, + 336, + 636, + 636, + 636, + 636, + 636, + 636, + 636, + 636, + 636, + 636, + 336, + 336, + 837, + 837, + 837, + 530, + 1000, + 684, + 686, + 698, + 770, + 631, + 575, + 774, + 751, + 294, + 294, + 655, + 557, + 862, + 748, + 787, + 603, + 787, + 694, + 634, + 610, + 731, + 684, + 988, + 685, + 610, + 685, + 390, + 336, + 390, + 837, + 500, + 500, + 612, + 634, + 549, + 634, + 615, + 352, + 634, + 633, + 277, + 277, + 579, + 277, + 974, + 633, + 611, + 634, + 634, + 411, + 520, + 392, + 633, + 591, + 817, + 591, + 591, + 524, + 636, + 336, + 636, + 837, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 317, + 400, + 636, + 636, + 636, + 636, + 336, + 500, + 500, + 1000, + 471, + 611, + 837, + 360, + 1000, + 500, + 500, + 837, + 400, + 400, + 500, + 636, + 636, + 317, + 500, + 400, + 471, + 611, + 969, + 969, + 969, + 530, + 684, + 684, + 684, + 684, + 684, + 684, + 974, + 698, + 631, + 631, + 631, + 631, + 294, + 294, + 294, + 294, + 774, + 748, + 787, + 787, + 787, + 787, + 787, + 837, + 787, + 731, + 731, + 731, + 731, + 610, + 604, + 629, + 612, + 612, + 612, + 612, + 612, + 612, + 981, + 549, + 615, + 615, + 615, + 615, + 277, + 277, + 277, + 277, + 611, + 633, + 611, + 611, + 611, + 611, + 611, + 837, + 611, + 633, + 633, + 633, + 633, + 591, + 634, + 591 + ] + }, + "58 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "59 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "59 0 R": 220, + "6 0 R": { + "/AP": { + "/N": { + "/Off": "24 0 R", + "/Yes": "26 0 R" + } + }, + "/AS": "/Off", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/DV": "/Off", + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "8" + }, + "/P": "15 0 R", + "/Rect": [ + 118.649, + 554.301, + 130.701, + 566.349 + ], + "/Subtype": "/Widget", + "/T": "checkbox1", + "/Type": "/Annot", + "/V": "/Off" + }, + "60 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "61 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "61 0 R": 12, + "62 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "63 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "63 0 R": 220, + "64 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "65 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "65 0 R": 12, + "66 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "67 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "67 0 R": 220, + "68 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "69 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "69 0 R": 12, + "7 0 R": { + "/AP": { + "/N": { + "/Off": "29 0 R", + "/Yes": "31 0 R" + } + }, + "/AS": "/Yes", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/DV": "/Yes", + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "8" + }, + "/P": "15 0 R", + "/Rect": [ + 118.649, + 527.751, + 130.701, + 539.799 + ], + "/Subtype": "/Widget", + "/T": "checkbox2", + "/Type": "/Annot", + "/V": "/Yes" + }, + "70 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "71 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "71 0 R": 220, + "72 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "73 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "73 0 R": 12, + "74 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "75 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "75 0 R": 220, + "76 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "77 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "77 0 R": 12, + "78 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "79 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "79 0 R": 220, + "8 0 R": { + "/AP": { + "/N": { + "/Off": "33 0 R", + "/Yes": "35 0 R" + } + }, + "/AS": "/Off", + "/DA": "0.18039 0.20392 0.21176 rg /ZaDi 0 Tf", + "/DR": { + "/Font": { + "/ZaDi": "28 0 R" + } + }, + "/DV": "/Off", + "/F": 4, + "/FT": "/Btn", + "/MK": { + "/CA": "8" + }, + "/P": "15 0 R", + "/Rect": [ + 118.649, + 500.501, + 130.701, + 512.549 + ], + "/Subtype": "/Widget", + "/T": "checkbox3", + "/Type": "/Annot", + "/V": "/Off" + }, + "80 0 R": { + "/BBox": [ + 0, + 0, + 12.05, + 12.05 + ], + "/Length": "81 0 R", + "/Resources": "3 0 R", + "/Subtype": "/Form", + "/Type": "/XObject" + }, + "81 0 R": 12, + "82 0 R": { + "/A": "149 0 R", + "/K": [ + 0 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "83 0 R": { + "/A": "150 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "84 0 R": { + "/A": "151 0 R", + "/K": [ + 1 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "85 0 R": { + "/A": "152 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "86 0 R": { + "/A": "153 0 R", + "/K": [ + 2 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "87 0 R": { + "/A": "154 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "88 0 R": { + "/A": "155 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "89 0 R": { + "/A": "156 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "9 0 R": { + "/DV": "/2", + "/FT": "/Btn", + "/Ff": 49152, + "/Kids": [ + "37 0 R", + "38 0 R", + "39 0 R" + ], + "/P": "15 0 R", + "/T": "r2", + "/V": "/2" + }, + "90 0 R": { + "/A": "157 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "91 0 R": { + "/A": "158 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "92 0 R": { + "/A": "159 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "93 0 R": { + "/A": "160 0 R", + "/K": [ + 3 + ], + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "94 0 R": { + "/A": "161 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "95 0 R": { + "/A": "162 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "96 0 R": { + "/A": "163 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "97 0 R": { + "/A": "164 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "98 0 R": { + "/A": "165 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "99 0 R": { + "/A": "166 0 R", + "/P": "52 0 R", + "/Pg": "15 0 R", + "/S": "/Standard", + "/Type": "/StructElem" + }, + "trailer": { + "/DocChecksum": "/CC322E136FE95DECF8BC297B1A9B2C2E", + "/ID": [ + "ø«Ä{±ßTJ\rùÁZuï\u0000F", + "ì®zg+Ìó4…[Tƒ{ —8" + ], + "/Info": "2 0 R", + "/Root": "1 0 R", + "/Size": 197 + } + }, + "outlines": [], + "pagelabels": [], + "pages": [ + { + "contents": [ + "50 0 R" + ], + "images": [], + "label": null, + "object": "15 0 R", + "outlines": [], + "pageposfrom1": 1 + } + ], + "parameters": { + "decodelevel": "generalized" + }, + "version": 1 +} diff --git a/qpdf/qtest/qpdf/json-field-types.out b/qpdf/qtest/qpdf/json-field-types.out index 54f91f56..e324ecd6 100644 --- a/qpdf/qtest/qpdf/json-field-types.out +++ b/qpdf/qtest/qpdf/json-field-types.out @@ -385,6 +385,33 @@ "hasacroform": true, "needappearances": true }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/AcroForm": { diff --git a/qpdf/qtest/qpdf/json-image-streams-all.out b/qpdf/qtest/qpdf/json-image-streams-all.out index 40be701d..c454977f 100644 --- a/qpdf/qtest/qpdf/json-image-streams-all.out +++ b/qpdf/qtest/qpdf/json-image-streams-all.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Pages": "2 0 R", diff --git a/qpdf/qtest/qpdf/json-image-streams-small.out b/qpdf/qtest/qpdf/json-image-streams-small.out index 02ee4ad1..ca02590c 100644 --- a/qpdf/qtest/qpdf/json-image-streams-small.out +++ b/qpdf/qtest/qpdf/json-image-streams-small.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Pages": "2 0 R", diff --git a/qpdf/qtest/qpdf/json-image-streams-specialized.out b/qpdf/qtest/qpdf/json-image-streams-specialized.out index 2b1dc4dd..c3eef9a4 100644 --- a/qpdf/qtest/qpdf/json-image-streams-specialized.out +++ b/qpdf/qtest/qpdf/json-image-streams-specialized.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Pages": "2 0 R", diff --git a/qpdf/qtest/qpdf/json-image-streams.out b/qpdf/qtest/qpdf/json-image-streams.out index e7bec295..83a9fbff 100644 --- a/qpdf/qtest/qpdf/json-image-streams.out +++ b/qpdf/qtest/qpdf/json-image-streams.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Pages": "2 0 R", diff --git a/qpdf/qtest/qpdf/json-outlines-with-actions.out b/qpdf/qtest/qpdf/json-outlines-with-actions.out index d882fe4e..8ec8b6f0 100644 --- a/qpdf/qtest/qpdf/json-outlines-with-actions.out +++ b/qpdf/qtest/qpdf/json-outlines-with-actions.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Names": { diff --git a/qpdf/qtest/qpdf/json-outlines-with-old-root-dests.out b/qpdf/qtest/qpdf/json-outlines-with-old-root-dests.out index 7e67f3c3..64ba1d37 100644 --- a/qpdf/qtest/qpdf/json-outlines-with-old-root-dests.out +++ b/qpdf/qtest/qpdf/json-outlines-with-old-root-dests.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Dests": "107 0 R", diff --git a/qpdf/qtest/qpdf/json-page-labels-and-outlines.out b/qpdf/qtest/qpdf/json-page-labels-and-outlines.out index 41e148f6..696fff78 100644 --- a/qpdf/qtest/qpdf/json-page-labels-and-outlines.out +++ b/qpdf/qtest/qpdf/json-page-labels-and-outlines.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Outlines": "95 0 R", diff --git a/qpdf/qtest/qpdf/json-page-labels-num-tree.out b/qpdf/qtest/qpdf/json-page-labels-num-tree.out index 2c0c198d..6126d404 100644 --- a/qpdf/qtest/qpdf/json-page-labels-num-tree.out +++ b/qpdf/qtest/qpdf/json-page-labels-num-tree.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/PageLabels": "2 0 R", diff --git a/qpdf/qtest/qpdf/page_api_2-json.out b/qpdf/qtest/qpdf/page_api_2-json.out index 2b907b19..0402accb 100644 --- a/qpdf/qtest/qpdf/page_api_2-json.out +++ b/qpdf/qtest/qpdf/page_api_2-json.out @@ -4,6 +4,33 @@ "hasacroform": false, "needappearances": false }, + "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" + }, + "userpasswordmatched": false + }, "objects": { "1 0 R": { "/Pages": "3 0 R",