mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Major rework -- see long comments
* Replace --create-from-json=file with --json-input, which causes the regular input to be treated as json. * Eliminate --to-json * In --json=2, bring back "objects" and eliminate "objectinfo". Stream data is never present. * In --json-output=2, write "qpdf-v2" with "objects" and include stream data.
This commit is contained in:
parent
23fc6756f1
commit
6f43bf8de3
73
TODO
73
TODO
@ -54,6 +54,10 @@ Soon: Break ground on "Document-level work"
|
||||
Output JSON v2
|
||||
==============
|
||||
|
||||
Some of this documentation has drifted from the actual implementation.
|
||||
|
||||
Make sure pages tree repair generates warnings.
|
||||
|
||||
* Reread from perspective of update
|
||||
* Test all ignore cases with QTC
|
||||
* Test case of correct file with dict before data/datafile
|
||||
@ -62,6 +66,7 @@ Output JSON v2
|
||||
after creation.
|
||||
* Test invalid data, invalid data file
|
||||
* Tests: round-trip through json, round-trip through qpdf --qdf
|
||||
* Test to see if we get CR/NL on Windows, which is okay
|
||||
|
||||
Try to never flatten pages tree. Make sure we do something reasonable
|
||||
with pages tree repair. The problem is that if pages tree repair is
|
||||
@ -75,6 +80,9 @@ General things to remember:
|
||||
* Make sure all the information from --check and other informational
|
||||
options (--show-linearization, --show-encryption, --show-xref,
|
||||
--list-attachments, --show-npages) is available in the json output.
|
||||
Consider having --check, --show-encryption, etc., just select the
|
||||
right keys when in json mode. I don't think I want check on by
|
||||
default, so that might be different.
|
||||
|
||||
* Consider changing the contract to allow fields to be absent even
|
||||
when present in the schema. It's reasonable for people to check for
|
||||
@ -95,41 +103,32 @@ General things to remember:
|
||||
|
||||
JSON to PDF:
|
||||
|
||||
Have --create-from-json and --update-from-json. With
|
||||
--create-from-json, the json file must be complete, meaning all stream
|
||||
data, the trailer, and the PDF version must be present. In
|
||||
--update-from-json, an object explicitly set to null (not "value":
|
||||
null) is deleted. For streams with no stream data, the dictionary is
|
||||
updated but the data is left untouched. Other things that are omitted
|
||||
are left alone. Make sure document that, when writing a PDF file from
|
||||
QPDF, there is no expectation of object numbers being preserved. As
|
||||
such, --update-from-json can only be used to update the exact file
|
||||
that the json was created from. You can put multiple objects in the
|
||||
update file, but you can't use a json from one file to update the
|
||||
output of a previous update since the object numbers will have
|
||||
changed. Note that, when creating from a JSON, object numbers are
|
||||
preserved in the resulting QPDF object but still modified by
|
||||
QPDFWriter for the output. This would be visible by combining
|
||||
--to-json and --create-from-json. Also using --qdf with
|
||||
--create-from-json would show original object IDs in comments. It will
|
||||
be important to capture this in the documentation.
|
||||
Have --json-input and --update-from-json. With --json-input, the json
|
||||
file must be complete, meaning all stream data, the trailer, and the
|
||||
PDF version must be present. In --update-from-json, an object
|
||||
explicitly set to null (not "value": null) is deleted. For streams
|
||||
with no stream data, the dictionary is updated but the data is left
|
||||
untouched. Other things that are omitted are left alone. Make sure
|
||||
document that, when writing a PDF file from QPDF, there is no
|
||||
expectation of object numbers being preserved. As such,
|
||||
--update-from-json can only be used to update the exact file that the
|
||||
json was created from. You can put multiple objects in the update
|
||||
file, but you can't use a json from one file to update the output of a
|
||||
previous update since the object numbers will have changed. Note that,
|
||||
when creating from a JSON, object numbers are preserved in the
|
||||
resulting QPDF object but still modified by QPDFWriter for the output.
|
||||
This would be visible by combining --json-output and --json-input.
|
||||
Also using --qdf with --create-from-json would show original object
|
||||
IDs in comments. It will be important to capture this in the
|
||||
documentation.
|
||||
|
||||
When reading a JSON string, any string that doesn't look like a name
|
||||
or indirect object or start with "b:" or "u:" should be considered an
|
||||
error. Just use newUnicodeString on "u:" strings. For "b:" strings,
|
||||
decode the bytes with hex_decode and use newString.
|
||||
|
||||
For going back from JSON to PDF, we can have
|
||||
QPDF::createFromJSON(std::shared_ptr<InputSource>)
|
||||
which will have logic similar to copyForeignObject. Note that this
|
||||
InputSource is not going to be this->file. We have to keep it
|
||||
separately. There's also non-static QPDF::updateFromJSON. Both
|
||||
createFromJSON and updateFromJSON will call the same internal method
|
||||
with different options. That method will use a reactor that is a
|
||||
private QPDF class that just proxies to private QPDF methods.
|
||||
|
||||
Test case: combine --create-from-json and --to-json to preservation of
|
||||
object numbers. QPDFWriter won't show that although --qdf with the
|
||||
Test case: combine --json-input and --json-output to show preservation
|
||||
of object numbers. QPDFWriter won't show that although --qdf with the
|
||||
original object ID comments would.
|
||||
|
||||
The backing input source for createFromJSON is this memory block:
|
||||
@ -145,8 +144,7 @@ startxref
|
||||
%%EOF
|
||||
```
|
||||
|
||||
* Ignore all keys except .qpdf.
|
||||
* Verify that .qpdf.jsonVersion is 2
|
||||
* Ignore all keys except .qpdf-v2.
|
||||
* Set this->m->pdf_version based on the .qpdf.pdfVersion key
|
||||
* For each object in .qpdf.objects:
|
||||
* Walk through the object detecting any indirect objects. For each
|
||||
@ -170,15 +168,14 @@ Documentation:
|
||||
|
||||
Serialized PDF:
|
||||
|
||||
The JSON output will have a "qpdf" key containing
|
||||
* jsonversion
|
||||
The JSON output will have a "qpdf-v2" key containing
|
||||
* pdfversion
|
||||
* maxobjectid
|
||||
* objects
|
||||
|
||||
The "qpdf" key replaces "objects" and "objectinfo" in v1 JSON.
|
||||
In regular json mode, "objectinfo" is gone.
|
||||
|
||||
Within .qpdf.objects, the key is "obj:o g R" or "trailer", and the
|
||||
Within .objects, the key is "obj:o g R" or "trailer", and the
|
||||
value is a dictionary with exactly one of "value" or "stream" as its
|
||||
single key.
|
||||
|
||||
@ -222,11 +219,11 @@ for when the file is read back in.
|
||||
CLI:
|
||||
|
||||
Example workflow:
|
||||
* qpdf in.pdf --to-json > pdf.json
|
||||
* qpdf in.pdf --json-output=2 pdf.json
|
||||
* edit pdf.json
|
||||
* qpdf --create-from-json=pdf.json out.pdf
|
||||
* qpdf --json-input pdf.json out.pdf
|
||||
|
||||
* qpdf in.pdf --to-json > pdf.json
|
||||
* qpdf in.pdf --json-output=2 pdf.json
|
||||
* edit pdf.json keeping only objects that need to be changed
|
||||
* qpdf in.pdf --update-from-json=pdf.json out.pdf
|
||||
|
||||
|
@ -111,23 +111,38 @@ class QPDF
|
||||
processInputSource(std::shared_ptr<InputSource>, char const* password = 0);
|
||||
|
||||
// Create a PDF from an input source that contains JSON as written
|
||||
// by qpdf --json (version 2 or higher). The JSON must be a
|
||||
// complete representation of a PDF. See "QPDF JSON Format" in the
|
||||
// manual for details.
|
||||
// by writeJSON (or qpdf --json-output, version 2 or higher). The
|
||||
// JSON must be a complete representation of a PDF. See "QPDF JSON
|
||||
// Format" in the manual for details.
|
||||
QPDF_DLL
|
||||
void createFromJSON(std::string const& json_file);
|
||||
QPDF_DLL
|
||||
void createFromJSON(std::shared_ptr<InputSource>);
|
||||
|
||||
// Update a PDF from an input source that contains JSON in the
|
||||
// same format as is written by qpdf --json (version 2 or higher).
|
||||
// Objects in the PDF and not in the JSON are not modified. See
|
||||
// "QPDF JSON Format" in the manual for details.
|
||||
// same format as is written by writeJSON (or qpdf --json-output,
|
||||
// version 2 or higher). Objects in the PDF and not in the JSON
|
||||
// are not modified. See "QPDF JSON Format" in the manual for
|
||||
// details.
|
||||
QPDF_DLL
|
||||
void updateFromJSON(std::string const& json_file);
|
||||
QPDF_DLL
|
||||
void updateFromJSON(std::shared_ptr<InputSource>);
|
||||
|
||||
// Write qpdf json format. The only supported version is 2. If
|
||||
// wanted_objects is empty, write all objects. Otherwise, write
|
||||
// only objects whose keys are in wanted_objects. Keys may be
|
||||
// either "trailer" or of the form "obj:n n R". Invalid keys are
|
||||
// ignored.
|
||||
QPDF_DLL
|
||||
void writeJSON(
|
||||
int version,
|
||||
Pipeline*,
|
||||
qpdf_stream_decode_level_e,
|
||||
qpdf_json_stream_data_e,
|
||||
std::string const& file_prefix,
|
||||
std::set<std::string> wanted_objects);
|
||||
|
||||
// Close or otherwise release the input source. Once this has been
|
||||
// called, no other methods of qpdf can be called safely except
|
||||
// for getWarnings and anyWarnings(). After this has been called,
|
||||
@ -1040,7 +1055,6 @@ class QPDF
|
||||
bool parse_error;
|
||||
bool saw_qpdf;
|
||||
bool saw_objects;
|
||||
bool saw_json_version;
|
||||
bool saw_pdf_version;
|
||||
bool saw_trailer;
|
||||
state_e state;
|
||||
@ -1571,6 +1585,23 @@ class QPDF
|
||||
// JSON import
|
||||
void importJSON(std::shared_ptr<InputSource>, bool must_be_complete);
|
||||
|
||||
// JSON write
|
||||
void writeJSONStream(
|
||||
int version,
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
std::string const& key,
|
||||
QPDFObjectHandle&,
|
||||
qpdf_stream_decode_level_e,
|
||||
qpdf_json_stream_data_e,
|
||||
std::string const& file_prefix);
|
||||
void writeJSONObject(
|
||||
int version,
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
std::string const& key,
|
||||
QPDFObjectHandle&);
|
||||
|
||||
// Type conversion helper methods
|
||||
template <typename T>
|
||||
static qpdf_offset_t
|
||||
|
@ -323,8 +323,6 @@ class QPDFJob
|
||||
Config* outputFile(std::string const& filename);
|
||||
QPDF_DLL
|
||||
Config* replaceInput();
|
||||
QPDF_DLL
|
||||
Config* createFromJson(std::string const& filename);
|
||||
|
||||
QPDF_DLL
|
||||
std::shared_ptr<CopyAttConfig> copyAttachmentsFrom();
|
||||
@ -455,7 +453,10 @@ class QPDFJob
|
||||
|
||||
// Basic file processing
|
||||
std::shared_ptr<QPDF> processFile(
|
||||
char const* filename, char const* password, bool used_for_input);
|
||||
char const* filename,
|
||||
char const* password,
|
||||
bool used_for_input,
|
||||
bool main_input);
|
||||
std::shared_ptr<QPDF> processInputSource(
|
||||
std::shared_ptr<InputSource> is,
|
||||
char const* password,
|
||||
@ -464,12 +465,14 @@ class QPDFJob
|
||||
std::function<void(QPDF*, char const*)> fn,
|
||||
char const* password,
|
||||
bool empty,
|
||||
bool used_for_input);
|
||||
bool used_for_input,
|
||||
bool main_input);
|
||||
std::shared_ptr<QPDF> doProcessOnce(
|
||||
std::function<void(QPDF*, char const*)> fn,
|
||||
char const* password,
|
||||
bool empty,
|
||||
bool used_for_input);
|
||||
bool used_for_input,
|
||||
bool main_input);
|
||||
|
||||
// Transformations
|
||||
void setQPDFOptions(QPDF& pdf);
|
||||
@ -511,31 +514,21 @@ class QPDFJob
|
||||
void setEncryptionOptions(QPDF&, QPDFWriter&);
|
||||
void maybeFixWritePassword(int R, std::string& password);
|
||||
void writeOutfile(QPDF& pdf);
|
||||
void writeJSON(QPDF& pdf);
|
||||
|
||||
// JSON
|
||||
void doJSON(QPDF& pdf, Pipeline*);
|
||||
std::set<QPDFObjGen> getWantedJSONObjects();
|
||||
void doJSONObject(
|
||||
Pipeline* p, bool& first, std::string const& key, QPDFObjectHandle&);
|
||||
void doJSONObjects(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONObjectinfo(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONQpdf(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONPages(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONPageLabels(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONOutlines(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONAcroform(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONEncrypt(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONAttachments(Pipeline* p, bool& first, QPDF& pdf);
|
||||
void doJSONStream(
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
QPDF& pdf,
|
||||
QPDFObjectHandle& obj,
|
||||
std::string const& file_prefix);
|
||||
void doJSONObject(
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
QPDF& pdf,
|
||||
std::string const& key,
|
||||
QPDFObjectHandle& obj);
|
||||
void addOutlinesToJson(
|
||||
std::vector<QPDFOutlineObjectHelper> outlines,
|
||||
JSON& j,
|
||||
@ -654,6 +647,7 @@ class QPDFJob
|
||||
std::set<std::string> json_keys;
|
||||
std::set<std::string> json_objects;
|
||||
qpdf_json_stream_data_e json_stream_data;
|
||||
bool json_stream_data_set;
|
||||
std::string json_stream_prefix;
|
||||
bool test_json_schema;
|
||||
bool check;
|
||||
@ -676,7 +670,8 @@ class QPDFJob
|
||||
bool check_requires_password;
|
||||
std::shared_ptr<char> infilename;
|
||||
std::shared_ptr<char> outfilename;
|
||||
std::string create_from_json;
|
||||
bool json_input;
|
||||
int json_output;
|
||||
std::string update_from_json;
|
||||
};
|
||||
std::shared_ptr<Members> m;
|
||||
|
@ -17,6 +17,7 @@ QPDF_DLL Config* flattenRotation();
|
||||
QPDF_DLL Config* generateAppearances();
|
||||
QPDF_DLL Config* ignoreXrefStreams();
|
||||
QPDF_DLL Config* isEncrypted();
|
||||
QPDF_DLL Config* jsonInput();
|
||||
QPDF_DLL Config* keepInlineImages();
|
||||
QPDF_DLL Config* linearize();
|
||||
QPDF_DLL Config* listAttachments();
|
||||
@ -44,7 +45,6 @@ QPDF_DLL Config* staticId();
|
||||
QPDF_DLL Config* suppressPasswordRecovery();
|
||||
QPDF_DLL Config* suppressRecovery();
|
||||
QPDF_DLL Config* testJsonSchema();
|
||||
QPDF_DLL Config* toJson();
|
||||
QPDF_DLL Config* verbose();
|
||||
QPDF_DLL Config* warningExit0();
|
||||
QPDF_DLL Config* withImages();
|
||||
@ -77,12 +77,13 @@ QPDF_DLL Config* compressStreams(std::string const& parameter);
|
||||
QPDF_DLL Config* decodeLevel(std::string const& parameter);
|
||||
QPDF_DLL Config* flattenAnnotations(std::string const& parameter);
|
||||
QPDF_DLL Config* jsonKey(std::string const& parameter);
|
||||
QPDF_DLL Config* jsonOutput(std::string const& parameter);
|
||||
QPDF_DLL Config* jsonStreamData(std::string const& parameter);
|
||||
QPDF_DLL Config* keepFilesOpen(std::string const& parameter);
|
||||
QPDF_DLL Config* normalizeContent(std::string const& parameter);
|
||||
QPDF_DLL Config* objectStreams(std::string const& parameter);
|
||||
QPDF_DLL Config* passwordMode(std::string const& parameter);
|
||||
QPDF_DLL Config* removeUnreferencedResources(std::string const& parameter);
|
||||
QPDF_DLL Config* streamData(std::string const& parameter);
|
||||
QPDF_DLL Config* jsonStreamData(std::string const& parameter);
|
||||
QPDF_DLL Config* json(std::string const& parameter);
|
||||
QPDF_DLL Config* json();
|
||||
|
18
job.sums
18
job.sums
@ -3,15 +3,15 @@ generate_auto_job 0514289f2deb3bf7c1a6e85ef7d99ad120321ef5a6fe49d76c5274c6a658d3
|
||||
include/qpdf/auto_job_c_att.hh 4c2b171ea00531db54720bf49a43f8b34481586ae7fb6cbf225099ee42bc5bb4
|
||||
include/qpdf/auto_job_c_copy_att.hh 50609012bff14fd82f0649185940d617d05d530cdc522185c7f3920a561ccb42
|
||||
include/qpdf/auto_job_c_enc.hh 28446f3c32153a52afa239ea40503e6cc8ac2c026813526a349e0cd4ae17ddd5
|
||||
include/qpdf/auto_job_c_main.hh 178a0c98c80d53036910ec67165dbc3902aa8da857de8a0df52911f005918c54
|
||||
include/qpdf/auto_job_c_main.hh c21395ba79b98b3054f6d73266285d216b77568ea55ca7149d3e6a157604d682
|
||||
include/qpdf/auto_job_c_pages.hh b3cc0f21029f6d89efa043dcdbfa183cb59325b6506001c18911614fe8e568ec
|
||||
include/qpdf/auto_job_c_uo.hh ae21b69a1efa9333050f4833d465f6daff87e5b38e5106e49bbef5d4132e4ed1
|
||||
job.yml a95b2446066293f409b36032a0ee411dbe570a7a94f5fd295048d009215f993f
|
||||
libqpdf/qpdf/auto_job_decl.hh 833bde9c1f8fc17b914f16498e26d9d1315361645b4ac5c50c1f830a76618ca7
|
||||
libqpdf/qpdf/auto_job_help.hh 38bf89067ca7dc244e4e697c598ba0ba8a827600a78b9195fc69f0ac1663f3a2
|
||||
libqpdf/qpdf/auto_job_init.hh f0ffab312430b232a7288b8443382ed859021e6ad6ed2c8c9a4dbbd2b33e2aa7
|
||||
libqpdf/qpdf/auto_job_json_decl.hh 81d09d4b82b2e042a64246ed1d7a187bdc83b671b45e7b8ee60ad37c0c11e9a7
|
||||
libqpdf/qpdf/auto_job_json_init.hh 2fcdae08365abe351d2dfb6a823e2b3af27a6510632de23cabef6cefa5dfb199
|
||||
libqpdf/qpdf/auto_job_schema.hh 1a80be3b8d97e9b5a55b8aa45a4b312668b1687eab6f038c4ee5f4662ab71997
|
||||
job.yml feae32412cc75f84fb9ff7521121466f9582e85547f45613c3a7083a929f01e6
|
||||
libqpdf/qpdf/auto_job_decl.hh 74df4d7fdbdf51ecd0d58ce1e9844bb5525b9adac5a45f7c9a787ecdda2868df
|
||||
libqpdf/qpdf/auto_job_help.hh 5ca1d2b73f6a70f1ef47896b49553ae8ded4a6459bbb1f6697947e2cc598d799
|
||||
libqpdf/qpdf/auto_job_init.hh 3acc779ff96bde839c8c95a844145df830c53ee58fbf61b8ce056a1751bc11f2
|
||||
libqpdf/qpdf/auto_job_json_decl.hh 06caa46eaf71db8a50c046f91866baa8087745a9474319fb7c86d92634cc8297
|
||||
libqpdf/qpdf/auto_job_json_init.hh 0441fd710ded1512a84976b542910fec16e8b9ab665e5efb5b37c5a29fd8654f
|
||||
libqpdf/qpdf/auto_job_schema.hh 9d543cd4a43eafffc2c4b8a6fee29e399c271c52cb6f7d417ae5497b3c1127dc
|
||||
manual/_ext/qpdf.py 6add6321666031d55ed4aedf7c00e5662bba856dfcd66ccb526563bffefbb580
|
||||
manual/cli.rst 4550dd1b459721d8ef9affa7c9c07f351a06379498ec1291f702f1a5994b6d84
|
||||
manual/cli.rst 3d133669f2b1f845bbc09e51e5b6fff6dd8803282b71aff0db2c55878b1ec508
|
||||
|
25
job.yml
25
job.yml
@ -36,10 +36,6 @@ choices:
|
||||
- all
|
||||
- print
|
||||
- screen
|
||||
json_version:
|
||||
- 1
|
||||
- 2
|
||||
- latest
|
||||
json_key:
|
||||
# The list of selectable top-level keys id duplicated in the
|
||||
# following places: job.yml, QPDFJob::json_schema, and
|
||||
@ -48,15 +44,21 @@ choices:
|
||||
- attachments
|
||||
- encrypt
|
||||
- objectinfo # only v1
|
||||
- objects # only v1
|
||||
- objects
|
||||
- outlines
|
||||
- pagelabels
|
||||
- pages
|
||||
- qpdf # only v2
|
||||
json_output:
|
||||
- 2
|
||||
- latest
|
||||
json_stream_data:
|
||||
- none
|
||||
- inline
|
||||
- file
|
||||
json_version:
|
||||
- 1
|
||||
- 2
|
||||
- latest
|
||||
print128:
|
||||
- full
|
||||
- low
|
||||
@ -86,7 +88,6 @@ options:
|
||||
- underlay
|
||||
- empty
|
||||
- replace-input
|
||||
- create-from-json
|
||||
positional: true
|
||||
bare:
|
||||
- add-attachment
|
||||
@ -105,6 +106,7 @@ options:
|
||||
- generate-appearances
|
||||
- ignore-xref-streams
|
||||
- is-encrypted
|
||||
- json-input
|
||||
- keep-inline-images
|
||||
- linearize
|
||||
- list-attachments
|
||||
@ -135,7 +137,6 @@ options:
|
||||
- suppress-password-recovery
|
||||
- suppress-recovery
|
||||
- test-json-schema
|
||||
- to-json
|
||||
- underlay
|
||||
- verbose
|
||||
- warning-exit-0
|
||||
@ -164,20 +165,20 @@ options:
|
||||
show-attachment: attachment
|
||||
show-object: trailer
|
||||
json-stream-prefix: stream-file-prefix
|
||||
create-from-json: qpdf-json file
|
||||
update-from-json: qpdf-json file
|
||||
required_choices:
|
||||
compress-streams: yn
|
||||
decode-level: decode_level
|
||||
flatten-annotations: flatten
|
||||
json-key: json_key
|
||||
json-output: json_output
|
||||
json-stream-data: json_stream_data
|
||||
keep-files-open: yn
|
||||
normalize-content: yn
|
||||
object-streams: object_streams
|
||||
password-mode: password_mode
|
||||
remove-unreferenced-resources: remove_unref
|
||||
stream-data: stream_data
|
||||
json-stream-data: json_stream_data
|
||||
optional_choices:
|
||||
json: json_version
|
||||
- table: pages
|
||||
@ -281,7 +282,7 @@ json:
|
||||
main.password:
|
||||
password-file:
|
||||
empty:
|
||||
create-from-json:
|
||||
json-input:
|
||||
# output
|
||||
_outputFile: "output filename"
|
||||
replace-input:
|
||||
@ -308,6 +309,7 @@ json:
|
||||
force-version:
|
||||
progress:
|
||||
split-pages:
|
||||
json-output:
|
||||
encrypt:
|
||||
_user-password: "user password"
|
||||
_owner-password: "owner password"
|
||||
@ -362,7 +364,6 @@ json:
|
||||
- null
|
||||
json-stream-data:
|
||||
json-stream-prefix:
|
||||
to-json:
|
||||
# other options
|
||||
update-from-json:
|
||||
allow-weak-crypto:
|
||||
|
@ -402,6 +402,7 @@ QPDFJob::Members::Members() :
|
||||
list_attachments(false),
|
||||
json_version(0),
|
||||
json_stream_data(qpdf_sj_none),
|
||||
json_stream_data_set(false),
|
||||
test_json_schema(false),
|
||||
check(false),
|
||||
optimize_images(false),
|
||||
@ -418,7 +419,9 @@ QPDFJob::Members::Members() :
|
||||
require_outfile(true),
|
||||
replace_input(false),
|
||||
check_is_encrypted(false),
|
||||
check_requires_password(false)
|
||||
check_requires_password(false),
|
||||
json_input(false),
|
||||
json_output(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -533,7 +536,8 @@ QPDFJob::run()
|
||||
checkConfiguration();
|
||||
std::shared_ptr<QPDF> pdf_ph;
|
||||
try {
|
||||
pdf_ph = processFile(m->infilename.get(), m->password.get(), true);
|
||||
pdf_ph =
|
||||
processFile(m->infilename.get(), m->password.get(), true, true);
|
||||
} catch (QPDFExc& e) {
|
||||
if ((e.getErrorCode() == qpdf_e_password) &&
|
||||
(m->check_is_encrypted || m->check_requires_password)) {
|
||||
@ -704,15 +708,8 @@ QPDFJob::checkConfiguration()
|
||||
" overwrite the input file");
|
||||
}
|
||||
|
||||
if (m->json_version == 1) {
|
||||
if (m->json_keys.count("qpdf")) {
|
||||
usage("json key \"qpdf\" is not valid for json version 1");
|
||||
}
|
||||
} else {
|
||||
if (m->json_keys.count("objects") || m->json_keys.count("objectinfo")) {
|
||||
usage("json keys \"objects\" and \"objectinfo\" are only valid for "
|
||||
"json version 1");
|
||||
}
|
||||
if (m->json_keys.count("objectinfo")) {
|
||||
usage("json key \"objectinfo\" is only valid for json version 1");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1060,6 +1057,26 @@ QPDFJob::getWantedJSONObjects()
|
||||
return wanted_og;
|
||||
}
|
||||
|
||||
void
|
||||
QPDFJob::doJSONObject(
|
||||
Pipeline* p, bool& first, std::string const& key, QPDFObjectHandle& obj)
|
||||
{
|
||||
if (this->m->json_version == 1) {
|
||||
JSON::writeDictionaryItem(p, first, key, obj.getJSON(1, true), 1);
|
||||
} else {
|
||||
auto j = JSON::makeDictionary();
|
||||
if (obj.isStream()) {
|
||||
j.addDictionaryMember("stream", JSON::makeDictionary())
|
||||
.addDictionaryMember(
|
||||
"dict", obj.getDict().getJSON(this->m->json_version, true));
|
||||
} else {
|
||||
j.addDictionaryMember(
|
||||
"value", obj.getJSON(this->m->json_version, true));
|
||||
}
|
||||
JSON::writeDictionaryItem(p, first, key, j, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
QPDFJob::doJSONObjects(Pipeline* p, bool& first, QPDF& pdf)
|
||||
{
|
||||
@ -1070,22 +1087,17 @@ QPDFJob::doJSONObjects(Pipeline* p, bool& first, QPDF& pdf)
|
||||
std::set<QPDFObjGen> wanted_og = getWantedJSONObjects();
|
||||
std::vector<QPDFObjectHandle> objects = pdf.getAllObjects();
|
||||
for (auto& obj: objects) {
|
||||
std::string key = obj.unparse();
|
||||
if (this->m->json_version > 1) {
|
||||
key = "obj:" + key;
|
||||
}
|
||||
if (all_objects || wanted_og.count(obj.getObjGen())) {
|
||||
JSON::writeDictionaryItem(
|
||||
p,
|
||||
first_object,
|
||||
obj.unparse(),
|
||||
obj.getJSON(this->m->json_version, true),
|
||||
1);
|
||||
doJSONObject(p, first_object, key, obj);
|
||||
}
|
||||
}
|
||||
if (all_objects || m->json_objects.count("trailer")) {
|
||||
JSON::writeDictionaryItem(
|
||||
p,
|
||||
first_object,
|
||||
"trailer",
|
||||
pdf.getTrailer().getJSON(this->m->json_version, true),
|
||||
1);
|
||||
auto trailer = pdf.getTrailer();
|
||||
doJSONObject(p, first_object, "trailer", trailer);
|
||||
}
|
||||
JSON::writeDictionaryClose(p, first_object, 1);
|
||||
}
|
||||
@ -1122,108 +1134,6 @@ QPDFJob::doJSONObjectinfo(Pipeline* p, bool& first, QPDF& pdf)
|
||||
JSON::writeDictionaryClose(p, first_object, 1);
|
||||
}
|
||||
|
||||
void
|
||||
QPDFJob::doJSONStream(
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
QPDF& pdf,
|
||||
QPDFObjectHandle& obj,
|
||||
std::string const& file_prefix)
|
||||
{
|
||||
Pipeline* stream_p = nullptr;
|
||||
FILE* f = nullptr;
|
||||
std::shared_ptr<Pl_StdioFile> f_pl;
|
||||
std::string filename;
|
||||
if (this->m->json_stream_data == qpdf_sj_file) {
|
||||
filename = file_prefix + "-" + QUtil::int_to_string(obj.getObjectID());
|
||||
f = QUtil::safe_fopen(filename.c_str(), "wb");
|
||||
f_pl = std::make_shared<Pl_StdioFile>("stream data", f);
|
||||
stream_p = f_pl.get();
|
||||
}
|
||||
auto j = JSON::makeDictionary();
|
||||
j.addDictionaryMember(
|
||||
"stream",
|
||||
obj.getStreamJSON(
|
||||
this->m->json_version,
|
||||
this->m->json_stream_data,
|
||||
this->m->decode_level,
|
||||
stream_p,
|
||||
filename));
|
||||
|
||||
JSON::writeDictionaryItem(p, first, "obj:" + obj.unparse(), j, 2);
|
||||
if (f) {
|
||||
f_pl->finish();
|
||||
f_pl = nullptr;
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
QPDFJob::doJSONObject(
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
QPDF& pdf,
|
||||
std::string const& key,
|
||||
QPDFObjectHandle& obj)
|
||||
{
|
||||
auto j = JSON::makeDictionary();
|
||||
j.addDictionaryMember("value", obj.getJSON(this->m->json_version, true));
|
||||
JSON::writeDictionaryItem(p, first, key, j, 2);
|
||||
}
|
||||
|
||||
void
|
||||
QPDFJob::doJSONQpdf(Pipeline* p, bool& first, QPDF& pdf)
|
||||
{
|
||||
std::string file_prefix = this->m->json_stream_prefix;
|
||||
if (this->m->json_stream_data == qpdf_sj_file) {
|
||||
if (file_prefix.empty()) {
|
||||
if (this->m->infilename.get()) {
|
||||
file_prefix = this->m->infilename.get();
|
||||
}
|
||||
if (file_prefix.empty()) {
|
||||
usage(
|
||||
"please specify --json-stream-prefix since the input file "
|
||||
"name is unknown");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JSON::writeDictionaryKey(p, first, "qpdf", 0);
|
||||
bool first_qpdf = true;
|
||||
JSON::writeDictionaryOpen(p, first_qpdf, 1);
|
||||
JSON::writeDictionaryItem(
|
||||
p, first_qpdf, "jsonversion", JSON::makeInt(this->m->json_version), 1);
|
||||
JSON::writeDictionaryItem(
|
||||
p, first_qpdf, "pdfversion", JSON::makeString(pdf.getPDFVersion()), 1);
|
||||
JSON::writeDictionaryItem(
|
||||
p,
|
||||
first_qpdf,
|
||||
"maxobjectid",
|
||||
JSON::makeInt(QIntC::to_longlong(pdf.getObjectCount())),
|
||||
1);
|
||||
JSON::writeDictionaryKey(p, first_qpdf, "objects", 1);
|
||||
bool first_object = true;
|
||||
JSON::writeDictionaryOpen(p, first_object, 2);
|
||||
bool all_objects = m->json_objects.empty();
|
||||
std::set<QPDFObjGen> wanted_og = getWantedJSONObjects();
|
||||
std::vector<QPDFObjectHandle> objects = pdf.getAllObjects();
|
||||
for (auto& obj: objects) {
|
||||
if (all_objects || wanted_og.count(obj.getObjGen())) {
|
||||
if (obj.isStream()) {
|
||||
doJSONStream(p, first_object, pdf, obj, file_prefix);
|
||||
} else {
|
||||
doJSONObject(p, first_object, pdf, "obj:" + obj.unparse(), obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (all_objects || m->json_objects.count("trailer")) {
|
||||
auto trailer = pdf.getTrailer();
|
||||
doJSONObject(p, first_object, pdf, "trailer", trailer);
|
||||
}
|
||||
JSON::writeDictionaryClose(p, first_object, 2);
|
||||
JSON::writeDictionaryClose(p, first_qpdf, 1);
|
||||
}
|
||||
|
||||
void
|
||||
QPDFJob::doJSONPages(Pipeline* p, bool& first, QPDF& pdf)
|
||||
{
|
||||
@ -1603,12 +1513,12 @@ QPDFJob::json_schema(int json_version, std::set<std::string>* keys)
|
||||
// The list of selectable top-level keys id duplicated in the
|
||||
// following places: job.yml, QPDFJob::json_schema, and
|
||||
// QPDFJob::doJSON.
|
||||
if (json_version == 1) {
|
||||
if (all_keys || keys->count("objects")) {
|
||||
schema.addDictionaryMember("objects", JSON::parse(R"({
|
||||
if (all_keys || keys->count("objects")) {
|
||||
schema.addDictionaryMember("objects", JSON::parse(R"({
|
||||
"<n n R|trailer>": "json representation of object"
|
||||
})"));
|
||||
}
|
||||
}
|
||||
if (json_version == 1) {
|
||||
if (all_keys || keys->count("objectinfo")) {
|
||||
JSON objectinfo =
|
||||
schema.addDictionaryMember("objectinfo", JSON::parse(R"({
|
||||
@ -1619,17 +1529,6 @@ QPDFJob::json_schema(int json_version, std::set<std::string>* keys)
|
||||
"length": "if stream, its length, otherwise null"
|
||||
}
|
||||
}
|
||||
})"));
|
||||
}
|
||||
} else {
|
||||
if (all_keys || keys->count("qpdf")) {
|
||||
schema.addDictionaryMember("qpdf", JSON::parse(R"({
|
||||
"jsonversion": "qpdf json output version",
|
||||
"pdfversion": "PDF version from PDF header",
|
||||
"maxobjectid": "Highest object ID; needed for adding new objects",
|
||||
"objects": {
|
||||
"<obj:n n R|trailer>": "json representation of object"
|
||||
}
|
||||
})"));
|
||||
}
|
||||
}
|
||||
@ -1843,17 +1742,15 @@ QPDFJob::doJSON(QPDF& pdf, Pipeline* p)
|
||||
// repairing the page tree. To see the original file with any page
|
||||
// tree problems and the page tree not flattened, select
|
||||
// objects/objectinfo without other keys.
|
||||
if (all_keys || m->json_keys.count("objects")) {
|
||||
doJSONObjects(p, first, pdf);
|
||||
}
|
||||
if (this->m->json_version == 1) {
|
||||
if (all_keys || m->json_keys.count("objects")) {
|
||||
doJSONObjects(p, first, pdf);
|
||||
}
|
||||
// "objectinfo" is not needed for version >1 since you can
|
||||
// tell streams from other objects in "objects".
|
||||
if (all_keys || m->json_keys.count("objectinfo")) {
|
||||
doJSONObjectinfo(p, first, pdf);
|
||||
}
|
||||
} else {
|
||||
if (all_keys || m->json_keys.count("qpdf")) {
|
||||
doJSONQpdf(p, first, pdf);
|
||||
}
|
||||
}
|
||||
|
||||
JSON::writeDictionaryClose(p, first, 0);
|
||||
@ -1939,16 +1836,15 @@ QPDFJob::doProcessOnce(
|
||||
std::function<void(QPDF*, char const*)> fn,
|
||||
char const* password,
|
||||
bool empty,
|
||||
bool used_for_input)
|
||||
bool used_for_input,
|
||||
bool main_input)
|
||||
{
|
||||
auto pdf = std::make_shared<QPDF>();
|
||||
setQPDFOptions(*pdf);
|
||||
if (empty) {
|
||||
if (!this->m->create_from_json.empty()) {
|
||||
pdf->createFromJSON(this->m->create_from_json);
|
||||
} else {
|
||||
pdf->emptyPDF();
|
||||
}
|
||||
pdf->emptyPDF();
|
||||
} else if (main_input && this->m->json_input) {
|
||||
pdf->createFromJSON(this->m->infilename.get());
|
||||
} else {
|
||||
fn(pdf.get(), password);
|
||||
}
|
||||
@ -1964,7 +1860,8 @@ QPDFJob::doProcess(
|
||||
std::function<void(QPDF*, char const*)> fn,
|
||||
char const* password,
|
||||
bool empty,
|
||||
bool used_for_input)
|
||||
bool used_for_input,
|
||||
bool main_input)
|
||||
{
|
||||
// If a password has been specified but doesn't work, try other
|
||||
// passwords that are equivalent in different character encodings.
|
||||
@ -1990,7 +1887,7 @@ QPDFJob::doProcess(
|
||||
m->suppress_password_recovery) {
|
||||
// There is no password, or we're not doing recovery, so just
|
||||
// do the normal processing with the supplied password.
|
||||
return doProcessOnce(fn, password, empty, used_for_input);
|
||||
return doProcessOnce(fn, password, empty, used_for_input, main_input);
|
||||
}
|
||||
|
||||
// Get a list of otherwise encoded strings. Keep in scope for this
|
||||
@ -2018,7 +1915,7 @@ QPDFJob::doProcess(
|
||||
bool warned = false;
|
||||
for (auto iter = passwords.begin(); iter != passwords.end(); ++iter) {
|
||||
try {
|
||||
return doProcessOnce(fn, *iter, empty, used_for_input);
|
||||
return doProcessOnce(fn, *iter, empty, used_for_input, main_input);
|
||||
} catch (QPDFExc& e) {
|
||||
auto next = iter;
|
||||
++next;
|
||||
@ -2042,12 +1939,16 @@ QPDFJob::doProcess(
|
||||
|
||||
std::shared_ptr<QPDF>
|
||||
QPDFJob::processFile(
|
||||
char const* filename, char const* password, bool used_for_input)
|
||||
char const* filename,
|
||||
char const* password,
|
||||
bool used_for_input,
|
||||
bool main_input)
|
||||
{
|
||||
auto f1 = std::mem_fn<void(char const*, char const*)>(&QPDF::processFile);
|
||||
auto fn =
|
||||
std::bind(f1, std::placeholders::_1, filename, std::placeholders::_2);
|
||||
return doProcess(fn, password, strcmp(filename, "") == 0, used_for_input);
|
||||
return doProcess(
|
||||
fn, password, strcmp(filename, "") == 0, used_for_input, main_input);
|
||||
}
|
||||
|
||||
std::shared_ptr<QPDF>
|
||||
@ -2056,7 +1957,7 @@ QPDFJob::processInputSource(
|
||||
{
|
||||
auto f1 = std::mem_fn(&QPDF::processInputSource);
|
||||
auto fn = std::bind(f1, std::placeholders::_1, is, std::placeholders::_2);
|
||||
return doProcess(fn, password, false, used_for_input);
|
||||
return doProcess(fn, password, false, used_for_input, false);
|
||||
}
|
||||
|
||||
void
|
||||
@ -2067,7 +1968,8 @@ QPDFJob::validateUnderOverlay(QPDF& pdf, UnderOverlay* uo)
|
||||
}
|
||||
QPDFPageDocumentHelper main_pdh(pdf);
|
||||
int main_npages = QIntC::to_int(main_pdh.getAllPages().size());
|
||||
uo->pdf = processFile(uo->filename.c_str(), uo->password.get(), true);
|
||||
uo->pdf =
|
||||
processFile(uo->filename.c_str(), uo->password.get(), true, false);
|
||||
QPDFPageDocumentHelper uo_pdh(*(uo->pdf));
|
||||
int uo_npages = QIntC::to_int(uo_pdh.getAllPages().size());
|
||||
try {
|
||||
@ -2324,8 +2226,8 @@ QPDFJob::copyAttachments(QPDF& pdf)
|
||||
cout << prefix << ": copying attachments from " << to_copy.path
|
||||
<< std::endl;
|
||||
});
|
||||
auto other =
|
||||
processFile(to_copy.path.c_str(), to_copy.password.c_str(), false);
|
||||
auto other = processFile(
|
||||
to_copy.path.c_str(), to_copy.password.c_str(), false, false);
|
||||
QPDFEmbeddedFileDocumentHelper other_efdh(*other);
|
||||
auto other_attachments = other_efdh.getEmbeddedFiles();
|
||||
for (auto const& iter: other_attachments) {
|
||||
@ -3176,6 +3078,7 @@ QPDFJob::setWriterOptions(QPDF& pdf, QPDFWriter& w)
|
||||
std::shared_ptr<QPDF> encryption_pdf = processFile(
|
||||
m->encryption_file.c_str(),
|
||||
m->encryption_file_password.get(),
|
||||
false,
|
||||
false);
|
||||
w.copyEncryptionParameters(*encryption_pdf);
|
||||
}
|
||||
@ -3332,10 +3235,13 @@ QPDFJob::writeOutfile(QPDF& pdf)
|
||||
// goes out of scope.
|
||||
m->outfilename = temp_out;
|
||||
} else if (strcmp(m->outfilename.get(), "-") == 0) {
|
||||
m->outfilename = 0;
|
||||
m->outfilename = nullptr;
|
||||
}
|
||||
{
|
||||
// Private scope so QPDFWriter will close the output file
|
||||
if (this->m->json_output) {
|
||||
writeJSON(pdf);
|
||||
} else {
|
||||
// QPDFWriter must have block scope so the output file will be
|
||||
// closed after write() finishes.
|
||||
QPDFWriter w(pdf, m->outfilename.get());
|
||||
setWriterOptions(pdf, w);
|
||||
w.write();
|
||||
@ -3375,3 +3281,47 @@ QPDFJob::writeOutfile(QPDF& pdf)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
QPDFJob::writeJSON(QPDF& pdf)
|
||||
{
|
||||
// File pipeline must have block scope so it will be closed
|
||||
// after write.
|
||||
std::shared_ptr<QUtil::FileCloser> fc;
|
||||
std::shared_ptr<Pipeline> fp;
|
||||
std::string file_prefix = this->m->json_stream_prefix;
|
||||
if (m->outfilename.get()) {
|
||||
QTC::TC("qpdf", "QPDFJob write json to file");
|
||||
if (file_prefix.empty()) {
|
||||
file_prefix = this->m->outfilename.get();
|
||||
}
|
||||
fc = std::make_shared<QUtil::FileCloser>(
|
||||
QUtil::safe_fopen(this->m->outfilename.get(), "w"));
|
||||
fp = std::make_shared<Pl_StdioFile>("json output", fc->f);
|
||||
} else if (
|
||||
(this->m->json_stream_data == qpdf_sj_file) && file_prefix.empty()) {
|
||||
QTC::TC("qpdf", "QPDFJob need json-stream-prefix for stdout");
|
||||
usage("please specify --json-stream-prefix since the input file "
|
||||
"name is unknown");
|
||||
} else {
|
||||
QTC::TC("qpdf", "QPDFJob write json to stdout");
|
||||
fp = std::make_shared<Pl_OStream>("json output", *this->m->cout);
|
||||
}
|
||||
std::set<std::string> json_objects;
|
||||
if (this->m->json_objects.count("trailer")) {
|
||||
json_objects.insert("trailer");
|
||||
}
|
||||
auto wanted = getWantedJSONObjects();
|
||||
for (auto const& og: wanted) {
|
||||
std::ostringstream s;
|
||||
s << "obj:" << og.getObj() << " " << og.getGen() << " R";
|
||||
json_objects.insert(s.str());
|
||||
}
|
||||
pdf.writeJSON(
|
||||
this->m->json_output,
|
||||
fp.get(),
|
||||
this->m->decode_level,
|
||||
this->m->json_stream_data,
|
||||
file_prefix,
|
||||
json_objects);
|
||||
}
|
||||
|
@ -100,13 +100,6 @@ ArgParser::argReplaceInput()
|
||||
this->gave_output = true;
|
||||
}
|
||||
|
||||
void
|
||||
ArgParser::argCreateFromJson(std::string const& arg)
|
||||
{
|
||||
c_main->createFromJson(arg);
|
||||
this->gave_input = true;
|
||||
}
|
||||
|
||||
void
|
||||
ArgParser::argVersion()
|
||||
{
|
||||
|
@ -27,8 +27,7 @@ QPDFJob::Config::emptyInput()
|
||||
// Various places in QPDFJob.cc know that the empty string for
|
||||
// infile means empty. We set it to something other than a
|
||||
// null pointer as an indication that some input source has
|
||||
// been specified. The --create-from-json option also sets
|
||||
// infilename to empty. This approach means that passing "" as
|
||||
// been specified. This approach means that passing "" as
|
||||
// the argument to inputFile in job JSON, or equivalently
|
||||
// using "" as a positional command-line argument would be the
|
||||
// same as --empty. This probably isn't worth blocking or
|
||||
@ -265,6 +264,7 @@ QPDFJob::Config::jsonObject(std::string const& parameter)
|
||||
QPDFJob::Config*
|
||||
QPDFJob::Config::jsonStreamData(std::string const& parameter)
|
||||
{
|
||||
o.m->json_stream_data_set = true;
|
||||
if (parameter == "none") {
|
||||
o.m->json_stream_data = qpdf_sj_none;
|
||||
} else if (parameter == "inline") {
|
||||
@ -286,22 +286,28 @@ QPDFJob::Config::jsonStreamPrefix(std::string const& parameter)
|
||||
}
|
||||
|
||||
QPDFJob::Config*
|
||||
QPDFJob::Config::toJson()
|
||||
QPDFJob::Config::jsonInput()
|
||||
{
|
||||
json("latest");
|
||||
jsonStreamData("inline");
|
||||
jsonKey("qpdf");
|
||||
decodeLevel("none");
|
||||
o.m->json_input = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
QPDFJob::Config*
|
||||
QPDFJob::Config::createFromJson(std::string const& parameter)
|
||||
QPDFJob::Config::jsonOutput(std::string const& parameter)
|
||||
{
|
||||
// See comments in emptyInput() about setting infilename to the
|
||||
// empty string.
|
||||
o.m->infilename = QUtil::make_shared_cstr("");
|
||||
o.m->create_from_json = parameter;
|
||||
std::string v = parameter;
|
||||
if (parameter == "latest") {
|
||||
v = "2";
|
||||
}
|
||||
if (v != "2") {
|
||||
usage("only version 2 is supported for --json-output");
|
||||
}
|
||||
o.m->json_output = QUtil::string_to_int(v.c_str());
|
||||
if (!o.m->json_stream_data_set) {
|
||||
// No need to set json_stream_data_set -- that indicates
|
||||
// explicit use of --json-stream-data.
|
||||
o.m->json_stream_data = qpdf_sj_inline;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -250,12 +250,6 @@ Handlers::setupEmpty()
|
||||
addBare([this]() { c_main->emptyInput(); });
|
||||
}
|
||||
|
||||
void
|
||||
Handlers::setupCreateFromJson()
|
||||
{
|
||||
addParameter([this](char const* p) { c_main->createFromJson(p); });
|
||||
}
|
||||
|
||||
void
|
||||
Handlers::setupOutputFile()
|
||||
{
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
#include <qpdf/FileInputSource.hh>
|
||||
#include <qpdf/Pl_Base64.hh>
|
||||
#include <qpdf/Pl_StdioFile.hh>
|
||||
#include <qpdf/QIntC.hh>
|
||||
#include <qpdf/QTC.hh>
|
||||
#include <qpdf/QUtil.hh>
|
||||
@ -13,7 +14,7 @@
|
||||
|
||||
// | st_initial
|
||||
// { | -> st_top
|
||||
// "qpdf": { | -> st_qpdf
|
||||
// "qpdf-v2": { | -> st_qpdf
|
||||
// "objects": { | -> st_objects
|
||||
// "obj:1 0 R": { | -> st_object_top
|
||||
// "value": { | -> st_object
|
||||
@ -93,7 +94,6 @@ QPDF::JSONReactor::JSONReactor(
|
||||
parse_error(false),
|
||||
saw_qpdf(false),
|
||||
saw_objects(false),
|
||||
saw_json_version(false),
|
||||
saw_pdf_version(false),
|
||||
saw_trailer(false),
|
||||
state(st_initial),
|
||||
@ -154,21 +154,17 @@ QPDF::JSONReactor::containerEnd(JSON const& value)
|
||||
QTC::TC("qpdf", "QPDF_json missing qpdf");
|
||||
error(0, "\"qpdf\" object was not seen");
|
||||
} else {
|
||||
if (!this->saw_json_version) {
|
||||
QTC::TC("qpdf", "QPDF_json missing json version");
|
||||
error(0, "\"qpdf.jsonversion\" was not seen");
|
||||
}
|
||||
if (must_be_complete && !this->saw_pdf_version) {
|
||||
QTC::TC("qpdf", "QPDF_json missing pdf version");
|
||||
error(0, "\"qpdf.pdfversion\" was not seen");
|
||||
error(0, "\"qpdf-v2.pdfversion\" was not seen");
|
||||
}
|
||||
if (!this->saw_objects) {
|
||||
QTC::TC("qpdf", "QPDF_json missing objects");
|
||||
error(0, "\"qpdf.objects\" was not seen");
|
||||
error(0, "\"qpdf-v2.objects\" was not seen");
|
||||
} else {
|
||||
if (must_be_complete && !this->saw_trailer) {
|
||||
QTC::TC("qpdf", "QPDF_json missing trailer");
|
||||
error(0, "\"qpdf.objects.trailer\" was not seen");
|
||||
error(0, "\"qpdf-v2.objects.trailer\" was not seen");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -279,7 +275,7 @@ QPDF::JSONReactor::dictionaryItem(std::string const& key, JSON const& value)
|
||||
QTC::TC("qpdf", "QPDF_json ignoring in st_ignore");
|
||||
// ignore
|
||||
} else if (state == st_top) {
|
||||
if (key == "qpdf") {
|
||||
if (key == "qpdf-v2") {
|
||||
this->saw_qpdf = true;
|
||||
nestedState(key, value, st_qpdf);
|
||||
} else {
|
||||
@ -289,14 +285,7 @@ QPDF::JSONReactor::dictionaryItem(std::string const& key, JSON const& value)
|
||||
next_state = st_ignore;
|
||||
}
|
||||
} else if (state == st_qpdf) {
|
||||
if (key == "jsonversion") {
|
||||
this->saw_json_version = true;
|
||||
std::string v;
|
||||
if (!(value.getNumber(v) && (v == "2"))) {
|
||||
QTC::TC("qpdf", "QPDF_json bad json version");
|
||||
error(value.getStart(), "only JSON version 2 is supported");
|
||||
}
|
||||
} else if (key == "pdfversion") {
|
||||
if (key == "pdfversion") {
|
||||
this->saw_pdf_version = true;
|
||||
bool version_okay = false;
|
||||
std::string v;
|
||||
@ -567,3 +556,110 @@ QPDF::importJSON(std::shared_ptr<InputSource> is, bool must_be_complete)
|
||||
// std::cout << oh.unparseResolved() << std::endl;
|
||||
// }
|
||||
}
|
||||
|
||||
void
|
||||
QPDF::writeJSONStream(
|
||||
int version,
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
std::string const& key,
|
||||
QPDFObjectHandle& obj,
|
||||
qpdf_stream_decode_level_e decode_level,
|
||||
qpdf_json_stream_data_e json_stream_data,
|
||||
std::string const& file_prefix)
|
||||
{
|
||||
Pipeline* stream_p = nullptr;
|
||||
FILE* f = nullptr;
|
||||
std::shared_ptr<Pl_StdioFile> f_pl;
|
||||
std::string filename;
|
||||
if (json_stream_data == qpdf_sj_file) {
|
||||
filename = file_prefix + "-" + QUtil::int_to_string(obj.getObjectID());
|
||||
f = QUtil::safe_fopen(filename.c_str(), "wb");
|
||||
f_pl = std::make_shared<Pl_StdioFile>("stream data", f);
|
||||
stream_p = f_pl.get();
|
||||
}
|
||||
auto j = JSON::makeDictionary();
|
||||
j.addDictionaryMember(
|
||||
"stream",
|
||||
obj.getStreamJSON(
|
||||
version, json_stream_data, decode_level, stream_p, filename));
|
||||
|
||||
JSON::writeDictionaryItem(p, first, key, j, 2);
|
||||
if (f) {
|
||||
f_pl->finish();
|
||||
f_pl = nullptr;
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
QPDF::writeJSONObject(
|
||||
int version,
|
||||
Pipeline* p,
|
||||
bool& first,
|
||||
std::string const& key,
|
||||
QPDFObjectHandle& obj)
|
||||
{
|
||||
auto j = JSON::makeDictionary();
|
||||
j.addDictionaryMember("value", obj.getJSON(version, true));
|
||||
JSON::writeDictionaryItem(p, first, key, j, 2);
|
||||
}
|
||||
|
||||
void
|
||||
QPDF::writeJSON(
|
||||
int version,
|
||||
Pipeline* p,
|
||||
qpdf_stream_decode_level_e decode_level,
|
||||
qpdf_json_stream_data_e json_stream_data,
|
||||
std::string const& file_prefix,
|
||||
std::set<std::string> wanted_objects)
|
||||
{
|
||||
if (version != 2) {
|
||||
throw std::runtime_error(
|
||||
"QPDF::writeJSON: only version 2 is supported");
|
||||
}
|
||||
bool first = true;
|
||||
JSON::writeDictionaryOpen(p, first, 0);
|
||||
JSON::writeDictionaryKey(p, first, "qpdf-v2", 0);
|
||||
bool first_qpdf = true;
|
||||
JSON::writeDictionaryOpen(p, first_qpdf, 1);
|
||||
JSON::writeDictionaryItem(
|
||||
p, first_qpdf, "pdfversion", JSON::makeString(getPDFVersion()), 1);
|
||||
JSON::writeDictionaryItem(
|
||||
p,
|
||||
first_qpdf,
|
||||
"maxobjectid",
|
||||
JSON::makeInt(QIntC::to_longlong(getObjectCount())),
|
||||
1);
|
||||
JSON::writeDictionaryKey(p, first_qpdf, "objects", 1);
|
||||
bool first_object = true;
|
||||
JSON::writeDictionaryOpen(p, first_object, 2);
|
||||
bool all_objects = wanted_objects.empty();
|
||||
std::vector<QPDFObjectHandle> objects = getAllObjects();
|
||||
for (auto& obj: objects) {
|
||||
std::string key = "obj:" + obj.unparse();
|
||||
if (all_objects || wanted_objects.count(key)) {
|
||||
if (obj.isStream()) {
|
||||
writeJSONStream(
|
||||
version,
|
||||
p,
|
||||
first_object,
|
||||
key,
|
||||
obj,
|
||||
decode_level,
|
||||
json_stream_data,
|
||||
file_prefix);
|
||||
} else {
|
||||
writeJSONObject(version, p, first_object, key, obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (all_objects || wanted_objects.count("trailer")) {
|
||||
auto trailer = getTrailer();
|
||||
writeJSONObject(version, p, first_object, "trailer", trailer);
|
||||
}
|
||||
JSON::writeDictionaryClose(p, first_object, 2);
|
||||
JSON::writeDictionaryClose(p, first_qpdf, 1);
|
||||
JSON::writeDictionaryClose(p, first, 0);
|
||||
*p << "\n";
|
||||
}
|
||||
|
@ -28,7 +28,6 @@ void argOverlay();
|
||||
void argPages();
|
||||
void argReplaceInput();
|
||||
void argUnderlay();
|
||||
void argCreateFromJson(std::string const&);
|
||||
void argPagesPositional(std::string const&);
|
||||
void argPagesPassword(std::string const&);
|
||||
void argEndPages();
|
||||
|
@ -798,10 +798,6 @@ depth in the JSON section of the manual. "version" may be a
|
||||
specific version or "latest". Run qpdf --json-help for a
|
||||
description of the generated JSON object.
|
||||
)");
|
||||
ap.addOptionHelp("--to-json", "json", "serialize to JSON", R"(Shortcut for options useful for serializing PDF to JSON:
|
||||
--json=latest --json-stream-data=inline
|
||||
--json-key=qpdf --decode-level=none
|
||||
)");
|
||||
ap.addOptionHelp("--json-help", "json", "show format of JSON output", R"(Describe the format of the JSON output by writing to standard
|
||||
output a JSON object with the same keys and with values
|
||||
containing descriptive text.
|
||||
@ -836,11 +832,16 @@ name as the prefix for stream data files. Whatever is given here
|
||||
will be appended with -nnn to create the name of the file that
|
||||
will contain the data for the stream stream in object nnn.
|
||||
)");
|
||||
ap.addOptionHelp("--create-from-json", "json", "create PDF from qpdf JSON", R"(--create-from-json=qpdf-json-file
|
||||
ap.addOptionHelp("--json-output", "json", "serialize to JSON", R"(--json-output=version
|
||||
|
||||
Create a PDF file from the prior output of qpdf --json. See the
|
||||
"QPDF JSON Format" section of the manual for information about
|
||||
how to use this option.
|
||||
The output file will be qpdf JSON format at the given version.
|
||||
Only version 2 is supported. See also --json-stream-data
|
||||
and --json-stream-prefix
|
||||
)");
|
||||
ap.addOptionHelp("--json-input", "json", "input file is qpdf JSON", R"(Treat the input file as a JSON file in qpdf JSON format as
|
||||
written by qpdf --json-output. See the "QPDF JSON Format"
|
||||
section of the manual for information about how to use this
|
||||
option.
|
||||
)");
|
||||
ap.addOptionHelp("--update-from-json", "json", "update a PDF from qpdf JSON", R"(--update-from-json=qpdf-json-file
|
||||
|
||||
|
@ -19,9 +19,10 @@ static char const* decode_level_choices[] = {"none", "generalized", "specialized
|
||||
static char const* object_streams_choices[] = {"disable", "preserve", "generate", 0};
|
||||
static char const* remove_unref_choices[] = {"auto", "yes", "no", 0};
|
||||
static char const* flatten_choices[] = {"all", "print", "screen", 0};
|
||||
static char const* json_version_choices[] = {"1", "2", "latest", 0};
|
||||
static char const* json_key_choices[] = {"acroform", "attachments", "encrypt", "objectinfo", "objects", "outlines", "pagelabels", "pages", "qpdf", 0};
|
||||
static char const* json_key_choices[] = {"acroform", "attachments", "encrypt", "objectinfo", "objects", "outlines", "pagelabels", "pages", 0};
|
||||
static char const* json_output_choices[] = {"2", "latest", 0};
|
||||
static char const* json_stream_data_choices[] = {"none", "inline", "file", 0};
|
||||
static char const* json_version_choices[] = {"1", "2", "latest", 0};
|
||||
static char const* print128_choices[] = {"full", "low", "none", 0};
|
||||
static char const* modify128_choices[] = {"all", "annotate", "form", "assembly", "none", 0};
|
||||
|
||||
@ -49,6 +50,7 @@ this->ap.addBare("flatten-rotation", [this](){c_main->flattenRotation();});
|
||||
this->ap.addBare("generate-appearances", [this](){c_main->generateAppearances();});
|
||||
this->ap.addBare("ignore-xref-streams", [this](){c_main->ignoreXrefStreams();});
|
||||
this->ap.addBare("is-encrypted", [this](){c_main->isEncrypted();});
|
||||
this->ap.addBare("json-input", [this](){c_main->jsonInput();});
|
||||
this->ap.addBare("keep-inline-images", [this](){c_main->keepInlineImages();});
|
||||
this->ap.addBare("linearize", [this](){c_main->linearize();});
|
||||
this->ap.addBare("list-attachments", [this](){c_main->listAttachments();});
|
||||
@ -79,7 +81,6 @@ this->ap.addBare("static-id", [this](){c_main->staticId();});
|
||||
this->ap.addBare("suppress-password-recovery", [this](){c_main->suppressPasswordRecovery();});
|
||||
this->ap.addBare("suppress-recovery", [this](){c_main->suppressRecovery();});
|
||||
this->ap.addBare("test-json-schema", [this](){c_main->testJsonSchema();});
|
||||
this->ap.addBare("to-json", [this](){c_main->toJson();});
|
||||
this->ap.addBare("underlay", b(&ArgParser::argUnderlay));
|
||||
this->ap.addBare("verbose", [this](){c_main->verbose();});
|
||||
this->ap.addBare("warning-exit-0", [this](){c_main->warningExit0();});
|
||||
@ -104,7 +105,6 @@ this->ap.addRequiredParameter("rotate", [this](std::string const& x){c_main->rot
|
||||
this->ap.addRequiredParameter("show-attachment", [this](std::string const& x){c_main->showAttachment(x);}, "attachment");
|
||||
this->ap.addRequiredParameter("show-object", [this](std::string const& x){c_main->showObject(x);}, "trailer");
|
||||
this->ap.addRequiredParameter("json-stream-prefix", [this](std::string const& x){c_main->jsonStreamPrefix(x);}, "stream-file-prefix");
|
||||
this->ap.addRequiredParameter("create-from-json", p(&ArgParser::argCreateFromJson), "qpdf-json file");
|
||||
this->ap.addRequiredParameter("update-from-json", [this](std::string const& x){c_main->updateFromJson(x);}, "qpdf-json file");
|
||||
this->ap.addOptionalParameter("collate", [this](std::string const& x){c_main->collate(x);});
|
||||
this->ap.addOptionalParameter("split-pages", [this](std::string const& x){c_main->splitPages(x);});
|
||||
@ -112,13 +112,14 @@ this->ap.addChoices("compress-streams", [this](std::string const& x){c_main->com
|
||||
this->ap.addChoices("decode-level", [this](std::string const& x){c_main->decodeLevel(x);}, true, decode_level_choices);
|
||||
this->ap.addChoices("flatten-annotations", [this](std::string const& x){c_main->flattenAnnotations(x);}, true, flatten_choices);
|
||||
this->ap.addChoices("json-key", [this](std::string const& x){c_main->jsonKey(x);}, true, json_key_choices);
|
||||
this->ap.addChoices("json-output", [this](std::string const& x){c_main->jsonOutput(x);}, true, json_output_choices);
|
||||
this->ap.addChoices("json-stream-data", [this](std::string const& x){c_main->jsonStreamData(x);}, true, json_stream_data_choices);
|
||||
this->ap.addChoices("keep-files-open", [this](std::string const& x){c_main->keepFilesOpen(x);}, true, yn_choices);
|
||||
this->ap.addChoices("normalize-content", [this](std::string const& x){c_main->normalizeContent(x);}, true, yn_choices);
|
||||
this->ap.addChoices("object-streams", [this](std::string const& x){c_main->objectStreams(x);}, true, object_streams_choices);
|
||||
this->ap.addChoices("password-mode", [this](std::string const& x){c_main->passwordMode(x);}, true, password_mode_choices);
|
||||
this->ap.addChoices("remove-unreferenced-resources", [this](std::string const& x){c_main->removeUnreferencedResources(x);}, true, remove_unref_choices);
|
||||
this->ap.addChoices("stream-data", [this](std::string const& x){c_main->streamData(x);}, true, stream_data_choices);
|
||||
this->ap.addChoices("json-stream-data", [this](std::string const& x){c_main->jsonStreamData(x);}, true, json_stream_data_choices);
|
||||
this->ap.addChoices("json", [this](std::string const& x){c_main->json(x);}, false, json_version_choices);
|
||||
this->ap.registerOptionTable("pages", b(&ArgParser::argEndPages));
|
||||
this->ap.addPositional(p(&ArgParser::argPagesPositional));
|
||||
|
@ -8,7 +8,6 @@
|
||||
void setupInputFile();
|
||||
void setupPassword();
|
||||
void setupEmpty();
|
||||
void setupCreateFromJson();
|
||||
void setupOutputFile();
|
||||
void setupReplaceInput();
|
||||
void beginEncrypt(JSON);
|
||||
|
@ -12,9 +12,10 @@ static char const* decode_level_choices[] = {"none", "generalized", "specialized
|
||||
static char const* object_streams_choices[] = {"disable", "preserve", "generate", 0};
|
||||
static char const* remove_unref_choices[] = {"auto", "yes", "no", 0};
|
||||
static char const* flatten_choices[] = {"all", "print", "screen", 0};
|
||||
static char const* json_version_choices[] = {"1", "2", "latest", 0};
|
||||
static char const* json_key_choices[] = {"acroform", "attachments", "encrypt", "objectinfo", "objects", "outlines", "pagelabels", "pages", "qpdf", 0};
|
||||
static char const* json_key_choices[] = {"acroform", "attachments", "encrypt", "objectinfo", "objects", "outlines", "pagelabels", "pages", 0};
|
||||
static char const* json_output_choices[] = {"2", "latest", 0};
|
||||
static char const* json_stream_data_choices[] = {"none", "inline", "file", 0};
|
||||
static char const* json_version_choices[] = {"1", "2", "latest", 0};
|
||||
static char const* print128_choices[] = {"full", "low", "none", 0};
|
||||
static char const* modify128_choices[] = {"all", "annotate", "form", "assembly", "none", 0};
|
||||
|
||||
@ -30,9 +31,9 @@ popHandler(); // key: passwordFile
|
||||
pushKey("empty");
|
||||
setupEmpty();
|
||||
popHandler(); // key: empty
|
||||
pushKey("createFromJson");
|
||||
setupCreateFromJson();
|
||||
popHandler(); // key: createFromJson
|
||||
pushKey("jsonInput");
|
||||
addBare([this]() { c_main->jsonInput(); });
|
||||
popHandler(); // key: jsonInput
|
||||
pushKey("outputFile");
|
||||
setupOutputFile();
|
||||
popHandler(); // key: outputFile
|
||||
@ -105,6 +106,9 @@ popHandler(); // key: progress
|
||||
pushKey("splitPages");
|
||||
addParameter([this](std::string const& p) { c_main->splitPages(p); });
|
||||
popHandler(); // key: splitPages
|
||||
pushKey("jsonOutput");
|
||||
addChoices(json_output_choices, true, [this](std::string const& p) { c_main->jsonOutput(p); });
|
||||
popHandler(); // key: jsonOutput
|
||||
pushKey("encrypt");
|
||||
beginDict(bindJSON(&Handlers::beginEncrypt), bindBare(&Handlers::endEncrypt)); // .encrypt
|
||||
pushKey("userPassword");
|
||||
@ -262,9 +266,6 @@ popHandler(); // key: jsonStreamData
|
||||
pushKey("jsonStreamPrefix");
|
||||
addParameter([this](std::string const& p) { c_main->jsonStreamPrefix(p); });
|
||||
popHandler(); // key: jsonStreamPrefix
|
||||
pushKey("toJson");
|
||||
addBare([this]() { c_main->toJson(); });
|
||||
popHandler(); // key: toJson
|
||||
pushKey("updateFromJson");
|
||||
addParameter([this](std::string const& p) { c_main->updateFromJson(p); });
|
||||
popHandler(); // key: updateFromJson
|
||||
|
@ -3,7 +3,7 @@ static constexpr char const* JOB_SCHEMA_DATA = R"({
|
||||
"password": "password for encrypted file",
|
||||
"passwordFile": "read password from a file",
|
||||
"empty": "use empty file as input",
|
||||
"createFromJson": "create PDF from qpdf JSON",
|
||||
"jsonInput": "input file is qpdf JSON",
|
||||
"outputFile": "output filename",
|
||||
"replaceInput": "overwrite input with output",
|
||||
"qdf": "enable viewing PDF code in a text editor",
|
||||
@ -28,6 +28,7 @@ static constexpr char const* JOB_SCHEMA_DATA = R"({
|
||||
"forceVersion": "set output PDF version",
|
||||
"progress": "show progress when writing",
|
||||
"splitPages": "write pages to separate files",
|
||||
"jsonOutput": "serialize to JSON",
|
||||
"encrypt": {
|
||||
"userPassword": "user password",
|
||||
"ownerPassword": "owner password",
|
||||
@ -87,7 +88,6 @@ static constexpr char const* JOB_SCHEMA_DATA = R"({
|
||||
],
|
||||
"jsonStreamData": "how to handle streams in json output",
|
||||
"jsonStreamPrefix": "prefix for json stream data files",
|
||||
"toJson": "serialize to JSON",
|
||||
"updateFromJson": "update a PDF from qpdf JSON",
|
||||
"allowWeakCrypto": "allow insecure cryptographic algorithms",
|
||||
"keepFilesOpen": "manage keeping multiple files open",
|
||||
|
@ -3174,20 +3174,6 @@ Related Options
|
||||
:qpdf:ref:`--json-help` option to get a description of the JSON
|
||||
object.
|
||||
|
||||
.. qpdf:option:: --to-json
|
||||
|
||||
.. help: serialize to JSON
|
||||
|
||||
Shortcut for options useful for serializing PDF to JSON:
|
||||
--json=latest --json-stream-data=inline
|
||||
--json-key=qpdf --decode-level=none
|
||||
|
||||
This option is a shorthand for
|
||||
``--json=latest --json-stream-data=inline --json-key=qpdf --decode-level=none``.
|
||||
These are good options for serializing a PDF to JSON in manner that
|
||||
allows qpdf to read it back in. You can override any of these
|
||||
options by specifying other options after them.
|
||||
|
||||
.. qpdf:option:: --json-help
|
||||
|
||||
.. help: show format of JSON output
|
||||
@ -3253,7 +3239,8 @@ Related Options
|
||||
inline (base64-encoded) or written to a file. If ``file`` is
|
||||
chosen, the file will be the name of the input file appended with
|
||||
:samp:`-{nnn}` where :samp:`{nnn}` is the object number. The prefix
|
||||
can be overridden with :qpdf:ref:`--json-stream-prefix`.
|
||||
can be overridden with :qpdf:ref:`--json-stream-prefix`. This
|
||||
option only applies when used with :qpdf:ref:`--json-output`.
|
||||
|
||||
.. qpdf:option:: --json-stream-prefix=file-prefix
|
||||
|
||||
@ -3268,20 +3255,34 @@ Related Options
|
||||
``file``, override the input file name as the prefix for stream
|
||||
data files. Whatever is given here will be appended with
|
||||
:samp:`-{nnn}` to create the name of the file that will contain the
|
||||
data for the stream stream in object :samp:`{nnn}`.
|
||||
data for the stream stream in object :samp:`{nnn}`. This
|
||||
option only applies when used with :qpdf:ref:`--json-output`.
|
||||
|
||||
.. qpdf:option:: --create-from-json=qpdf-json-file
|
||||
.. qpdf:option:: --json-output=version
|
||||
|
||||
.. help: create PDF from qpdf JSON
|
||||
.. help: serialize to JSON
|
||||
|
||||
Create a PDF file from the prior output of qpdf --json. See the
|
||||
"QPDF JSON Format" section of the manual for information about
|
||||
how to use this option.
|
||||
The output file will be qpdf JSON format at the given version.
|
||||
Only version 2 is supported. See also --json-stream-data
|
||||
and --json-stream-prefix
|
||||
|
||||
This option creates a PDF file from the previous output of ``qpdf
|
||||
--json`` that includes stream data and information about all
|
||||
objects. For information about converting between PDF and JSON,
|
||||
please see :ref:`qpdf-json`.
|
||||
The output file will be qpdf JSON format at the given version. Only
|
||||
version 2 is supported. See also :qpdf:ref:`--json-stream-data` and
|
||||
:qpdf:ref:`--json-stream-prefix`.
|
||||
|
||||
.. qpdf:option:: --json-input
|
||||
|
||||
.. help: input file is qpdf JSON
|
||||
|
||||
Treat the input file as a JSON file in qpdf JSON format as
|
||||
written by qpdf --json-output. See the "QPDF JSON Format"
|
||||
section of the manual for information about how to use this
|
||||
option.
|
||||
|
||||
Treat the input file as a JSON file in qpdf JSON format as written
|
||||
by ``qpdf --json-output``. The input file must be complete and
|
||||
include all stream data. For information about converting between
|
||||
PDF and JSON, please see :ref:`qpdf-json`.
|
||||
|
||||
.. qpdf:option:: --update-from-json=qpdf-json-file
|
||||
|
||||
|
@ -651,10 +651,8 @@ QPDFJob json encrypt missing password 0
|
||||
QPDFJob json pages no file 0
|
||||
qpdf-c called qpdf_empty_pdf 0
|
||||
QPDF_json missing qpdf 0
|
||||
QPDF_json missing json version 0
|
||||
QPDF_json missing pdf version 0
|
||||
QPDF_json top-level scalar 0
|
||||
QPDF_json bad json version 0
|
||||
QPDF_json bad pdf version 0
|
||||
QPDF_json top-level array 0
|
||||
QPDF_json bad object key 0
|
||||
@ -668,3 +666,6 @@ QPDF_json data datafile both or neither 0
|
||||
QPDF_json stream no dict 0
|
||||
QPDF_json trailer no value 0
|
||||
QPDF_json value stream both or neither 0
|
||||
QPDFJob need json-stream-prefix for stdout 0
|
||||
QPDFJob write json to stdout 0
|
||||
QPDFJob write json to file 0
|
||||
|
@ -26,16 +26,16 @@ my @json_files = (
|
||||
['field-types', ['--show-encryption-key']],
|
||||
['image-streams', ['--decode-level=all']],
|
||||
['image-streams', ['--decode-level=specialized']],
|
||||
['page-labels-and-outlines', ['--json-key=qpdf']],
|
||||
['page-labels-and-outlines', ['--json-key=objects']],
|
||||
['page-labels-and-outlines', ['--json-key=pages']],
|
||||
['page-labels-and-outlines', ['--json-key=pagelabels']],
|
||||
['page-labels-and-outlines', ['--json-key=outlines']],
|
||||
['page-labels-and-outlines',
|
||||
['--json-key=outlines', '--json-key=pages']],
|
||||
['page-labels-and-outlines',
|
||||
['--json-key=qpdf', '--json-object=trailer']],
|
||||
['--json-key=objects', '--json-object=trailer']],
|
||||
['page-labels-and-outlines',
|
||||
['--json-key=qpdf', '--json-object=trailer', '--json-object=2 0 R']],
|
||||
['--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']],
|
||||
@ -46,27 +46,18 @@ foreach my $d (@json_files)
|
||||
{
|
||||
my ($file, $xargs) = @$d;
|
||||
my $out = "json-$file";
|
||||
my @v1_xargs = ();
|
||||
foreach my $x (@$xargs)
|
||||
{
|
||||
my $y = $x;
|
||||
$y =~ s/^.*=//;
|
||||
$y =~ s/\s.*//;
|
||||
$out .= "-$y";
|
||||
if ($x eq '--json-key=qpdf')
|
||||
{
|
||||
push(@v1_xargs, '--json-key=objects');
|
||||
}
|
||||
else
|
||||
{
|
||||
push(@v1_xargs, $x);
|
||||
}
|
||||
}
|
||||
my $in = "$file.pdf";
|
||||
$td->runtest("json v1 $out",
|
||||
{$td->COMMAND =>
|
||||
['qpdf', '--json=1', '--test-json-schema',
|
||||
@v1_xargs, $in]},
|
||||
@$xargs, $in]},
|
||||
{$td->FILE => "$out-v1.out", $td->EXIT_STATUS => 0},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("json v2 $out",
|
||||
@ -78,8 +69,8 @@ foreach my $d (@json_files)
|
||||
|
||||
$td->runtest("bad json stream data (inline)",
|
||||
{$td->COMMAND =>
|
||||
"qpdf --json=2 --test-json-schema" .
|
||||
" --json-stream-data=inline bad-data.pdf > a.json"},
|
||||
"qpdf --json-output=2" .
|
||||
" --json-stream-data=inline bad-data.pdf a.json"},
|
||||
{$td->FILE => "bad-data-json.out", $td->EXIT_STATUS => 3},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("check (inline)",
|
||||
@ -88,9 +79,9 @@ $td->runtest("check (inline)",
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("bad json stream data (file)",
|
||||
{$td->COMMAND =>
|
||||
"qpdf --json=2 --test-json-schema" .
|
||||
"qpdf --json-output=2 " .
|
||||
" --json-stream-data=file --json-stream-prefix=auto" .
|
||||
" bad-data.pdf > a.json"},
|
||||
" bad-data.pdf a.json"},
|
||||
{$td->FILE => "bad-data-json.out", $td->EXIT_STATUS => 3},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("check (file)",
|
||||
@ -110,7 +101,7 @@ foreach my $l (qw(none generalized specialized all))
|
||||
# library is use.
|
||||
$td->runtest("image-streams json inline: $l",
|
||||
{$td->COMMAND =>
|
||||
"qpdf image-streams-small.pdf --json=2" .
|
||||
"qpdf image-streams-small.pdf - --json-output=2" .
|
||||
" --decode-level=$l --json-stream-data=inline"},
|
||||
{$td->FILE => "json-image-streams-$l-inline-v2.out",
|
||||
$td->EXIT_STATUS => 0},
|
||||
@ -118,9 +109,9 @@ foreach my $l (qw(none generalized specialized all))
|
||||
}
|
||||
$td->runtest("image-streams json file: $l",
|
||||
{$td->COMMAND =>
|
||||
"qpdf image-streams-small.pdf --json=2" .
|
||||
"qpdf image-streams-small.pdf - --json-output=2" .
|
||||
" --decode-level=$l --json-stream-data=file" .
|
||||
" --json-stream-prefix=auto --json-key=qpdf" .
|
||||
" --json-stream-prefix=auto" .
|
||||
" --json-object=12 --json-object=16 --json-object=18"},
|
||||
{$td->FILE => "json-image-streams-$l-file-v2.out",
|
||||
$td->EXIT_STATUS => 0},
|
||||
@ -159,10 +150,12 @@ foreach my $l (qw(none generalized specialized all))
|
||||
}
|
||||
}
|
||||
|
||||
$td->runtest("use --to-json option",
|
||||
{$td->COMMAND => "qpdf --to-json image-streams-small.pdf"},
|
||||
{$td->FILE => "image-streams-small-to-json.out",
|
||||
$td->EXIT_STATUS => 0},
|
||||
$td->runtest("file to stdout without prefix",
|
||||
{$td->COMMAND =>
|
||||
"qpdf image-streams-small.pdf - --json-output=2" .
|
||||
" -json-stream-data=file"},
|
||||
{$td->FILE => "file-stdout-needs-prefix.out",
|
||||
$td->EXIT_STATUS => 2},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
|
||||
cleanup();
|
||||
|
@ -50,19 +50,19 @@ $td->runtest("show direct pages",
|
||||
|
||||
# Json mode for direct and duplicated pages illustrates that the
|
||||
# "objects" section the original objects before correction when
|
||||
# "pages" is not output but after correct when it is.# numbers.
|
||||
# "pages" is not output but after correct when it is.
|
||||
foreach my $f (qw(page_api_2 direct-pages))
|
||||
{
|
||||
$td->runtest("json for $f (objects only)",
|
||||
{$td->COMMAND =>
|
||||
"qpdf --json=latest $f.pdf" .
|
||||
" --json-key=qpdf"},
|
||||
" --json-key=objects"},
|
||||
{$td->FILE => "$f-json-objects.out", $td->EXIT_STATUS => 0},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("json for $f (with pages)",
|
||||
{$td->COMMAND =>
|
||||
"qpdf --json=latest $f.pdf" .
|
||||
" --json-key=qpdf --json-key=pages"},
|
||||
" --json-key=objects --json-key=pages"},
|
||||
{$td->FILE => "$f-json-pages.out", $td->EXIT_STATUS => 0},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
WARNING: bad-data.pdf (offset 319): error decoding stream data for object 4 0: LZWDecoder: bad code received
|
||||
WARNING: bad-data.pdf (offset 319): stream will be re-processed without filtering to avoid data loss
|
||||
qpdf: operation succeeded with warnings
|
||||
qpdf: operation succeeded with warnings; resulting file may have some problems
|
||||
|
@ -3,93 +3,88 @@
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 2,
|
||||
"/Kids": [
|
||||
{
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/ProcSet": "6 0 R"
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 2,
|
||||
"/Kids": [
|
||||
{
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
"/ProcSet": "6 0 R"
|
||||
},
|
||||
{
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/ProcSet": "6 0 R"
|
||||
"/Type": "/Page"
|
||||
},
|
||||
{
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "4 0 R"
|
||||
"/ProcSet": "6 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "4 0 R"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": 44
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:1323a5937c577a66735583a93698ce3c",
|
||||
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 7
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": 44
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:1323a5937c577a66735583a93698ce3c",
|
||||
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 7
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,99 +25,94 @@
|
||||
"pageposfrom1": 2
|
||||
}
|
||||
],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 8,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 2,
|
||||
"/Kids": [
|
||||
"7 0 R",
|
||||
"8 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "4 0 R"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 2,
|
||||
"/Kids": [
|
||||
"7 0 R",
|
||||
"8 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "4 0 R"
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": 44
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/ProcSet": "6 0 R"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": 44
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/ProcSet": "6 0 R"
|
||||
"/ProcSet": "6 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "3 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "5 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:1323a5937c577a66735583a93698ce3c",
|
||||
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 7
|
||||
}
|
||||
"/ProcSet": "6 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:1323a5937c577a66735583a93698ce3c",
|
||||
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 7
|
||||
}
|
||||
}
|
||||
}
|
||||
|
9
qpdf/qtest/qpdf/file-stdout-needs-prefix.out
Normal file
9
qpdf/qtest/qpdf/file-stdout-needs-prefix.out
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
qpdf: please specify --json-stream-prefix since the input file name is unknown
|
||||
|
||||
For help:
|
||||
qpdf --help=usage usage information
|
||||
qpdf --help=topic help on a topic
|
||||
qpdf --help=--option help on an option
|
||||
qpdf --help general help and a topic list
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,57 +1,5 @@
|
||||
{
|
||||
"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"
|
||||
},
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,57 +1,5 @@
|
||||
{
|
||||
"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"
|
||||
},
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "all"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
|
@ -274,473 +274,468 @@
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Height": 480,
|
||||
"/Length": 768000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 9364,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 768998,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 94
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Height": 480,
|
||||
"/Length": 576000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 100
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3650,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 641497,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Height": 480,
|
||||
"/Length": 192000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 2587,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3001,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:53b6958e9beef00ea2ac077d5f2912b6",
|
||||
"b:272b8d8ba45632ab505020e7606d221d"
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Height": 480,
|
||||
"/Length": 768000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 9364,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 768998,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 94
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Height": 480,
|
||||
"/Length": 576000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 100
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3650,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 641497,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Height": 480,
|
||||
"/Length": 192000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 2587,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3001,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:53b6958e9beef00ea2ac077d5f2912b6",
|
||||
"b:272b8d8ba45632ab505020e7606d221d"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
|
@ -1,281 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"pages": [
|
||||
{
|
||||
"contents": [
|
||||
"12 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "14 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "3 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 1
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"15 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "16 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "4 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 2
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"17 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "18 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "5 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 3
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"19 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "20 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "6 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 4
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"21 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "22 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "7 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 5
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"23 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "24 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "8 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 6
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"25 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "26 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "9 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 7
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"27 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "28 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "10 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 8
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"29 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "30 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "11 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 9
|
||||
}
|
||||
],
|
||||
"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"
|
||||
},
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
|
@ -1,281 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"pages": [
|
||||
{
|
||||
"contents": [
|
||||
"12 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "14 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "3 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 1
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"15 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "16 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "4 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 2
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"17 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "18 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "5 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 3
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"19 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "20 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "6 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 4
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"21 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "22 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "7 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 5
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"23 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "24 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "8 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 6
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"25 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "26 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "9 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 7
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"27 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "28 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "10 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 8
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"29 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "30 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "11 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 9
|
||||
}
|
||||
],
|
||||
"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"
|
||||
},
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
|
@ -274,485 +274,480 @@
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 97
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 51,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 102
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 454,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 108
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 7688,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 96
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 46,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 99
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 849,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 6411,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 97
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 36,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 359,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 108
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 37,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:5aa7af805079bb907e9034361d9a11a2",
|
||||
"b:5aa7af805079bb907e9034361d9a11a2"
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 97
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 51,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 102
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 454,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 108
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 7688,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 96
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 46,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 99
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 849,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 6411,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 97
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 36,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 359,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Filter": "/FlateDecode",
|
||||
"/Length": 108
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 48,
|
||||
"/Length": 37,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:5aa7af805079bb907e9034361d9a11a2",
|
||||
"b:5aa7af805079bb907e9034361d9a11a2"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "specialized"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
|
@ -1,281 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "specialized"
|
||||
},
|
||||
"pages": [
|
||||
{
|
||||
"contents": [
|
||||
"12 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "14 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "3 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 1
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"15 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "16 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "4 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 2
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"17 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceCMYK",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "18 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "5 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 3
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"19 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "20 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "6 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 4
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"21 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "22 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "7 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 5
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"23 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceRGB",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "24 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "8 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 6
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"25 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/FlateDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "26 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "9 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 7
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"27 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/DCTDecode"
|
||||
],
|
||||
"filterable": false,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "28 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "10 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 8
|
||||
},
|
||||
{
|
||||
"contents": [
|
||||
"29 0 R"
|
||||
],
|
||||
"images": [
|
||||
{
|
||||
"bitspercomponent": 8,
|
||||
"colorspace": "/DeviceGray",
|
||||
"decodeparms": [
|
||||
null
|
||||
],
|
||||
"filter": [
|
||||
"/RunLengthDecode"
|
||||
],
|
||||
"filterable": true,
|
||||
"height": 48,
|
||||
"name": "/Im1",
|
||||
"object": "30 0 R",
|
||||
"width": 40
|
||||
}
|
||||
],
|
||||
"label": null,
|
||||
"object": "11 0 R",
|
||||
"outlines": [],
|
||||
"pageposfrom1": 9
|
||||
}
|
||||
],
|
||||
"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"
|
||||
},
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
|
@ -274,473 +274,468 @@
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Height": 480,
|
||||
"/Length": 768000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 9364,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 768998,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 94
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Height": 480,
|
||||
"/Length": 576000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 100
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3650,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 641497,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Height": 480,
|
||||
"/Length": 192000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 2587,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3001,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:53b6958e9beef00ea2ac077d5f2912b6",
|
||||
"b:272b8d8ba45632ab505020e7606d221d"
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Height": 480,
|
||||
"/Length": 768000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 9364,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 768998,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 94
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Height": 480,
|
||||
"/Length": 576000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 100
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3650,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 641497,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Height": 480,
|
||||
"/Length": 192000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 2587,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3001,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:53b6958e9beef00ea2ac077d5f2912b6",
|
||||
"b:272b8d8ba45632ab505020e7606d221d"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -274,473 +274,468 @@
|
||||
"userpasswordmatched": false
|
||||
},
|
||||
"outlines": [],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 30,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "2 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 9,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R",
|
||||
"6 0 R",
|
||||
"7 0 R",
|
||||
"8 0 R",
|
||||
"9 0 R",
|
||||
"10 0 R",
|
||||
"11 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Contents": "12 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "14 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "15 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "16 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "17 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "18 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/Contents": "19 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "20 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": {
|
||||
"/Contents": "21 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "22 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/Contents": "23 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "24 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"value": {
|
||||
"/Contents": "25 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "26 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": {
|
||||
"/Contents": "27 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
"/XObject": {
|
||||
"/Im1": "28 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "29 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
392
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "13 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Height": 480,
|
||||
"/Length": 768000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 9364,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 768998,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 94
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Height": 480,
|
||||
"/Length": 576000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 100
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3650,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 641497,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Height": 480,
|
||||
"/Length": 192000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 2587,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3001,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:53b6958e9beef00ea2ac077d5f2912b6",
|
||||
"b:272b8d8ba45632ab505020e7606d221d"
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text",
|
||||
"/ImageC"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
"/XObject": {
|
||||
"/Im1": "30 0 R"
|
||||
}
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:12 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:13 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Name": "/F1",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:14 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Height": 480,
|
||||
"/Length": 768000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:15 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:16 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 9364,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:17 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:18 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceCMYK",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 768998,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:19 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 94
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:20 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Height": 480,
|
||||
"/Length": 576000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:21 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 100
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:22 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3650,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:23 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 106
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:24 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceRGB",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 641497,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:25 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 95
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:26 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Height": 480,
|
||||
"/Length": 192000,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:27 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 101
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:28 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/DCTDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 2587,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:29 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": 107
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:30 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/BitsPerComponent": 8,
|
||||
"/ColorSpace": "/DeviceGray",
|
||||
"/Filter": "/RunLengthDecode",
|
||||
"/Height": 480,
|
||||
"/Length": 3001,
|
||||
"/Subtype": "/Image",
|
||||
"/Type": "/XObject",
|
||||
"/Width": 400
|
||||
}
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:53b6958e9beef00ea2ac077d5f2912b6",
|
||||
"b:272b8d8ba45632ab505020e7606d221d"
|
||||
],
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 31
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,52 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"objects": {
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 30,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"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",
|
||||
"15 0 R",
|
||||
"16 0 R",
|
||||
"17 0 R",
|
||||
"18 0 R",
|
||||
"19 0 R",
|
||||
"20 0 R",
|
||||
"21 0 R",
|
||||
"22 0 R",
|
||||
"23 0 R",
|
||||
"24 0 R",
|
||||
"25 0 R",
|
||||
"26 0 R",
|
||||
"27 0 R",
|
||||
"28 0 R",
|
||||
"29 0 R",
|
||||
"30 0 R",
|
||||
"31 0 R",
|
||||
"32 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 107
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"objects": {
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 107
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
1186
qpdf/qtest/qpdf/json-page-labels-and-outlines-objects-v2.out
Normal file
1186
qpdf/qtest/qpdf/json-page-labels-and-outlines-objects-v2.out
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,57 +0,0 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 106,
|
||||
"objects": {
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/Count": 30,
|
||||
"/Kids": [
|
||||
"3 0 R",
|
||||
"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",
|
||||
"15 0 R",
|
||||
"16 0 R",
|
||||
"17 0 R",
|
||||
"18 0 R",
|
||||
"19 0 R",
|
||||
"20 0 R",
|
||||
"21 0 R",
|
||||
"22 0 R",
|
||||
"23 0 R",
|
||||
"24 0 R",
|
||||
"25 0 R",
|
||||
"26 0 R",
|
||||
"27 0 R",
|
||||
"28 0 R",
|
||||
"29 0 R",
|
||||
"30 0 R",
|
||||
"31 0 R",
|
||||
"32 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 107
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 106,
|
||||
"objects": {
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 107
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,117 +3,112 @@
|
||||
"parameters": {
|
||||
"decodelevel": "generalized"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 10,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "3 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/CreationDate": "u:D:20120621124041",
|
||||
"/Producer": "u:Apex PDFWriter"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Count": 3,
|
||||
"/Kids": [
|
||||
"4 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "6 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "3 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/CreationDate": "u:D:20120621124041",
|
||||
"/Producer": "u:Apex PDFWriter"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Count": 3,
|
||||
"/Kids": [
|
||||
"4 0 R",
|
||||
"4 0 R",
|
||||
"5 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "6 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "9 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "9 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "7 0 R"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "7 0 R"
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Times-Roman",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "10 0 R"
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:fb18b786ff7b358705da8a532aba8f6f",
|
||||
"b:f7179eb35159bfd4c00f128abcfd1f02"
|
||||
],
|
||||
"/Info": "2 0 R",
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 11
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Times-Roman",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "10 0 R"
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:fb18b786ff7b358705da8a532aba8f6f",
|
||||
"b:f7179eb35159bfd4c00f128abcfd1f02"
|
||||
],
|
||||
"/Info": "2 0 R",
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 11
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -35,138 +35,133 @@
|
||||
"pageposfrom1": 3
|
||||
}
|
||||
],
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 11,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "3 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/CreationDate": "u:D:20120621124041",
|
||||
"/Producer": "u:Apex PDFWriter"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Count": 3,
|
||||
"/Kids": [
|
||||
"4 0 R",
|
||||
"11 0 R",
|
||||
"5 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "6 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
"value": {
|
||||
"/Pages": "3 0 R",
|
||||
"/Type": "/Catalog"
|
||||
}
|
||||
},
|
||||
"obj:2 0 R": {
|
||||
"value": {
|
||||
"/CreationDate": "u:D:20120621124041",
|
||||
"/Producer": "u:Apex PDFWriter"
|
||||
}
|
||||
},
|
||||
"obj:3 0 R": {
|
||||
"value": {
|
||||
"/Count": 3,
|
||||
"/Kids": [
|
||||
"4 0 R",
|
||||
"11 0 R",
|
||||
"5 0 R"
|
||||
],
|
||||
"/Type": "/Pages"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"value": {
|
||||
"/Contents": "6 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "9 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": {
|
||||
"/Contents": "9 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "7 0 R"
|
||||
}
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "7 0 R"
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Times-Roman",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "10 0 R"
|
||||
}
|
||||
},
|
||||
"obj:7 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"obj:8 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Times-Roman",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"obj:9 0 R": {
|
||||
"stream": {
|
||||
"dict": {
|
||||
"/Length": "10 0 R"
|
||||
}
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "6 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
}
|
||||
},
|
||||
"obj:10 0 R": {
|
||||
"value": 47
|
||||
},
|
||||
"obj:11 0 R": {
|
||||
"value": {
|
||||
"/Contents": "6 0 R",
|
||||
"/MediaBox": [
|
||||
0,
|
||||
0,
|
||||
612,
|
||||
792
|
||||
],
|
||||
"/Parent": "3 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "8 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:fb18b786ff7b358705da8a532aba8f6f",
|
||||
"b:f7179eb35159bfd4c00f128abcfd1f02"
|
||||
],
|
||||
"/Info": "2 0 R",
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 11
|
||||
}
|
||||
"/ProcSet": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/ID": [
|
||||
"b:fb18b786ff7b358705da8a532aba8f6f",
|
||||
"b:f7179eb35159bfd4c00f128abcfd1f02"
|
||||
],
|
||||
"/Info": "2 0 R",
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 11
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,73 +0,0 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 16059,
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
"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
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "6 0 R"
|
||||
},
|
||||
"/ProcSet": "5 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"stream": {
|
||||
"data": "QlQKICAvRjEgMjQgVGYKICA3MiA3MjAgVGQKICAoUG90YXRvKSBUagpFVAo=",
|
||||
"dict": {}
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 7
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
WARNING: qjson-bad-json-version1.json (offset 98): only JSON version 2 is supported
|
||||
qpdf: qjson-bad-json-version1.json: errors found in JSON
|
@ -1,73 +0,0 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": "potato",
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
"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
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "6 0 R"
|
||||
},
|
||||
"/ProcSet": "5 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"stream": {
|
||||
"data": "QlQKICAvRjEgMjQgVGYKICA3MiA3MjAgVGQKICAoUG90YXRvKSBUagpFVAo=",
|
||||
"dict": {}
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 7
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
WARNING: qjson-bad-json-version2.json (offset 98): only JSON version 2 is supported
|
||||
qpdf: qjson-bad-json-version2.json: errors found in JSON
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-bad-object-key.json (offset 181): object key should be "trailer" or "obj:n n R"
|
||||
WARNING: qjson-bad-object-key.json (offset 97): object key should be "trailer" or "obj:n n R"
|
||||
qpdf: qjson-bad-object-key.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "potato",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-bad-pdf-version1.json (offset 119): invalid PDF version (must be x.y)
|
||||
WARNING: qjson-bad-pdf-version1.json (offset 35): invalid PDF version (must be x.y)
|
||||
qpdf: qjson-bad-pdf-version1.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": [],
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-bad-pdf-version2.json (offset 119): invalid PDF version (must be x.y)
|
||||
WARNING: qjson-bad-pdf-version2.json (offset 35): invalid PDF version (must be x.y)
|
||||
qpdf: qjson-bad-pdf-version2.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-missing-objects.json: "qpdf.objects" was not seen
|
||||
WARNING: qjson-missing-objects.json: "qpdf-v2.objects" was not seen
|
||||
qpdf: qjson-missing-objects.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-missing-trailer.json: "qpdf.objects.trailer" was not seen
|
||||
WARNING: qjson-missing-trailer.json: "qpdf-v2.objects.trailer" was not seen
|
||||
qpdf: qjson-missing-trailer.json: errors found in JSON
|
||||
|
@ -1,72 +0,0 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
"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
|
||||
],
|
||||
"/Parent": "2 0 R",
|
||||
"/Resources": {
|
||||
"/Font": {
|
||||
"/F1": "6 0 R"
|
||||
},
|
||||
"/ProcSet": "5 0 R"
|
||||
},
|
||||
"/Type": "/Page"
|
||||
}
|
||||
},
|
||||
"obj:4 0 R": {
|
||||
"stream": {
|
||||
"data": "QlQKICAvRjEgMjQgVGYKICA3MiA3MjAgVGQKICAoUG90YXRvKSBUagpFVAo=",
|
||||
"dict": {}
|
||||
}
|
||||
},
|
||||
"obj:5 0 R": {
|
||||
"value": [
|
||||
"/PDF",
|
||||
"/Text"
|
||||
]
|
||||
},
|
||||
"obj:6 0 R": {
|
||||
"value": {
|
||||
"/BaseFont": "/Helvetica",
|
||||
"/Encoding": "/WinAnsiEncoding",
|
||||
"/Subtype": "/Type1",
|
||||
"/Type": "/Font"
|
||||
}
|
||||
},
|
||||
"trailer": {
|
||||
"value": {
|
||||
"/Root": "1 0 R",
|
||||
"/Size": 7
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
WARNING: qjson-no-json-version.json: "qpdf.jsonversion" was not seen
|
||||
qpdf: qjson-no-json-version.json: errors found in JSON
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-no-pdf-version.json: "qpdf.pdfversion" was not seen
|
||||
WARNING: qjson-no-pdf-version.json: "qpdf-v2.pdfversion" was not seen
|
||||
qpdf: qjson-no-pdf-version.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,7 +1,7 @@
|
||||
WARNING: qjson-obj-key-errors.json (obj:2 0 R, offset 302): object must have exactly one of "value" or "stream"
|
||||
WARNING: qjson-obj-key-errors.json (obj:3 0 R, offset 600): object must have exactly one of "value" or "stream"
|
||||
WARNING: qjson-obj-key-errors.json (obj:4 0 R, offset 768): "stream" is missing "dict"
|
||||
WARNING: qjson-obj-key-errors.json (obj:4 0 R, offset 768): "stream" must have exactly one of "data" or "datafile"
|
||||
WARNING: qjson-obj-key-errors.json (obj:5 0 R, offset 858): "stream" must have exactly one of "data" or "datafile"
|
||||
WARNING: qjson-obj-key-errors.json (trailer, offset 1236): "trailer" is missing "value"
|
||||
WARNING: qjson-obj-key-errors.json (obj:2 0 R, offset 218): object must have exactly one of "value" or "stream"
|
||||
WARNING: qjson-obj-key-errors.json (obj:3 0 R, offset 516): object must have exactly one of "value" or "stream"
|
||||
WARNING: qjson-obj-key-errors.json (obj:4 0 R, offset 684): "stream" is missing "dict"
|
||||
WARNING: qjson-obj-key-errors.json (obj:4 0 R, offset 684): "stream" must have exactly one of "data" or "datafile"
|
||||
WARNING: qjson-obj-key-errors.json (obj:5 0 R, offset 774): "stream" must have exactly one of "data" or "datafile"
|
||||
WARNING: qjson-obj-key-errors.json (trailer, offset 1152): "trailer" is missing "value"
|
||||
qpdf: qjson-obj-key-errors.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-object-not-dict.json (offset 184): "obj:1 0 R" must be a dictionary
|
||||
WARNING: qjson-object-not-dict.json (offset 100): "obj:1 0 R" must be a dictionary
|
||||
qpdf: qjson-object-not-dict.json: errors found in JSON
|
||||
|
@ -1,6 +1,5 @@
|
||||
{
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.7",
|
||||
"objects": false
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
WARNING: qjson-objects-not-dict.json (offset 77): "objects" must be a dictionary
|
||||
WARNING: qjson-objects-not-dict.json: "qpdf.objects.trailer" was not seen
|
||||
WARNING: qjson-objects-not-dict.json (offset 58): "objects" must be a dictionary
|
||||
WARNING: qjson-objects-not-dict.json: "qpdf-v2.objects.trailer" was not seen
|
||||
qpdf: qjson-objects-not-dict.json: errors found in JSON
|
||||
|
@ -1,6 +1,5 @@
|
||||
{
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.7",
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
|
@ -1,5 +1,5 @@
|
||||
WARNING: qjson-stream-dict-not-dict.json (obj:1 0 R, offset 137): "stream.dict" must be a dictionary
|
||||
WARNING: qjson-stream-dict-not-dict.json (obj:1 0 R, offset 137): unrecognized string value
|
||||
WARNING: qjson-stream-dict-not-dict.json (obj:1 0 R, offset 117): "stream" must have exactly one of "data" or "datafile"
|
||||
WARNING: qjson-stream-dict-not-dict.json: "qpdf.objects.trailer" was not seen
|
||||
WARNING: qjson-stream-dict-not-dict.json (obj:1 0 R, offset 118): "stream.dict" must be a dictionary
|
||||
WARNING: qjson-stream-dict-not-dict.json (obj:1 0 R, offset 118): unrecognized string value
|
||||
WARNING: qjson-stream-dict-not-dict.json (obj:1 0 R, offset 98): "stream" must have exactly one of "data" or "datafile"
|
||||
WARNING: qjson-stream-dict-not-dict.json: "qpdf-v2.objects.trailer" was not seen
|
||||
qpdf: qjson-stream-dict-not-dict.json: errors found in JSON
|
||||
|
@ -1,6 +1,5 @@
|
||||
{
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.7",
|
||||
"objects": {
|
||||
"obj:1 0 R": {
|
||||
|
@ -1,3 +1,3 @@
|
||||
WARNING: qjson-stream-not-dict.json (obj:1 0 R, offset 118): "stream" must be a dictionary
|
||||
WARNING: qjson-stream-not-dict.json: "qpdf.objects.trailer" was not seen
|
||||
WARNING: qjson-stream-not-dict.json (obj:1 0 R, offset 99): "stream" must be a dictionary
|
||||
WARNING: qjson-stream-not-dict.json: "qpdf-v2.objects.trailer" was not seen
|
||||
qpdf: qjson-stream-not-dict.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-trailer-not-dict.json (trailer, offset 1327): "trailer.value" must be a dictionary
|
||||
WARNING: qjson-trailer-not-dict.json (trailer, offset 1243): "trailer.value" must be a dictionary
|
||||
qpdf: qjson-trailer-not-dict.json: errors found in JSON
|
||||
|
@ -1,10 +1,5 @@
|
||||
{
|
||||
"version": 2,
|
||||
"parameters": {
|
||||
"decodelevel": "none"
|
||||
},
|
||||
"qpdf": {
|
||||
"jsonversion": 2,
|
||||
"qpdf-v2": {
|
||||
"pdfversion": "1.3",
|
||||
"maxobjectid": 6,
|
||||
"objects": {
|
||||
|
@ -1,2 +1,2 @@
|
||||
WARNING: qjson-trailer-stream.json (trailer, offset 1327): the trailer may not be a stream
|
||||
WARNING: qjson-trailer-stream.json (trailer, offset 1243): the trailer may not be a stream
|
||||
qpdf: qjson-trailer-stream.json: errors found in JSON
|
||||
|
@ -18,11 +18,8 @@ my $n_tests = 0;
|
||||
|
||||
my @badfiles = (
|
||||
'no-qpdf-object',
|
||||
'no-json-version',
|
||||
'no-pdf-version',
|
||||
'top-level-scalar',
|
||||
'bad-json-version1',
|
||||
'bad-json-version2',
|
||||
'bad-pdf-version1',
|
||||
'bad-pdf-version2',
|
||||
'top-level-array',
|
||||
@ -44,7 +41,7 @@ foreach my $f (@badfiles)
|
||||
{
|
||||
$td->runtest("bad: $f",
|
||||
{$td->COMMAND =>
|
||||
"qpdf --create-from-json=qjson-$f.json a.pdf"},
|
||||
"qpdf --json-input qjson-$f.json a.pdf"},
|
||||
{$td->FILE => "qjson-$f.out", $td->EXIT_STATUS => 2},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
}
|
Loading…
Reference in New Issue
Block a user