mirror of
https://github.com/qpdf/qpdf.git
synced 2024-05-29 08:20:53 +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
|
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
|
* Reread from perspective of update
|
||||||
* Test all ignore cases with QTC
|
* Test all ignore cases with QTC
|
||||||
* Test case of correct file with dict before data/datafile
|
* Test case of correct file with dict before data/datafile
|
||||||
|
@ -62,6 +66,7 @@ Output JSON v2
|
||||||
after creation.
|
after creation.
|
||||||
* Test invalid data, invalid data file
|
* Test invalid data, invalid data file
|
||||||
* Tests: round-trip through json, round-trip through qpdf --qdf
|
* 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
|
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
|
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
|
* Make sure all the information from --check and other informational
|
||||||
options (--show-linearization, --show-encryption, --show-xref,
|
options (--show-linearization, --show-encryption, --show-xref,
|
||||||
--list-attachments, --show-npages) is available in the json output.
|
--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
|
* Consider changing the contract to allow fields to be absent even
|
||||||
when present in the schema. It's reasonable for people to check for
|
when present in the schema. It's reasonable for people to check for
|
||||||
|
@ -95,41 +103,32 @@ General things to remember:
|
||||||
|
|
||||||
JSON to PDF:
|
JSON to PDF:
|
||||||
|
|
||||||
Have --create-from-json and --update-from-json. With
|
Have --json-input and --update-from-json. With --json-input, the json
|
||||||
--create-from-json, the json file must be complete, meaning all stream
|
file must be complete, meaning all stream data, the trailer, and the
|
||||||
data, the trailer, and the PDF version must be present. In
|
PDF version must be present. In --update-from-json, an object
|
||||||
--update-from-json, an object explicitly set to null (not "value":
|
explicitly set to null (not "value": null) is deleted. For streams
|
||||||
null) is deleted. For streams with no stream data, the dictionary is
|
with no stream data, the dictionary is updated but the data is left
|
||||||
updated but the data is left untouched. Other things that are omitted
|
untouched. Other things that are omitted are left alone. Make sure
|
||||||
are left alone. Make sure document that, when writing a PDF file from
|
document that, when writing a PDF file from QPDF, there is no
|
||||||
QPDF, there is no expectation of object numbers being preserved. As
|
expectation of object numbers being preserved. As such,
|
||||||
such, --update-from-json can only be used to update the exact file
|
--update-from-json can only be used to update the exact file that the
|
||||||
that the json was created from. You can put multiple objects in the
|
json was created from. You can put multiple objects in the update
|
||||||
update file, but you can't use a json from one file to update the
|
file, but you can't use a json from one file to update the output of a
|
||||||
output of a previous update since the object numbers will have
|
previous update since the object numbers will have changed. Note that,
|
||||||
changed. Note that, when creating from a JSON, object numbers are
|
when creating from a JSON, object numbers are preserved in the
|
||||||
preserved in the resulting QPDF object but still modified by
|
resulting QPDF object but still modified by QPDFWriter for the output.
|
||||||
QPDFWriter for the output. This would be visible by combining
|
This would be visible by combining --json-output and --json-input.
|
||||||
--to-json and --create-from-json. Also using --qdf with
|
Also using --qdf with --create-from-json would show original object
|
||||||
--create-from-json would show original object IDs in comments. It will
|
IDs in comments. It will be important to capture this in the
|
||||||
be important to capture this in the documentation.
|
documentation.
|
||||||
|
|
||||||
When reading a JSON string, any string that doesn't look like a name
|
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
|
or indirect object or start with "b:" or "u:" should be considered an
|
||||||
error. Just use newUnicodeString on "u:" strings. For "b:" strings,
|
error. Just use newUnicodeString on "u:" strings. For "b:" strings,
|
||||||
decode the bytes with hex_decode and use newString.
|
decode the bytes with hex_decode and use newString.
|
||||||
|
|
||||||
For going back from JSON to PDF, we can have
|
Test case: combine --json-input and --json-output to show preservation
|
||||||
QPDF::createFromJSON(std::shared_ptr<InputSource>)
|
of object numbers. QPDFWriter won't show that although --qdf with the
|
||||||
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
|
|
||||||
original object ID comments would.
|
original object ID comments would.
|
||||||
|
|
||||||
The backing input source for createFromJSON is this memory block:
|
The backing input source for createFromJSON is this memory block:
|
||||||
|
@ -145,8 +144,7 @@ startxref
|
||||||
%%EOF
|
%%EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
* Ignore all keys except .qpdf.
|
* Ignore all keys except .qpdf-v2.
|
||||||
* Verify that .qpdf.jsonVersion is 2
|
|
||||||
* Set this->m->pdf_version based on the .qpdf.pdfVersion key
|
* Set this->m->pdf_version based on the .qpdf.pdfVersion key
|
||||||
* For each object in .qpdf.objects:
|
* For each object in .qpdf.objects:
|
||||||
* Walk through the object detecting any indirect objects. For each
|
* Walk through the object detecting any indirect objects. For each
|
||||||
|
@ -170,15 +168,14 @@ Documentation:
|
||||||
|
|
||||||
Serialized PDF:
|
Serialized PDF:
|
||||||
|
|
||||||
The JSON output will have a "qpdf" key containing
|
The JSON output will have a "qpdf-v2" key containing
|
||||||
* jsonversion
|
|
||||||
* pdfversion
|
* pdfversion
|
||||||
* maxobjectid
|
* maxobjectid
|
||||||
* objects
|
* 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
|
value is a dictionary with exactly one of "value" or "stream" as its
|
||||||
single key.
|
single key.
|
||||||
|
|
||||||
|
@ -222,11 +219,11 @@ for when the file is read back in.
|
||||||
CLI:
|
CLI:
|
||||||
|
|
||||||
Example workflow:
|
Example workflow:
|
||||||
* qpdf in.pdf --to-json > pdf.json
|
* qpdf in.pdf --json-output=2 pdf.json
|
||||||
* edit 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
|
* edit pdf.json keeping only objects that need to be changed
|
||||||
* qpdf in.pdf --update-from-json=pdf.json out.pdf
|
* 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);
|
processInputSource(std::shared_ptr<InputSource>, char const* password = 0);
|
||||||
|
|
||||||
// Create a PDF from an input source that contains JSON as written
|
// Create a PDF from an input source that contains JSON as written
|
||||||
// by qpdf --json (version 2 or higher). The JSON must be a
|
// by writeJSON (or qpdf --json-output, version 2 or higher). The
|
||||||
// complete representation of a PDF. See "QPDF JSON Format" in the
|
// JSON must be a complete representation of a PDF. See "QPDF JSON
|
||||||
// manual for details.
|
// Format" in the manual for details.
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
void createFromJSON(std::string const& json_file);
|
void createFromJSON(std::string const& json_file);
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
void createFromJSON(std::shared_ptr<InputSource>);
|
void createFromJSON(std::shared_ptr<InputSource>);
|
||||||
|
|
||||||
// Update a PDF from an input source that contains JSON in the
|
// Update a PDF from an input source that contains JSON in the
|
||||||
// same format as is written by qpdf --json (version 2 or higher).
|
// same format as is written by writeJSON (or qpdf --json-output,
|
||||||
// Objects in the PDF and not in the JSON are not modified. See
|
// version 2 or higher). Objects in the PDF and not in the JSON
|
||||||
// "QPDF JSON Format" in the manual for details.
|
// are not modified. See "QPDF JSON Format" in the manual for
|
||||||
|
// details.
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
void updateFromJSON(std::string const& json_file);
|
void updateFromJSON(std::string const& json_file);
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
void updateFromJSON(std::shared_ptr<InputSource>);
|
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
|
// Close or otherwise release the input source. Once this has been
|
||||||
// called, no other methods of qpdf can be called safely except
|
// called, no other methods of qpdf can be called safely except
|
||||||
// for getWarnings and anyWarnings(). After this has been called,
|
// for getWarnings and anyWarnings(). After this has been called,
|
||||||
|
@ -1040,7 +1055,6 @@ class QPDF
|
||||||
bool parse_error;
|
bool parse_error;
|
||||||
bool saw_qpdf;
|
bool saw_qpdf;
|
||||||
bool saw_objects;
|
bool saw_objects;
|
||||||
bool saw_json_version;
|
|
||||||
bool saw_pdf_version;
|
bool saw_pdf_version;
|
||||||
bool saw_trailer;
|
bool saw_trailer;
|
||||||
state_e state;
|
state_e state;
|
||||||
|
@ -1571,6 +1585,23 @@ class QPDF
|
||||||
// JSON import
|
// JSON import
|
||||||
void importJSON(std::shared_ptr<InputSource>, bool must_be_complete);
|
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
|
// Type conversion helper methods
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static qpdf_offset_t
|
static qpdf_offset_t
|
||||||
|
|
|
@ -323,8 +323,6 @@ class QPDFJob
|
||||||
Config* outputFile(std::string const& filename);
|
Config* outputFile(std::string const& filename);
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
Config* replaceInput();
|
Config* replaceInput();
|
||||||
QPDF_DLL
|
|
||||||
Config* createFromJson(std::string const& filename);
|
|
||||||
|
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
std::shared_ptr<CopyAttConfig> copyAttachmentsFrom();
|
std::shared_ptr<CopyAttConfig> copyAttachmentsFrom();
|
||||||
|
@ -455,7 +453,10 @@ class QPDFJob
|
||||||
|
|
||||||
// Basic file processing
|
// Basic file processing
|
||||||
std::shared_ptr<QPDF> processFile(
|
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<QPDF> processInputSource(
|
||||||
std::shared_ptr<InputSource> is,
|
std::shared_ptr<InputSource> is,
|
||||||
char const* password,
|
char const* password,
|
||||||
|
@ -464,12 +465,14 @@ class QPDFJob
|
||||||
std::function<void(QPDF*, char const*)> fn,
|
std::function<void(QPDF*, char const*)> fn,
|
||||||
char const* password,
|
char const* password,
|
||||||
bool empty,
|
bool empty,
|
||||||
bool used_for_input);
|
bool used_for_input,
|
||||||
|
bool main_input);
|
||||||
std::shared_ptr<QPDF> doProcessOnce(
|
std::shared_ptr<QPDF> doProcessOnce(
|
||||||
std::function<void(QPDF*, char const*)> fn,
|
std::function<void(QPDF*, char const*)> fn,
|
||||||
char const* password,
|
char const* password,
|
||||||
bool empty,
|
bool empty,
|
||||||
bool used_for_input);
|
bool used_for_input,
|
||||||
|
bool main_input);
|
||||||
|
|
||||||
// Transformations
|
// Transformations
|
||||||
void setQPDFOptions(QPDF& pdf);
|
void setQPDFOptions(QPDF& pdf);
|
||||||
|
@ -511,31 +514,21 @@ class QPDFJob
|
||||||
void setEncryptionOptions(QPDF&, QPDFWriter&);
|
void setEncryptionOptions(QPDF&, QPDFWriter&);
|
||||||
void maybeFixWritePassword(int R, std::string& password);
|
void maybeFixWritePassword(int R, std::string& password);
|
||||||
void writeOutfile(QPDF& pdf);
|
void writeOutfile(QPDF& pdf);
|
||||||
|
void writeJSON(QPDF& pdf);
|
||||||
|
|
||||||
// JSON
|
// JSON
|
||||||
void doJSON(QPDF& pdf, Pipeline*);
|
void doJSON(QPDF& pdf, Pipeline*);
|
||||||
std::set<QPDFObjGen> getWantedJSONObjects();
|
std::set<QPDFObjGen> getWantedJSONObjects();
|
||||||
|
void doJSONObject(
|
||||||
|
Pipeline* p, bool& first, std::string const& key, QPDFObjectHandle&);
|
||||||
void doJSONObjects(Pipeline* p, bool& first, QPDF& pdf);
|
void doJSONObjects(Pipeline* p, bool& first, QPDF& pdf);
|
||||||
void doJSONObjectinfo(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 doJSONPages(Pipeline* p, bool& first, QPDF& pdf);
|
||||||
void doJSONPageLabels(Pipeline* p, bool& first, QPDF& pdf);
|
void doJSONPageLabels(Pipeline* p, bool& first, QPDF& pdf);
|
||||||
void doJSONOutlines(Pipeline* p, bool& first, QPDF& pdf);
|
void doJSONOutlines(Pipeline* p, bool& first, QPDF& pdf);
|
||||||
void doJSONAcroform(Pipeline* p, bool& first, QPDF& pdf);
|
void doJSONAcroform(Pipeline* p, bool& first, QPDF& pdf);
|
||||||
void doJSONEncrypt(Pipeline* p, bool& first, QPDF& pdf);
|
void doJSONEncrypt(Pipeline* p, bool& first, QPDF& pdf);
|
||||||
void doJSONAttachments(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(
|
void addOutlinesToJson(
|
||||||
std::vector<QPDFOutlineObjectHelper> outlines,
|
std::vector<QPDFOutlineObjectHelper> outlines,
|
||||||
JSON& j,
|
JSON& j,
|
||||||
|
@ -654,6 +647,7 @@ class QPDFJob
|
||||||
std::set<std::string> json_keys;
|
std::set<std::string> json_keys;
|
||||||
std::set<std::string> json_objects;
|
std::set<std::string> json_objects;
|
||||||
qpdf_json_stream_data_e json_stream_data;
|
qpdf_json_stream_data_e json_stream_data;
|
||||||
|
bool json_stream_data_set;
|
||||||
std::string json_stream_prefix;
|
std::string json_stream_prefix;
|
||||||
bool test_json_schema;
|
bool test_json_schema;
|
||||||
bool check;
|
bool check;
|
||||||
|
@ -676,7 +670,8 @@ class QPDFJob
|
||||||
bool check_requires_password;
|
bool check_requires_password;
|
||||||
std::shared_ptr<char> infilename;
|
std::shared_ptr<char> infilename;
|
||||||
std::shared_ptr<char> outfilename;
|
std::shared_ptr<char> outfilename;
|
||||||
std::string create_from_json;
|
bool json_input;
|
||||||
|
int json_output;
|
||||||
std::string update_from_json;
|
std::string update_from_json;
|
||||||
};
|
};
|
||||||
std::shared_ptr<Members> m;
|
std::shared_ptr<Members> m;
|
||||||
|
|
|
@ -17,6 +17,7 @@ QPDF_DLL Config* flattenRotation();
|
||||||
QPDF_DLL Config* generateAppearances();
|
QPDF_DLL Config* generateAppearances();
|
||||||
QPDF_DLL Config* ignoreXrefStreams();
|
QPDF_DLL Config* ignoreXrefStreams();
|
||||||
QPDF_DLL Config* isEncrypted();
|
QPDF_DLL Config* isEncrypted();
|
||||||
|
QPDF_DLL Config* jsonInput();
|
||||||
QPDF_DLL Config* keepInlineImages();
|
QPDF_DLL Config* keepInlineImages();
|
||||||
QPDF_DLL Config* linearize();
|
QPDF_DLL Config* linearize();
|
||||||
QPDF_DLL Config* listAttachments();
|
QPDF_DLL Config* listAttachments();
|
||||||
|
@ -44,7 +45,6 @@ QPDF_DLL Config* staticId();
|
||||||
QPDF_DLL Config* suppressPasswordRecovery();
|
QPDF_DLL Config* suppressPasswordRecovery();
|
||||||
QPDF_DLL Config* suppressRecovery();
|
QPDF_DLL Config* suppressRecovery();
|
||||||
QPDF_DLL Config* testJsonSchema();
|
QPDF_DLL Config* testJsonSchema();
|
||||||
QPDF_DLL Config* toJson();
|
|
||||||
QPDF_DLL Config* verbose();
|
QPDF_DLL Config* verbose();
|
||||||
QPDF_DLL Config* warningExit0();
|
QPDF_DLL Config* warningExit0();
|
||||||
QPDF_DLL Config* withImages();
|
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* decodeLevel(std::string const& parameter);
|
||||||
QPDF_DLL Config* flattenAnnotations(std::string const& parameter);
|
QPDF_DLL Config* flattenAnnotations(std::string const& parameter);
|
||||||
QPDF_DLL Config* jsonKey(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* keepFilesOpen(std::string const& parameter);
|
||||||
QPDF_DLL Config* normalizeContent(std::string const& parameter);
|
QPDF_DLL Config* normalizeContent(std::string const& parameter);
|
||||||
QPDF_DLL Config* objectStreams(std::string const& parameter);
|
QPDF_DLL Config* objectStreams(std::string const& parameter);
|
||||||
QPDF_DLL Config* passwordMode(std::string const& parameter);
|
QPDF_DLL Config* passwordMode(std::string const& parameter);
|
||||||
QPDF_DLL Config* removeUnreferencedResources(std::string const& parameter);
|
QPDF_DLL Config* removeUnreferencedResources(std::string const& parameter);
|
||||||
QPDF_DLL Config* streamData(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(std::string const& parameter);
|
||||||
QPDF_DLL Config* json();
|
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_att.hh 4c2b171ea00531db54720bf49a43f8b34481586ae7fb6cbf225099ee42bc5bb4
|
||||||
include/qpdf/auto_job_c_copy_att.hh 50609012bff14fd82f0649185940d617d05d530cdc522185c7f3920a561ccb42
|
include/qpdf/auto_job_c_copy_att.hh 50609012bff14fd82f0649185940d617d05d530cdc522185c7f3920a561ccb42
|
||||||
include/qpdf/auto_job_c_enc.hh 28446f3c32153a52afa239ea40503e6cc8ac2c026813526a349e0cd4ae17ddd5
|
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_pages.hh b3cc0f21029f6d89efa043dcdbfa183cb59325b6506001c18911614fe8e568ec
|
||||||
include/qpdf/auto_job_c_uo.hh ae21b69a1efa9333050f4833d465f6daff87e5b38e5106e49bbef5d4132e4ed1
|
include/qpdf/auto_job_c_uo.hh ae21b69a1efa9333050f4833d465f6daff87e5b38e5106e49bbef5d4132e4ed1
|
||||||
job.yml a95b2446066293f409b36032a0ee411dbe570a7a94f5fd295048d009215f993f
|
job.yml feae32412cc75f84fb9ff7521121466f9582e85547f45613c3a7083a929f01e6
|
||||||
libqpdf/qpdf/auto_job_decl.hh 833bde9c1f8fc17b914f16498e26d9d1315361645b4ac5c50c1f830a76618ca7
|
libqpdf/qpdf/auto_job_decl.hh 74df4d7fdbdf51ecd0d58ce1e9844bb5525b9adac5a45f7c9a787ecdda2868df
|
||||||
libqpdf/qpdf/auto_job_help.hh 38bf89067ca7dc244e4e697c598ba0ba8a827600a78b9195fc69f0ac1663f3a2
|
libqpdf/qpdf/auto_job_help.hh 5ca1d2b73f6a70f1ef47896b49553ae8ded4a6459bbb1f6697947e2cc598d799
|
||||||
libqpdf/qpdf/auto_job_init.hh f0ffab312430b232a7288b8443382ed859021e6ad6ed2c8c9a4dbbd2b33e2aa7
|
libqpdf/qpdf/auto_job_init.hh 3acc779ff96bde839c8c95a844145df830c53ee58fbf61b8ce056a1751bc11f2
|
||||||
libqpdf/qpdf/auto_job_json_decl.hh 81d09d4b82b2e042a64246ed1d7a187bdc83b671b45e7b8ee60ad37c0c11e9a7
|
libqpdf/qpdf/auto_job_json_decl.hh 06caa46eaf71db8a50c046f91866baa8087745a9474319fb7c86d92634cc8297
|
||||||
libqpdf/qpdf/auto_job_json_init.hh 2fcdae08365abe351d2dfb6a823e2b3af27a6510632de23cabef6cefa5dfb199
|
libqpdf/qpdf/auto_job_json_init.hh 0441fd710ded1512a84976b542910fec16e8b9ab665e5efb5b37c5a29fd8654f
|
||||||
libqpdf/qpdf/auto_job_schema.hh 1a80be3b8d97e9b5a55b8aa45a4b312668b1687eab6f038c4ee5f4662ab71997
|
libqpdf/qpdf/auto_job_schema.hh 9d543cd4a43eafffc2c4b8a6fee29e399c271c52cb6f7d417ae5497b3c1127dc
|
||||||
manual/_ext/qpdf.py 6add6321666031d55ed4aedf7c00e5662bba856dfcd66ccb526563bffefbb580
|
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
|
- all
|
||||||
- print
|
- print
|
||||||
- screen
|
- screen
|
||||||
json_version:
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
- latest
|
|
||||||
json_key:
|
json_key:
|
||||||
# The list of selectable top-level keys id duplicated in the
|
# The list of selectable top-level keys id duplicated in the
|
||||||
# following places: job.yml, QPDFJob::json_schema, and
|
# following places: job.yml, QPDFJob::json_schema, and
|
||||||
|
@ -48,15 +44,21 @@ choices:
|
||||||
- attachments
|
- attachments
|
||||||
- encrypt
|
- encrypt
|
||||||
- objectinfo # only v1
|
- objectinfo # only v1
|
||||||
- objects # only v1
|
- objects
|
||||||
- outlines
|
- outlines
|
||||||
- pagelabels
|
- pagelabels
|
||||||
- pages
|
- pages
|
||||||
- qpdf # only v2
|
json_output:
|
||||||
|
- 2
|
||||||
|
- latest
|
||||||
json_stream_data:
|
json_stream_data:
|
||||||
- none
|
- none
|
||||||
- inline
|
- inline
|
||||||
- file
|
- file
|
||||||
|
json_version:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- latest
|
||||||
print128:
|
print128:
|
||||||
- full
|
- full
|
||||||
- low
|
- low
|
||||||
|
@ -86,7 +88,6 @@ options:
|
||||||
- underlay
|
- underlay
|
||||||
- empty
|
- empty
|
||||||
- replace-input
|
- replace-input
|
||||||
- create-from-json
|
|
||||||
positional: true
|
positional: true
|
||||||
bare:
|
bare:
|
||||||
- add-attachment
|
- add-attachment
|
||||||
|
@ -105,6 +106,7 @@ options:
|
||||||
- generate-appearances
|
- generate-appearances
|
||||||
- ignore-xref-streams
|
- ignore-xref-streams
|
||||||
- is-encrypted
|
- is-encrypted
|
||||||
|
- json-input
|
||||||
- keep-inline-images
|
- keep-inline-images
|
||||||
- linearize
|
- linearize
|
||||||
- list-attachments
|
- list-attachments
|
||||||
|
@ -135,7 +137,6 @@ options:
|
||||||
- suppress-password-recovery
|
- suppress-password-recovery
|
||||||
- suppress-recovery
|
- suppress-recovery
|
||||||
- test-json-schema
|
- test-json-schema
|
||||||
- to-json
|
|
||||||
- underlay
|
- underlay
|
||||||
- verbose
|
- verbose
|
||||||
- warning-exit-0
|
- warning-exit-0
|
||||||
|
@ -164,20 +165,20 @@ options:
|
||||||
show-attachment: attachment
|
show-attachment: attachment
|
||||||
show-object: trailer
|
show-object: trailer
|
||||||
json-stream-prefix: stream-file-prefix
|
json-stream-prefix: stream-file-prefix
|
||||||
create-from-json: qpdf-json file
|
|
||||||
update-from-json: qpdf-json file
|
update-from-json: qpdf-json file
|
||||||
required_choices:
|
required_choices:
|
||||||
compress-streams: yn
|
compress-streams: yn
|
||||||
decode-level: decode_level
|
decode-level: decode_level
|
||||||
flatten-annotations: flatten
|
flatten-annotations: flatten
|
||||||
json-key: json_key
|
json-key: json_key
|
||||||
|
json-output: json_output
|
||||||
|
json-stream-data: json_stream_data
|
||||||
keep-files-open: yn
|
keep-files-open: yn
|
||||||
normalize-content: yn
|
normalize-content: yn
|
||||||
object-streams: object_streams
|
object-streams: object_streams
|
||||||
password-mode: password_mode
|
password-mode: password_mode
|
||||||
remove-unreferenced-resources: remove_unref
|
remove-unreferenced-resources: remove_unref
|
||||||
stream-data: stream_data
|
stream-data: stream_data
|
||||||
json-stream-data: json_stream_data
|
|
||||||
optional_choices:
|
optional_choices:
|
||||||
json: json_version
|
json: json_version
|
||||||
- table: pages
|
- table: pages
|
||||||
|
@ -281,7 +282,7 @@ json:
|
||||||
main.password:
|
main.password:
|
||||||
password-file:
|
password-file:
|
||||||
empty:
|
empty:
|
||||||
create-from-json:
|
json-input:
|
||||||
# output
|
# output
|
||||||
_outputFile: "output filename"
|
_outputFile: "output filename"
|
||||||
replace-input:
|
replace-input:
|
||||||
|
@ -308,6 +309,7 @@ json:
|
||||||
force-version:
|
force-version:
|
||||||
progress:
|
progress:
|
||||||
split-pages:
|
split-pages:
|
||||||
|
json-output:
|
||||||
encrypt:
|
encrypt:
|
||||||
_user-password: "user password"
|
_user-password: "user password"
|
||||||
_owner-password: "owner password"
|
_owner-password: "owner password"
|
||||||
|
@ -362,7 +364,6 @@ json:
|
||||||
- null
|
- null
|
||||||
json-stream-data:
|
json-stream-data:
|
||||||
json-stream-prefix:
|
json-stream-prefix:
|
||||||
to-json:
|
|
||||||
# other options
|
# other options
|
||||||
update-from-json:
|
update-from-json:
|
||||||
allow-weak-crypto:
|
allow-weak-crypto:
|
||||||
|
|
|
@ -402,6 +402,7 @@ QPDFJob::Members::Members() :
|
||||||
list_attachments(false),
|
list_attachments(false),
|
||||||
json_version(0),
|
json_version(0),
|
||||||
json_stream_data(qpdf_sj_none),
|
json_stream_data(qpdf_sj_none),
|
||||||
|
json_stream_data_set(false),
|
||||||
test_json_schema(false),
|
test_json_schema(false),
|
||||||
check(false),
|
check(false),
|
||||||
optimize_images(false),
|
optimize_images(false),
|
||||||
|
@ -418,7 +419,9 @@ QPDFJob::Members::Members() :
|
||||||
require_outfile(true),
|
require_outfile(true),
|
||||||
replace_input(false),
|
replace_input(false),
|
||||||
check_is_encrypted(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();
|
checkConfiguration();
|
||||||
std::shared_ptr<QPDF> pdf_ph;
|
std::shared_ptr<QPDF> pdf_ph;
|
||||||
try {
|
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) {
|
} catch (QPDFExc& e) {
|
||||||
if ((e.getErrorCode() == qpdf_e_password) &&
|
if ((e.getErrorCode() == qpdf_e_password) &&
|
||||||
(m->check_is_encrypted || m->check_requires_password)) {
|
(m->check_is_encrypted || m->check_requires_password)) {
|
||||||
|
@ -704,15 +708,8 @@ QPDFJob::checkConfiguration()
|
||||||
" overwrite the input file");
|
" overwrite the input file");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m->json_version == 1) {
|
if (m->json_keys.count("objectinfo")) {
|
||||||
if (m->json_keys.count("qpdf")) {
|
usage("json key \"objectinfo\" is only valid for json version 1");
|
||||||
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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1060,6 +1057,26 @@ QPDFJob::getWantedJSONObjects()
|
||||||
return wanted_og;
|
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
|
void
|
||||||
QPDFJob::doJSONObjects(Pipeline* p, bool& first, QPDF& pdf)
|
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::set<QPDFObjGen> wanted_og = getWantedJSONObjects();
|
||||||
std::vector<QPDFObjectHandle> objects = pdf.getAllObjects();
|
std::vector<QPDFObjectHandle> objects = pdf.getAllObjects();
|
||||||
for (auto& obj: objects) {
|
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())) {
|
if (all_objects || wanted_og.count(obj.getObjGen())) {
|
||||||
JSON::writeDictionaryItem(
|
doJSONObject(p, first_object, key, obj);
|
||||||
p,
|
|
||||||
first_object,
|
|
||||||
obj.unparse(),
|
|
||||||
obj.getJSON(this->m->json_version, true),
|
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (all_objects || m->json_objects.count("trailer")) {
|
if (all_objects || m->json_objects.count("trailer")) {
|
||||||
JSON::writeDictionaryItem(
|
auto trailer = pdf.getTrailer();
|
||||||
p,
|
doJSONObject(p, first_object, "trailer", trailer);
|
||||||
first_object,
|
|
||||||
"trailer",
|
|
||||||
pdf.getTrailer().getJSON(this->m->json_version, true),
|
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
JSON::writeDictionaryClose(p, first_object, 1);
|
JSON::writeDictionaryClose(p, first_object, 1);
|
||||||
}
|
}
|
||||||
|
@ -1122,108 +1134,6 @@ QPDFJob::doJSONObjectinfo(Pipeline* p, bool& first, QPDF& pdf)
|
||||||
JSON::writeDictionaryClose(p, first_object, 1);
|
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
|
void
|
||||||
QPDFJob::doJSONPages(Pipeline* p, bool& first, QPDF& pdf)
|
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
|
// The list of selectable top-level keys id duplicated in the
|
||||||
// following places: job.yml, QPDFJob::json_schema, and
|
// following places: job.yml, QPDFJob::json_schema, and
|
||||||
// QPDFJob::doJSON.
|
// QPDFJob::doJSON.
|
||||||
if (json_version == 1) {
|
if (all_keys || keys->count("objects")) {
|
||||||
if (all_keys || keys->count("objects")) {
|
schema.addDictionaryMember("objects", JSON::parse(R"({
|
||||||
schema.addDictionaryMember("objects", JSON::parse(R"({
|
|
||||||
"<n n R|trailer>": "json representation of object"
|
"<n n R|trailer>": "json representation of object"
|
||||||
})"));
|
})"));
|
||||||
}
|
}
|
||||||
|
if (json_version == 1) {
|
||||||
if (all_keys || keys->count("objectinfo")) {
|
if (all_keys || keys->count("objectinfo")) {
|
||||||
JSON objectinfo =
|
JSON objectinfo =
|
||||||
schema.addDictionaryMember("objectinfo", JSON::parse(R"({
|
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"
|
"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
|
// repairing the page tree. To see the original file with any page
|
||||||
// tree problems and the page tree not flattened, select
|
// tree problems and the page tree not flattened, select
|
||||||
// objects/objectinfo without other keys.
|
// objects/objectinfo without other keys.
|
||||||
|
if (all_keys || m->json_keys.count("objects")) {
|
||||||
|
doJSONObjects(p, first, pdf);
|
||||||
|
}
|
||||||
if (this->m->json_version == 1) {
|
if (this->m->json_version == 1) {
|
||||||
if (all_keys || m->json_keys.count("objects")) {
|
// "objectinfo" is not needed for version >1 since you can
|
||||||
doJSONObjects(p, first, pdf);
|
// tell streams from other objects in "objects".
|
||||||
}
|
|
||||||
if (all_keys || m->json_keys.count("objectinfo")) {
|
if (all_keys || m->json_keys.count("objectinfo")) {
|
||||||
doJSONObjectinfo(p, first, pdf);
|
doJSONObjectinfo(p, first, pdf);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (all_keys || m->json_keys.count("qpdf")) {
|
|
||||||
doJSONQpdf(p, first, pdf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JSON::writeDictionaryClose(p, first, 0);
|
JSON::writeDictionaryClose(p, first, 0);
|
||||||
|
@ -1939,16 +1836,15 @@ QPDFJob::doProcessOnce(
|
||||||
std::function<void(QPDF*, char const*)> fn,
|
std::function<void(QPDF*, char const*)> fn,
|
||||||
char const* password,
|
char const* password,
|
||||||
bool empty,
|
bool empty,
|
||||||
bool used_for_input)
|
bool used_for_input,
|
||||||
|
bool main_input)
|
||||||
{
|
{
|
||||||
auto pdf = std::make_shared<QPDF>();
|
auto pdf = std::make_shared<QPDF>();
|
||||||
setQPDFOptions(*pdf);
|
setQPDFOptions(*pdf);
|
||||||
if (empty) {
|
if (empty) {
|
||||||
if (!this->m->create_from_json.empty()) {
|
pdf->emptyPDF();
|
||||||
pdf->createFromJSON(this->m->create_from_json);
|
} else if (main_input && this->m->json_input) {
|
||||||
} else {
|
pdf->createFromJSON(this->m->infilename.get());
|
||||||
pdf->emptyPDF();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
fn(pdf.get(), password);
|
fn(pdf.get(), password);
|
||||||
}
|
}
|
||||||
|
@ -1964,7 +1860,8 @@ QPDFJob::doProcess(
|
||||||
std::function<void(QPDF*, char const*)> fn,
|
std::function<void(QPDF*, char const*)> fn,
|
||||||
char const* password,
|
char const* password,
|
||||||
bool empty,
|
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
|
// If a password has been specified but doesn't work, try other
|
||||||
// passwords that are equivalent in different character encodings.
|
// passwords that are equivalent in different character encodings.
|
||||||
|
@ -1990,7 +1887,7 @@ QPDFJob::doProcess(
|
||||||
m->suppress_password_recovery) {
|
m->suppress_password_recovery) {
|
||||||
// There is no password, or we're not doing recovery, so just
|
// There is no password, or we're not doing recovery, so just
|
||||||
// do the normal processing with the supplied password.
|
// 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
|
// Get a list of otherwise encoded strings. Keep in scope for this
|
||||||
|
@ -2018,7 +1915,7 @@ QPDFJob::doProcess(
|
||||||
bool warned = false;
|
bool warned = false;
|
||||||
for (auto iter = passwords.begin(); iter != passwords.end(); ++iter) {
|
for (auto iter = passwords.begin(); iter != passwords.end(); ++iter) {
|
||||||
try {
|
try {
|
||||||
return doProcessOnce(fn, *iter, empty, used_for_input);
|
return doProcessOnce(fn, *iter, empty, used_for_input, main_input);
|
||||||
} catch (QPDFExc& e) {
|
} catch (QPDFExc& e) {
|
||||||
auto next = iter;
|
auto next = iter;
|
||||||
++next;
|
++next;
|
||||||
|
@ -2042,12 +1939,16 @@ QPDFJob::doProcess(
|
||||||
|
|
||||||
std::shared_ptr<QPDF>
|
std::shared_ptr<QPDF>
|
||||||
QPDFJob::processFile(
|
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 f1 = std::mem_fn<void(char const*, char const*)>(&QPDF::processFile);
|
||||||
auto fn =
|
auto fn =
|
||||||
std::bind(f1, std::placeholders::_1, filename, std::placeholders::_2);
|
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>
|
std::shared_ptr<QPDF>
|
||||||
|
@ -2056,7 +1957,7 @@ QPDFJob::processInputSource(
|
||||||
{
|
{
|
||||||
auto f1 = std::mem_fn(&QPDF::processInputSource);
|
auto f1 = std::mem_fn(&QPDF::processInputSource);
|
||||||
auto fn = std::bind(f1, std::placeholders::_1, is, std::placeholders::_2);
|
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
|
void
|
||||||
|
@ -2067,7 +1968,8 @@ QPDFJob::validateUnderOverlay(QPDF& pdf, UnderOverlay* uo)
|
||||||
}
|
}
|
||||||
QPDFPageDocumentHelper main_pdh(pdf);
|
QPDFPageDocumentHelper main_pdh(pdf);
|
||||||
int main_npages = QIntC::to_int(main_pdh.getAllPages().size());
|
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));
|
QPDFPageDocumentHelper uo_pdh(*(uo->pdf));
|
||||||
int uo_npages = QIntC::to_int(uo_pdh.getAllPages().size());
|
int uo_npages = QIntC::to_int(uo_pdh.getAllPages().size());
|
||||||
try {
|
try {
|
||||||
|
@ -2324,8 +2226,8 @@ QPDFJob::copyAttachments(QPDF& pdf)
|
||||||
cout << prefix << ": copying attachments from " << to_copy.path
|
cout << prefix << ": copying attachments from " << to_copy.path
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
});
|
});
|
||||||
auto other =
|
auto other = processFile(
|
||||||
processFile(to_copy.path.c_str(), to_copy.password.c_str(), false);
|
to_copy.path.c_str(), to_copy.password.c_str(), false, false);
|
||||||
QPDFEmbeddedFileDocumentHelper other_efdh(*other);
|
QPDFEmbeddedFileDocumentHelper other_efdh(*other);
|
||||||
auto other_attachments = other_efdh.getEmbeddedFiles();
|
auto other_attachments = other_efdh.getEmbeddedFiles();
|
||||||
for (auto const& iter: other_attachments) {
|
for (auto const& iter: other_attachments) {
|
||||||
|
@ -3176,6 +3078,7 @@ QPDFJob::setWriterOptions(QPDF& pdf, QPDFWriter& w)
|
||||||
std::shared_ptr<QPDF> encryption_pdf = processFile(
|
std::shared_ptr<QPDF> encryption_pdf = processFile(
|
||||||
m->encryption_file.c_str(),
|
m->encryption_file.c_str(),
|
||||||
m->encryption_file_password.get(),
|
m->encryption_file_password.get(),
|
||||||
|
false,
|
||||||
false);
|
false);
|
||||||
w.copyEncryptionParameters(*encryption_pdf);
|
w.copyEncryptionParameters(*encryption_pdf);
|
||||||
}
|
}
|
||||||
|
@ -3332,10 +3235,13 @@ QPDFJob::writeOutfile(QPDF& pdf)
|
||||||
// goes out of scope.
|
// goes out of scope.
|
||||||
m->outfilename = temp_out;
|
m->outfilename = temp_out;
|
||||||
} else if (strcmp(m->outfilename.get(), "-") == 0) {
|
} else if (strcmp(m->outfilename.get(), "-") == 0) {
|
||||||
m->outfilename = 0;
|
m->outfilename = nullptr;
|
||||||
}
|
}
|
||||||
{
|
if (this->m->json_output) {
|
||||||
// Private scope so QPDFWriter will close the output file
|
writeJSON(pdf);
|
||||||
|
} else {
|
||||||
|
// QPDFWriter must have block scope so the output file will be
|
||||||
|
// closed after write() finishes.
|
||||||
QPDFWriter w(pdf, m->outfilename.get());
|
QPDFWriter w(pdf, m->outfilename.get());
|
||||||
setWriterOptions(pdf, w);
|
setWriterOptions(pdf, w);
|
||||||
w.write();
|
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;
|
this->gave_output = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ArgParser::argCreateFromJson(std::string const& arg)
|
|
||||||
{
|
|
||||||
c_main->createFromJson(arg);
|
|
||||||
this->gave_input = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ArgParser::argVersion()
|
ArgParser::argVersion()
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,8 +27,7 @@ QPDFJob::Config::emptyInput()
|
||||||
// Various places in QPDFJob.cc know that the empty string for
|
// Various places in QPDFJob.cc know that the empty string for
|
||||||
// infile means empty. We set it to something other than a
|
// infile means empty. We set it to something other than a
|
||||||
// null pointer as an indication that some input source has
|
// null pointer as an indication that some input source has
|
||||||
// been specified. The --create-from-json option also sets
|
// been specified. This approach means that passing "" as
|
||||||
// infilename to empty. This approach means that passing "" as
|
|
||||||
// the argument to inputFile in job JSON, or equivalently
|
// the argument to inputFile in job JSON, or equivalently
|
||||||
// using "" as a positional command-line argument would be the
|
// using "" as a positional command-line argument would be the
|
||||||
// same as --empty. This probably isn't worth blocking or
|
// 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*
|
||||||
QPDFJob::Config::jsonStreamData(std::string const& parameter)
|
QPDFJob::Config::jsonStreamData(std::string const& parameter)
|
||||||
{
|
{
|
||||||
|
o.m->json_stream_data_set = true;
|
||||||
if (parameter == "none") {
|
if (parameter == "none") {
|
||||||
o.m->json_stream_data = qpdf_sj_none;
|
o.m->json_stream_data = qpdf_sj_none;
|
||||||
} else if (parameter == "inline") {
|
} else if (parameter == "inline") {
|
||||||
|
@ -286,22 +286,28 @@ QPDFJob::Config::jsonStreamPrefix(std::string const& parameter)
|
||||||
}
|
}
|
||||||
|
|
||||||
QPDFJob::Config*
|
QPDFJob::Config*
|
||||||
QPDFJob::Config::toJson()
|
QPDFJob::Config::jsonInput()
|
||||||
{
|
{
|
||||||
json("latest");
|
o.m->json_input = true;
|
||||||
jsonStreamData("inline");
|
|
||||||
jsonKey("qpdf");
|
|
||||||
decodeLevel("none");
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPDFJob::Config*
|
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
|
std::string v = parameter;
|
||||||
// empty string.
|
if (parameter == "latest") {
|
||||||
o.m->infilename = QUtil::make_shared_cstr("");
|
v = "2";
|
||||||
o.m->create_from_json = parameter;
|
}
|
||||||
|
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;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -250,12 +250,6 @@ Handlers::setupEmpty()
|
||||||
addBare([this]() { c_main->emptyInput(); });
|
addBare([this]() { c_main->emptyInput(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
Handlers::setupCreateFromJson()
|
|
||||||
{
|
|
||||||
addParameter([this](char const* p) { c_main->createFromJson(p); });
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Handlers::setupOutputFile()
|
Handlers::setupOutputFile()
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <qpdf/FileInputSource.hh>
|
#include <qpdf/FileInputSource.hh>
|
||||||
#include <qpdf/Pl_Base64.hh>
|
#include <qpdf/Pl_Base64.hh>
|
||||||
|
#include <qpdf/Pl_StdioFile.hh>
|
||||||
#include <qpdf/QIntC.hh>
|
#include <qpdf/QIntC.hh>
|
||||||
#include <qpdf/QTC.hh>
|
#include <qpdf/QTC.hh>
|
||||||
#include <qpdf/QUtil.hh>
|
#include <qpdf/QUtil.hh>
|
||||||
|
@ -13,7 +14,7 @@
|
||||||
|
|
||||||
// | st_initial
|
// | st_initial
|
||||||
// { | -> st_top
|
// { | -> st_top
|
||||||
// "qpdf": { | -> st_qpdf
|
// "qpdf-v2": { | -> st_qpdf
|
||||||
// "objects": { | -> st_objects
|
// "objects": { | -> st_objects
|
||||||
// "obj:1 0 R": { | -> st_object_top
|
// "obj:1 0 R": { | -> st_object_top
|
||||||
// "value": { | -> st_object
|
// "value": { | -> st_object
|
||||||
|
@ -93,7 +94,6 @@ QPDF::JSONReactor::JSONReactor(
|
||||||
parse_error(false),
|
parse_error(false),
|
||||||
saw_qpdf(false),
|
saw_qpdf(false),
|
||||||
saw_objects(false),
|
saw_objects(false),
|
||||||
saw_json_version(false),
|
|
||||||
saw_pdf_version(false),
|
saw_pdf_version(false),
|
||||||
saw_trailer(false),
|
saw_trailer(false),
|
||||||
state(st_initial),
|
state(st_initial),
|
||||||
|
@ -154,21 +154,17 @@ QPDF::JSONReactor::containerEnd(JSON const& value)
|
||||||
QTC::TC("qpdf", "QPDF_json missing qpdf");
|
QTC::TC("qpdf", "QPDF_json missing qpdf");
|
||||||
error(0, "\"qpdf\" object was not seen");
|
error(0, "\"qpdf\" object was not seen");
|
||||||
} else {
|
} 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) {
|
if (must_be_complete && !this->saw_pdf_version) {
|
||||||
QTC::TC("qpdf", "QPDF_json missing 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) {
|
if (!this->saw_objects) {
|
||||||
QTC::TC("qpdf", "QPDF_json missing objects");
|
QTC::TC("qpdf", "QPDF_json missing objects");
|
||||||
error(0, "\"qpdf.objects\" was not seen");
|
error(0, "\"qpdf-v2.objects\" was not seen");
|
||||||
} else {
|
} else {
|
||||||
if (must_be_complete && !this->saw_trailer) {
|
if (must_be_complete && !this->saw_trailer) {
|
||||||
QTC::TC("qpdf", "QPDF_json missing 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");
|
QTC::TC("qpdf", "QPDF_json ignoring in st_ignore");
|
||||||
// ignore
|
// ignore
|
||||||
} else if (state == st_top) {
|
} else if (state == st_top) {
|
||||||
if (key == "qpdf") {
|
if (key == "qpdf-v2") {
|
||||||
this->saw_qpdf = true;
|
this->saw_qpdf = true;
|
||||||
nestedState(key, value, st_qpdf);
|
nestedState(key, value, st_qpdf);
|
||||||
} else {
|
} else {
|
||||||
|
@ -289,14 +285,7 @@ QPDF::JSONReactor::dictionaryItem(std::string const& key, JSON const& value)
|
||||||
next_state = st_ignore;
|
next_state = st_ignore;
|
||||||
}
|
}
|
||||||
} else if (state == st_qpdf) {
|
} else if (state == st_qpdf) {
|
||||||
if (key == "jsonversion") {
|
if (key == "pdfversion") {
|
||||||
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") {
|
|
||||||
this->saw_pdf_version = true;
|
this->saw_pdf_version = true;
|
||||||
bool version_okay = false;
|
bool version_okay = false;
|
||||||
std::string v;
|
std::string v;
|
||||||
|
@ -567,3 +556,110 @@ QPDF::importJSON(std::shared_ptr<InputSource> is, bool must_be_complete)
|
||||||
// std::cout << oh.unparseResolved() << std::endl;
|
// 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 argPages();
|
||||||
void argReplaceInput();
|
void argReplaceInput();
|
||||||
void argUnderlay();
|
void argUnderlay();
|
||||||
void argCreateFromJson(std::string const&);
|
|
||||||
void argPagesPositional(std::string const&);
|
void argPagesPositional(std::string const&);
|
||||||
void argPagesPassword(std::string const&);
|
void argPagesPassword(std::string const&);
|
||||||
void argEndPages();
|
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
|
specific version or "latest". Run qpdf --json-help for a
|
||||||
description of the generated JSON object.
|
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
|
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
|
output a JSON object with the same keys and with values
|
||||||
containing descriptive text.
|
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 be appended with -nnn to create the name of the file that
|
||||||
will contain the data for the stream stream in object nnn.
|
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
|
The output file will be qpdf JSON format at the given version.
|
||||||
"QPDF JSON Format" section of the manual for information about
|
Only version 2 is supported. See also --json-stream-data
|
||||||
how to use this option.
|
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
|
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* object_streams_choices[] = {"disable", "preserve", "generate", 0};
|
||||||
static char const* remove_unref_choices[] = {"auto", "yes", "no", 0};
|
static char const* remove_unref_choices[] = {"auto", "yes", "no", 0};
|
||||||
static char const* flatten_choices[] = {"all", "print", "screen", 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", 0};
|
||||||
static char const* json_key_choices[] = {"acroform", "attachments", "encrypt", "objectinfo", "objects", "outlines", "pagelabels", "pages", "qpdf", 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_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* print128_choices[] = {"full", "low", "none", 0};
|
||||||
static char const* modify128_choices[] = {"all", "annotate", "form", "assembly", "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("generate-appearances", [this](){c_main->generateAppearances();});
|
||||||
this->ap.addBare("ignore-xref-streams", [this](){c_main->ignoreXrefStreams();});
|
this->ap.addBare("ignore-xref-streams", [this](){c_main->ignoreXrefStreams();});
|
||||||
this->ap.addBare("is-encrypted", [this](){c_main->isEncrypted();});
|
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("keep-inline-images", [this](){c_main->keepInlineImages();});
|
||||||
this->ap.addBare("linearize", [this](){c_main->linearize();});
|
this->ap.addBare("linearize", [this](){c_main->linearize();});
|
||||||
this->ap.addBare("list-attachments", [this](){c_main->listAttachments();});
|
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-password-recovery", [this](){c_main->suppressPasswordRecovery();});
|
||||||
this->ap.addBare("suppress-recovery", [this](){c_main->suppressRecovery();});
|
this->ap.addBare("suppress-recovery", [this](){c_main->suppressRecovery();});
|
||||||
this->ap.addBare("test-json-schema", [this](){c_main->testJsonSchema();});
|
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("underlay", b(&ArgParser::argUnderlay));
|
||||||
this->ap.addBare("verbose", [this](){c_main->verbose();});
|
this->ap.addBare("verbose", [this](){c_main->verbose();});
|
||||||
this->ap.addBare("warning-exit-0", [this](){c_main->warningExit0();});
|
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-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("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("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.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("collate", [this](std::string const& x){c_main->collate(x);});
|
||||||
this->ap.addOptionalParameter("split-pages", [this](std::string const& x){c_main->splitPages(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("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("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-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("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("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("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("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("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("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.addChoices("json", [this](std::string const& x){c_main->json(x);}, false, json_version_choices);
|
||||||
this->ap.registerOptionTable("pages", b(&ArgParser::argEndPages));
|
this->ap.registerOptionTable("pages", b(&ArgParser::argEndPages));
|
||||||
this->ap.addPositional(p(&ArgParser::argPagesPositional));
|
this->ap.addPositional(p(&ArgParser::argPagesPositional));
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
void setupInputFile();
|
void setupInputFile();
|
||||||
void setupPassword();
|
void setupPassword();
|
||||||
void setupEmpty();
|
void setupEmpty();
|
||||||
void setupCreateFromJson();
|
|
||||||
void setupOutputFile();
|
void setupOutputFile();
|
||||||
void setupReplaceInput();
|
void setupReplaceInput();
|
||||||
void beginEncrypt(JSON);
|
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* object_streams_choices[] = {"disable", "preserve", "generate", 0};
|
||||||
static char const* remove_unref_choices[] = {"auto", "yes", "no", 0};
|
static char const* remove_unref_choices[] = {"auto", "yes", "no", 0};
|
||||||
static char const* flatten_choices[] = {"all", "print", "screen", 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", 0};
|
||||||
static char const* json_key_choices[] = {"acroform", "attachments", "encrypt", "objectinfo", "objects", "outlines", "pagelabels", "pages", "qpdf", 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_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* print128_choices[] = {"full", "low", "none", 0};
|
||||||
static char const* modify128_choices[] = {"all", "annotate", "form", "assembly", "none", 0};
|
static char const* modify128_choices[] = {"all", "annotate", "form", "assembly", "none", 0};
|
||||||
|
|
||||||
|
@ -30,9 +31,9 @@ popHandler(); // key: passwordFile
|
||||||
pushKey("empty");
|
pushKey("empty");
|
||||||
setupEmpty();
|
setupEmpty();
|
||||||
popHandler(); // key: empty
|
popHandler(); // key: empty
|
||||||
pushKey("createFromJson");
|
pushKey("jsonInput");
|
||||||
setupCreateFromJson();
|
addBare([this]() { c_main->jsonInput(); });
|
||||||
popHandler(); // key: createFromJson
|
popHandler(); // key: jsonInput
|
||||||
pushKey("outputFile");
|
pushKey("outputFile");
|
||||||
setupOutputFile();
|
setupOutputFile();
|
||||||
popHandler(); // key: outputFile
|
popHandler(); // key: outputFile
|
||||||
|
@ -105,6 +106,9 @@ popHandler(); // key: progress
|
||||||
pushKey("splitPages");
|
pushKey("splitPages");
|
||||||
addParameter([this](std::string const& p) { c_main->splitPages(p); });
|
addParameter([this](std::string const& p) { c_main->splitPages(p); });
|
||||||
popHandler(); // key: splitPages
|
popHandler(); // key: splitPages
|
||||||
|
pushKey("jsonOutput");
|
||||||
|
addChoices(json_output_choices, true, [this](std::string const& p) { c_main->jsonOutput(p); });
|
||||||
|
popHandler(); // key: jsonOutput
|
||||||
pushKey("encrypt");
|
pushKey("encrypt");
|
||||||
beginDict(bindJSON(&Handlers::beginEncrypt), bindBare(&Handlers::endEncrypt)); // .encrypt
|
beginDict(bindJSON(&Handlers::beginEncrypt), bindBare(&Handlers::endEncrypt)); // .encrypt
|
||||||
pushKey("userPassword");
|
pushKey("userPassword");
|
||||||
|
@ -262,9 +266,6 @@ popHandler(); // key: jsonStreamData
|
||||||
pushKey("jsonStreamPrefix");
|
pushKey("jsonStreamPrefix");
|
||||||
addParameter([this](std::string const& p) { c_main->jsonStreamPrefix(p); });
|
addParameter([this](std::string const& p) { c_main->jsonStreamPrefix(p); });
|
||||||
popHandler(); // key: jsonStreamPrefix
|
popHandler(); // key: jsonStreamPrefix
|
||||||
pushKey("toJson");
|
|
||||||
addBare([this]() { c_main->toJson(); });
|
|
||||||
popHandler(); // key: toJson
|
|
||||||
pushKey("updateFromJson");
|
pushKey("updateFromJson");
|
||||||
addParameter([this](std::string const& p) { c_main->updateFromJson(p); });
|
addParameter([this](std::string const& p) { c_main->updateFromJson(p); });
|
||||||
popHandler(); // key: updateFromJson
|
popHandler(); // key: updateFromJson
|
||||||
|
|
|
@ -3,7 +3,7 @@ static constexpr char const* JOB_SCHEMA_DATA = R"({
|
||||||
"password": "password for encrypted file",
|
"password": "password for encrypted file",
|
||||||
"passwordFile": "read password from a file",
|
"passwordFile": "read password from a file",
|
||||||
"empty": "use empty file as input",
|
"empty": "use empty file as input",
|
||||||
"createFromJson": "create PDF from qpdf JSON",
|
"jsonInput": "input file is qpdf JSON",
|
||||||
"outputFile": "output filename",
|
"outputFile": "output filename",
|
||||||
"replaceInput": "overwrite input with output",
|
"replaceInput": "overwrite input with output",
|
||||||
"qdf": "enable viewing PDF code in a text editor",
|
"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",
|
"forceVersion": "set output PDF version",
|
||||||
"progress": "show progress when writing",
|
"progress": "show progress when writing",
|
||||||
"splitPages": "write pages to separate files",
|
"splitPages": "write pages to separate files",
|
||||||
|
"jsonOutput": "serialize to JSON",
|
||||||
"encrypt": {
|
"encrypt": {
|
||||||
"userPassword": "user password",
|
"userPassword": "user password",
|
||||||
"ownerPassword": "owner password",
|
"ownerPassword": "owner password",
|
||||||
|
@ -87,7 +88,6 @@ static constexpr char const* JOB_SCHEMA_DATA = R"({
|
||||||
],
|
],
|
||||||
"jsonStreamData": "how to handle streams in json output",
|
"jsonStreamData": "how to handle streams in json output",
|
||||||
"jsonStreamPrefix": "prefix for json stream data files",
|
"jsonStreamPrefix": "prefix for json stream data files",
|
||||||
"toJson": "serialize to JSON",
|
|
||||||
"updateFromJson": "update a PDF from qpdf JSON",
|
"updateFromJson": "update a PDF from qpdf JSON",
|
||||||
"allowWeakCrypto": "allow insecure cryptographic algorithms",
|
"allowWeakCrypto": "allow insecure cryptographic algorithms",
|
||||||
"keepFilesOpen": "manage keeping multiple files open",
|
"keepFilesOpen": "manage keeping multiple files open",
|
||||||
|
|
|
@ -3174,20 +3174,6 @@ Related Options
|
||||||
:qpdf:ref:`--json-help` option to get a description of the JSON
|
:qpdf:ref:`--json-help` option to get a description of the JSON
|
||||||
object.
|
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
|
.. qpdf:option:: --json-help
|
||||||
|
|
||||||
.. help: show format of JSON output
|
.. help: show format of JSON output
|
||||||
|
@ -3253,7 +3239,8 @@ Related Options
|
||||||
inline (base64-encoded) or written to a file. If ``file`` is
|
inline (base64-encoded) or written to a file. If ``file`` is
|
||||||
chosen, the file will be the name of the input file appended with
|
chosen, the file will be the name of the input file appended with
|
||||||
:samp:`-{nnn}` where :samp:`{nnn}` is the object number. The prefix
|
: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
|
.. qpdf:option:: --json-stream-prefix=file-prefix
|
||||||
|
|
||||||
|
@ -3268,20 +3255,34 @@ Related Options
|
||||||
``file``, override the input file name as the prefix for stream
|
``file``, override the input file name as the prefix for stream
|
||||||
data files. Whatever is given here will be appended with
|
data files. Whatever is given here will be appended with
|
||||||
:samp:`-{nnn}` to create the name of the file that will contain the
|
: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
|
The output file will be qpdf JSON format at the given version.
|
||||||
"QPDF JSON Format" section of the manual for information about
|
Only version 2 is supported. See also --json-stream-data
|
||||||
how to use this option.
|
and --json-stream-prefix
|
||||||
|
|
||||||
This option creates a PDF file from the previous output of ``qpdf
|
The output file will be qpdf JSON format at the given version. Only
|
||||||
--json`` that includes stream data and information about all
|
version 2 is supported. See also :qpdf:ref:`--json-stream-data` and
|
||||||
objects. For information about converting between PDF and JSON,
|
:qpdf:ref:`--json-stream-prefix`.
|
||||||
please see :ref:`qpdf-json`.
|
|
||||||
|
.. 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
|
.. qpdf:option:: --update-from-json=qpdf-json-file
|
||||||
|
|
||||||
|
|
|
@ -651,10 +651,8 @@ QPDFJob json encrypt missing password 0
|
||||||
QPDFJob json pages no file 0
|
QPDFJob json pages no file 0
|
||||||
qpdf-c called qpdf_empty_pdf 0
|
qpdf-c called qpdf_empty_pdf 0
|
||||||
QPDF_json missing qpdf 0
|
QPDF_json missing qpdf 0
|
||||||
QPDF_json missing json version 0
|
|
||||||
QPDF_json missing pdf version 0
|
QPDF_json missing pdf version 0
|
||||||
QPDF_json top-level scalar 0
|
QPDF_json top-level scalar 0
|
||||||
QPDF_json bad json version 0
|
|
||||||
QPDF_json bad pdf version 0
|
QPDF_json bad pdf version 0
|
||||||
QPDF_json top-level array 0
|
QPDF_json top-level array 0
|
||||||
QPDF_json bad object key 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 stream no dict 0
|
||||||
QPDF_json trailer no value 0
|
QPDF_json trailer no value 0
|
||||||
QPDF_json value stream both or neither 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']],
|
['field-types', ['--show-encryption-key']],
|
||||||
['image-streams', ['--decode-level=all']],
|
['image-streams', ['--decode-level=all']],
|
||||||
['image-streams', ['--decode-level=specialized']],
|
['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=pages']],
|
||||||
['page-labels-and-outlines', ['--json-key=pagelabels']],
|
['page-labels-and-outlines', ['--json-key=pagelabels']],
|
||||||
['page-labels-and-outlines', ['--json-key=outlines']],
|
['page-labels-and-outlines', ['--json-key=outlines']],
|
||||||
['page-labels-and-outlines',
|
['page-labels-and-outlines',
|
||||||
['--json-key=outlines', '--json-key=pages']],
|
['--json-key=outlines', '--json-key=pages']],
|
||||||
['page-labels-and-outlines',
|
['page-labels-and-outlines',
|
||||||
['--json-key=qpdf', '--json-object=trailer']],
|
['--json-key=objects', '--json-object=trailer']],
|
||||||
['page-labels-and-outlines',
|
['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']],
|
['field-types', ['--json-key=acroform']],
|
||||||
['need-appearances', ['--json-key=acroform']],
|
['need-appearances', ['--json-key=acroform']],
|
||||||
['V4-aes', ['--json-key=encrypt']],
|
['V4-aes', ['--json-key=encrypt']],
|
||||||
|
@ -46,27 +46,18 @@ foreach my $d (@json_files)
|
||||||
{
|
{
|
||||||
my ($file, $xargs) = @$d;
|
my ($file, $xargs) = @$d;
|
||||||
my $out = "json-$file";
|
my $out = "json-$file";
|
||||||
my @v1_xargs = ();
|
|
||||||
foreach my $x (@$xargs)
|
foreach my $x (@$xargs)
|
||||||
{
|
{
|
||||||
my $y = $x;
|
my $y = $x;
|
||||||
$y =~ s/^.*=//;
|
$y =~ s/^.*=//;
|
||||||
$y =~ s/\s.*//;
|
$y =~ s/\s.*//;
|
||||||
$out .= "-$y";
|
$out .= "-$y";
|
||||||
if ($x eq '--json-key=qpdf')
|
|
||||||
{
|
|
||||||
push(@v1_xargs, '--json-key=objects');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
push(@v1_xargs, $x);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
my $in = "$file.pdf";
|
my $in = "$file.pdf";
|
||||||
$td->runtest("json v1 $out",
|
$td->runtest("json v1 $out",
|
||||||
{$td->COMMAND =>
|
{$td->COMMAND =>
|
||||||
['qpdf', '--json=1', '--test-json-schema',
|
['qpdf', '--json=1', '--test-json-schema',
|
||||||
@v1_xargs, $in]},
|
@$xargs, $in]},
|
||||||
{$td->FILE => "$out-v1.out", $td->EXIT_STATUS => 0},
|
{$td->FILE => "$out-v1.out", $td->EXIT_STATUS => 0},
|
||||||
$td->NORMALIZE_NEWLINES);
|
$td->NORMALIZE_NEWLINES);
|
||||||
$td->runtest("json v2 $out",
|
$td->runtest("json v2 $out",
|
||||||
|
@ -78,8 +69,8 @@ foreach my $d (@json_files)
|
||||||
|
|
||||||
$td->runtest("bad json stream data (inline)",
|
$td->runtest("bad json stream data (inline)",
|
||||||
{$td->COMMAND =>
|
{$td->COMMAND =>
|
||||||
"qpdf --json=2 --test-json-schema" .
|
"qpdf --json-output=2" .
|
||||||
" --json-stream-data=inline bad-data.pdf > a.json"},
|
" --json-stream-data=inline bad-data.pdf a.json"},
|
||||||
{$td->FILE => "bad-data-json.out", $td->EXIT_STATUS => 3},
|
{$td->FILE => "bad-data-json.out", $td->EXIT_STATUS => 3},
|
||||||
$td->NORMALIZE_NEWLINES);
|
$td->NORMALIZE_NEWLINES);
|
||||||
$td->runtest("check (inline)",
|
$td->runtest("check (inline)",
|
||||||
|
@ -88,9 +79,9 @@ $td->runtest("check (inline)",
|
||||||
$td->NORMALIZE_NEWLINES);
|
$td->NORMALIZE_NEWLINES);
|
||||||
$td->runtest("bad json stream data (file)",
|
$td->runtest("bad json stream data (file)",
|
||||||
{$td->COMMAND =>
|
{$td->COMMAND =>
|
||||||
"qpdf --json=2 --test-json-schema" .
|
"qpdf --json-output=2 " .
|
||||||
" --json-stream-data=file --json-stream-prefix=auto" .
|
" --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->FILE => "bad-data-json.out", $td->EXIT_STATUS => 3},
|
||||||
$td->NORMALIZE_NEWLINES);
|
$td->NORMALIZE_NEWLINES);
|
||||||
$td->runtest("check (file)",
|
$td->runtest("check (file)",
|
||||||
|
@ -110,7 +101,7 @@ foreach my $l (qw(none generalized specialized all))
|
||||||
# library is use.
|
# library is use.
|
||||||
$td->runtest("image-streams json inline: $l",
|
$td->runtest("image-streams json inline: $l",
|
||||||
{$td->COMMAND =>
|
{$td->COMMAND =>
|
||||||
"qpdf image-streams-small.pdf --json=2" .
|
"qpdf image-streams-small.pdf - --json-output=2" .
|
||||||
" --decode-level=$l --json-stream-data=inline"},
|
" --decode-level=$l --json-stream-data=inline"},
|
||||||
{$td->FILE => "json-image-streams-$l-inline-v2.out",
|
{$td->FILE => "json-image-streams-$l-inline-v2.out",
|
||||||
$td->EXIT_STATUS => 0},
|
$td->EXIT_STATUS => 0},
|
||||||
|
@ -118,9 +109,9 @@ foreach my $l (qw(none generalized specialized all))
|
||||||
}
|
}
|
||||||
$td->runtest("image-streams json file: $l",
|
$td->runtest("image-streams json file: $l",
|
||||||
{$td->COMMAND =>
|
{$td->COMMAND =>
|
||||||
"qpdf image-streams-small.pdf --json=2" .
|
"qpdf image-streams-small.pdf - --json-output=2" .
|
||||||
" --decode-level=$l --json-stream-data=file" .
|
" --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"},
|
" --json-object=12 --json-object=16 --json-object=18"},
|
||||||
{$td->FILE => "json-image-streams-$l-file-v2.out",
|
{$td->FILE => "json-image-streams-$l-file-v2.out",
|
||||||
$td->EXIT_STATUS => 0},
|
$td->EXIT_STATUS => 0},
|
||||||
|
@ -159,10 +150,12 @@ foreach my $l (qw(none generalized specialized all))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$td->runtest("use --to-json option",
|
$td->runtest("file to stdout without prefix",
|
||||||
{$td->COMMAND => "qpdf --to-json image-streams-small.pdf"},
|
{$td->COMMAND =>
|
||||||
{$td->FILE => "image-streams-small-to-json.out",
|
"qpdf image-streams-small.pdf - --json-output=2" .
|
||||||
$td->EXIT_STATUS => 0},
|
" -json-stream-data=file"},
|
||||||
|
{$td->FILE => "file-stdout-needs-prefix.out",
|
||||||
|
$td->EXIT_STATUS => 2},
|
||||||
$td->NORMALIZE_NEWLINES);
|
$td->NORMALIZE_NEWLINES);
|
||||||
|
|
||||||
cleanup();
|
cleanup();
|
||||||
|
|
|
@ -50,19 +50,19 @@ $td->runtest("show direct pages",
|
||||||
|
|
||||||
# Json mode for direct and duplicated pages illustrates that the
|
# Json mode for direct and duplicated pages illustrates that the
|
||||||
# "objects" section the original objects before correction when
|
# "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))
|
foreach my $f (qw(page_api_2 direct-pages))
|
||||||
{
|
{
|
||||||
$td->runtest("json for $f (objects only)",
|
$td->runtest("json for $f (objects only)",
|
||||||
{$td->COMMAND =>
|
{$td->COMMAND =>
|
||||||
"qpdf --json=latest $f.pdf" .
|
"qpdf --json=latest $f.pdf" .
|
||||||
" --json-key=qpdf"},
|
" --json-key=objects"},
|
||||||
{$td->FILE => "$f-json-objects.out", $td->EXIT_STATUS => 0},
|
{$td->FILE => "$f-json-objects.out", $td->EXIT_STATUS => 0},
|
||||||
$td->NORMALIZE_NEWLINES);
|
$td->NORMALIZE_NEWLINES);
|
||||||
$td->runtest("json for $f (with pages)",
|
$td->runtest("json for $f (with pages)",
|
||||||
{$td->COMMAND =>
|
{$td->COMMAND =>
|
||||||
"qpdf --json=latest $f.pdf" .
|
"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->FILE => "$f-json-pages.out", $td->EXIT_STATUS => 0},
|
||||||
$td->NORMALIZE_NEWLINES);
|
$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): 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
|
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": {
|
"parameters": {
|
||||||
"decodelevel": "generalized"
|
"decodelevel": "generalized"
|
||||||
},
|
},
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 6,
|
"/Pages": "2 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "2 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"value": {
|
||||||
}
|
"/Count": 2,
|
||||||
},
|
"/Kids": [
|
||||||
"obj:2 0 R": {
|
{
|
||||||
"value": {
|
"/Contents": "3 0 R",
|
||||||
"/Count": 2,
|
"/MediaBox": [
|
||||||
"/Kids": [
|
0,
|
||||||
{
|
0,
|
||||||
"/Contents": "3 0 R",
|
612,
|
||||||
"/MediaBox": [
|
792
|
||||||
0,
|
],
|
||||||
0,
|
"/Parent": "2 0 R",
|
||||||
612,
|
"/Resources": {
|
||||||
792
|
"/Font": {
|
||||||
],
|
"/F1": "5 0 R"
|
||||||
"/Parent": "2 0 R",
|
|
||||||
"/Resources": {
|
|
||||||
"/Font": {
|
|
||||||
"/F1": "5 0 R"
|
|
||||||
},
|
|
||||||
"/ProcSet": "6 0 R"
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": "6 0 R"
|
||||||
},
|
},
|
||||||
{
|
"/Type": "/Page"
|
||||||
"/Contents": "3 0 R",
|
},
|
||||||
"/MediaBox": [
|
{
|
||||||
0,
|
"/Contents": "3 0 R",
|
||||||
0,
|
"/MediaBox": [
|
||||||
612,
|
0,
|
||||||
792
|
0,
|
||||||
],
|
612,
|
||||||
"/Parent": "2 0 R",
|
792
|
||||||
"/Resources": {
|
],
|
||||||
"/Font": {
|
"/Parent": "2 0 R",
|
||||||
"/F1": "5 0 R"
|
"/Resources": {
|
||||||
},
|
"/Font": {
|
||||||
"/ProcSet": "6 0 R"
|
"/F1": "5 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": "6 0 R"
|
||||||
}
|
},
|
||||||
],
|
"/Type": "/Page"
|
||||||
"/Type": "/Pages"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"obj:3 0 R": {
|
|
||||||
"stream": {
|
|
||||||
"dict": {
|
|
||||||
"/Length": "4 0 R"
|
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"/Type": "/Pages"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"obj:3 0 R": {
|
||||||
|
"stream": {
|
||||||
|
"dict": {
|
||||||
|
"/Length": "4 0 R"
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"obj:4 0 R": {
|
},
|
||||||
"value": 44
|
"obj:4 0 R": {
|
||||||
},
|
"value": 44
|
||||||
"obj:5 0 R": {
|
},
|
||||||
"value": {
|
"obj:5 0 R": {
|
||||||
"/BaseFont": "/Helvetica",
|
"value": {
|
||||||
"/Encoding": "/WinAnsiEncoding",
|
"/BaseFont": "/Helvetica",
|
||||||
"/Name": "/F1",
|
"/Encoding": "/WinAnsiEncoding",
|
||||||
"/Subtype": "/Type1",
|
"/Name": "/F1",
|
||||||
"/Type": "/Font"
|
"/Subtype": "/Type1",
|
||||||
}
|
"/Type": "/Font"
|
||||||
},
|
}
|
||||||
"obj:6 0 R": {
|
},
|
||||||
"value": [
|
"obj:6 0 R": {
|
||||||
"/PDF",
|
"value": [
|
||||||
"/Text"
|
"/PDF",
|
||||||
]
|
"/Text"
|
||||||
},
|
]
|
||||||
"trailer": {
|
},
|
||||||
"value": {
|
"trailer": {
|
||||||
"/ID": [
|
"value": {
|
||||||
"b:1323a5937c577a66735583a93698ce3c",
|
"/ID": [
|
||||||
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
"b:1323a5937c577a66735583a93698ce3c",
|
||||||
],
|
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
||||||
"/Root": "1 0 R",
|
],
|
||||||
"/Size": 7
|
"/Root": "1 0 R",
|
||||||
}
|
"/Size": 7
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,99 +25,94 @@
|
||||||
"pageposfrom1": 2
|
"pageposfrom1": 2
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 8,
|
"/Pages": "2 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "2 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"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": {
|
"obj:4 0 R": {
|
||||||
"/Count": 2,
|
"value": 44
|
||||||
"/Kids": [
|
},
|
||||||
"7 0 R",
|
"obj:5 0 R": {
|
||||||
"8 0 R"
|
"value": {
|
||||||
],
|
"/BaseFont": "/Helvetica",
|
||||||
"/Type": "/Pages"
|
"/Encoding": "/WinAnsiEncoding",
|
||||||
}
|
"/Name": "/F1",
|
||||||
},
|
"/Subtype": "/Type1",
|
||||||
"obj:3 0 R": {
|
"/Type": "/Font"
|
||||||
"stream": {
|
}
|
||||||
"dict": {
|
},
|
||||||
"/Length": "4 0 R"
|
"obj:6 0 R": {
|
||||||
}
|
"value": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text"
|
||||||
"obj:4 0 R": {
|
]
|
||||||
"value": 44
|
},
|
||||||
},
|
"obj:7 0 R": {
|
||||||
"obj:5 0 R": {
|
"value": {
|
||||||
"value": {
|
"/Contents": "3 0 R",
|
||||||
"/BaseFont": "/Helvetica",
|
"/MediaBox": [
|
||||||
"/Encoding": "/WinAnsiEncoding",
|
0,
|
||||||
"/Name": "/F1",
|
0,
|
||||||
"/Subtype": "/Type1",
|
612,
|
||||||
"/Type": "/Font"
|
792
|
||||||
}
|
],
|
||||||
},
|
"/Parent": "2 0 R",
|
||||||
"obj:6 0 R": {
|
"/Resources": {
|
||||||
"value": [
|
"/Font": {
|
||||||
"/PDF",
|
"/F1": "5 0 R"
|
||||||
"/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"
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": "6 0 R"
|
||||||
}
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"obj:8 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Contents": "3 0 R",
|
"obj:8 0 R": {
|
||||||
"/MediaBox": [
|
"value": {
|
||||||
0,
|
"/Contents": "3 0 R",
|
||||||
0,
|
"/MediaBox": [
|
||||||
612,
|
0,
|
||||||
792
|
0,
|
||||||
],
|
612,
|
||||||
"/Parent": "2 0 R",
|
792
|
||||||
"/Resources": {
|
],
|
||||||
"/Font": {
|
"/Parent": "2 0 R",
|
||||||
"/F1": "5 0 R"
|
"/Resources": {
|
||||||
},
|
"/Font": {
|
||||||
"/ProcSet": "6 0 R"
|
"/F1": "5 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": "6 0 R"
|
||||||
}
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"trailer": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/ID": [
|
"trailer": {
|
||||||
"b:1323a5937c577a66735583a93698ce3c",
|
"value": {
|
||||||
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
"/ID": [
|
||||||
],
|
"b:1323a5937c577a66735583a93698ce3c",
|
||||||
"/Root": "1 0 R",
|
"b:372cbf44f6db88ab60d9263c0f0bd26a"
|
||||||
"/Size": 7
|
],
|
||||||
}
|
"/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,
|
"qpdf-v2": {
|
||||||
"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,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -1,57 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"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,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "all"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 30,
|
"maxobjectid": 30,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -274,473 +274,468 @@
|
||||||
"userpasswordmatched": false
|
"userpasswordmatched": false
|
||||||
},
|
},
|
||||||
"outlines": [],
|
"outlines": [],
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 30,
|
"/Pages": "2 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "2 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"value": {
|
||||||
}
|
"/Count": 9,
|
||||||
},
|
"/Kids": [
|
||||||
"obj:2 0 R": {
|
"3 0 R",
|
||||||
"value": {
|
"4 0 R",
|
||||||
"/Count": 9,
|
"5 0 R",
|
||||||
"/Kids": [
|
"6 0 R",
|
||||||
"3 0 R",
|
"7 0 R",
|
||||||
"4 0 R",
|
"8 0 R",
|
||||||
"5 0 R",
|
"9 0 R",
|
||||||
"6 0 R",
|
"10 0 R",
|
||||||
"7 0 R",
|
"11 0 R"
|
||||||
"8 0 R",
|
],
|
||||||
"9 0 R",
|
"/Type": "/Pages"
|
||||||
"10 0 R",
|
}
|
||||||
"11 0 R"
|
},
|
||||||
],
|
"obj:3 0 R": {
|
||||||
"/Type": "/Pages"
|
"value": {
|
||||||
}
|
"/Contents": "12 0 R",
|
||||||
},
|
"/MediaBox": [
|
||||||
"obj:3 0 R": {
|
0,
|
||||||
"value": {
|
0,
|
||||||
"/Contents": "12 0 R",
|
612,
|
||||||
"/MediaBox": [
|
392
|
||||||
0,
|
],
|
||||||
0,
|
"/Parent": "2 0 R",
|
||||||
612,
|
"/Resources": {
|
||||||
392
|
"/Font": {
|
||||||
],
|
"/F1": "13 0 R"
|
||||||
"/Parent": "2 0 R",
|
|
||||||
"/Resources": {
|
|
||||||
"/Font": {
|
|
||||||
"/F1": "13 0 R"
|
|
||||||
},
|
|
||||||
"/ProcSet": [
|
|
||||||
"/PDF",
|
|
||||||
"/Text",
|
|
||||||
"/ImageC"
|
|
||||||
],
|
|
||||||
"/XObject": {
|
|
||||||
"/Im1": "14 0 R"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:4 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "15 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "14 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:4 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "15 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "16 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:5 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "17 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "16 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:5 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "17 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "18 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:6 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "19 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "18 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:6 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "19 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "20 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:7 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "21 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "20 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:7 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "21 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "22 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:8 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "23 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "22 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:8 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "23 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "24 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:9 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "25 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "24 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:9 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "25 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "26 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:10 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "27 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "26 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:10 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "27 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "28 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:11 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "29 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "28 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:11 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "29 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "30 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:12 0 R": {
|
"/ImageC"
|
||||||
"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",
|
"/XObject": {
|
||||||
"/Size": 31
|
"/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,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "generalized"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 30,
|
"maxobjectid": 30,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -1,281 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"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,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 30,
|
"maxobjectid": 30,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 30,
|
"maxobjectid": 30,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -1,281 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"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,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 30,
|
"maxobjectid": 30,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -274,485 +274,480 @@
|
||||||
"userpasswordmatched": false
|
"userpasswordmatched": false
|
||||||
},
|
},
|
||||||
"outlines": [],
|
"outlines": [],
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 30,
|
"/Pages": "2 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "2 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"value": {
|
||||||
}
|
"/Count": 9,
|
||||||
},
|
"/Kids": [
|
||||||
"obj:2 0 R": {
|
"3 0 R",
|
||||||
"value": {
|
"4 0 R",
|
||||||
"/Count": 9,
|
"5 0 R",
|
||||||
"/Kids": [
|
"6 0 R",
|
||||||
"3 0 R",
|
"7 0 R",
|
||||||
"4 0 R",
|
"8 0 R",
|
||||||
"5 0 R",
|
"9 0 R",
|
||||||
"6 0 R",
|
"10 0 R",
|
||||||
"7 0 R",
|
"11 0 R"
|
||||||
"8 0 R",
|
],
|
||||||
"9 0 R",
|
"/Type": "/Pages"
|
||||||
"10 0 R",
|
}
|
||||||
"11 0 R"
|
},
|
||||||
],
|
"obj:3 0 R": {
|
||||||
"/Type": "/Pages"
|
"value": {
|
||||||
}
|
"/Contents": "12 0 R",
|
||||||
},
|
"/MediaBox": [
|
||||||
"obj:3 0 R": {
|
0,
|
||||||
"value": {
|
0,
|
||||||
"/Contents": "12 0 R",
|
612,
|
||||||
"/MediaBox": [
|
392
|
||||||
0,
|
],
|
||||||
0,
|
"/Parent": "2 0 R",
|
||||||
612,
|
"/Resources": {
|
||||||
392
|
"/Font": {
|
||||||
],
|
"/F1": "13 0 R"
|
||||||
"/Parent": "2 0 R",
|
|
||||||
"/Resources": {
|
|
||||||
"/Font": {
|
|
||||||
"/F1": "13 0 R"
|
|
||||||
},
|
|
||||||
"/ProcSet": [
|
|
||||||
"/PDF",
|
|
||||||
"/Text",
|
|
||||||
"/ImageC"
|
|
||||||
],
|
|
||||||
"/XObject": {
|
|
||||||
"/Im1": "14 0 R"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:4 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "15 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "14 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:4 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "15 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "16 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:5 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "17 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "16 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:5 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "17 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "18 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:6 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "19 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "18 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:6 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "19 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "20 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:7 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "21 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "20 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:7 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "21 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "22 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:8 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "23 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "22 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:8 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "23 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "24 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:9 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "25 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "24 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:9 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "25 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "26 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:10 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "27 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "26 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:10 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "27 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "28 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:11 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "29 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "28 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:11 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "29 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "30 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:12 0 R": {
|
"/ImageC"
|
||||||
"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",
|
"/XObject": {
|
||||||
"/Size": 31
|
"/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,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "specialized"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 30,
|
"maxobjectid": 30,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -1,281 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"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,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 30,
|
"maxobjectid": 30,
|
||||||
"objects": {
|
"objects": {
|
||||||
|
|
|
@ -274,473 +274,468 @@
|
||||||
"userpasswordmatched": false
|
"userpasswordmatched": false
|
||||||
},
|
},
|
||||||
"outlines": [],
|
"outlines": [],
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 30,
|
"/Pages": "2 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "2 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"value": {
|
||||||
}
|
"/Count": 9,
|
||||||
},
|
"/Kids": [
|
||||||
"obj:2 0 R": {
|
"3 0 R",
|
||||||
"value": {
|
"4 0 R",
|
||||||
"/Count": 9,
|
"5 0 R",
|
||||||
"/Kids": [
|
"6 0 R",
|
||||||
"3 0 R",
|
"7 0 R",
|
||||||
"4 0 R",
|
"8 0 R",
|
||||||
"5 0 R",
|
"9 0 R",
|
||||||
"6 0 R",
|
"10 0 R",
|
||||||
"7 0 R",
|
"11 0 R"
|
||||||
"8 0 R",
|
],
|
||||||
"9 0 R",
|
"/Type": "/Pages"
|
||||||
"10 0 R",
|
}
|
||||||
"11 0 R"
|
},
|
||||||
],
|
"obj:3 0 R": {
|
||||||
"/Type": "/Pages"
|
"value": {
|
||||||
}
|
"/Contents": "12 0 R",
|
||||||
},
|
"/MediaBox": [
|
||||||
"obj:3 0 R": {
|
0,
|
||||||
"value": {
|
0,
|
||||||
"/Contents": "12 0 R",
|
612,
|
||||||
"/MediaBox": [
|
392
|
||||||
0,
|
],
|
||||||
0,
|
"/Parent": "2 0 R",
|
||||||
612,
|
"/Resources": {
|
||||||
392
|
"/Font": {
|
||||||
],
|
"/F1": "13 0 R"
|
||||||
"/Parent": "2 0 R",
|
|
||||||
"/Resources": {
|
|
||||||
"/Font": {
|
|
||||||
"/F1": "13 0 R"
|
|
||||||
},
|
|
||||||
"/ProcSet": [
|
|
||||||
"/PDF",
|
|
||||||
"/Text",
|
|
||||||
"/ImageC"
|
|
||||||
],
|
|
||||||
"/XObject": {
|
|
||||||
"/Im1": "14 0 R"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:4 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "15 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "14 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:4 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "15 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "16 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:5 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "17 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "16 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:5 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "17 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "18 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:6 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "19 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "18 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:6 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "19 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "20 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:7 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "21 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "20 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:7 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "21 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "22 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:8 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "23 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "22 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:8 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "23 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "24 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:9 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "25 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "24 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:9 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "25 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "26 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:10 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "27 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "26 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:10 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "27 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "28 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:11 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "29 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "28 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:11 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "29 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "30 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:12 0 R": {
|
"/ImageC"
|
||||||
"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",
|
"/XObject": {
|
||||||
"/Size": 31
|
"/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
|
"userpasswordmatched": false
|
||||||
},
|
},
|
||||||
"outlines": [],
|
"outlines": [],
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 30,
|
"/Pages": "2 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "2 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"value": {
|
||||||
}
|
"/Count": 9,
|
||||||
},
|
"/Kids": [
|
||||||
"obj:2 0 R": {
|
"3 0 R",
|
||||||
"value": {
|
"4 0 R",
|
||||||
"/Count": 9,
|
"5 0 R",
|
||||||
"/Kids": [
|
"6 0 R",
|
||||||
"3 0 R",
|
"7 0 R",
|
||||||
"4 0 R",
|
"8 0 R",
|
||||||
"5 0 R",
|
"9 0 R",
|
||||||
"6 0 R",
|
"10 0 R",
|
||||||
"7 0 R",
|
"11 0 R"
|
||||||
"8 0 R",
|
],
|
||||||
"9 0 R",
|
"/Type": "/Pages"
|
||||||
"10 0 R",
|
}
|
||||||
"11 0 R"
|
},
|
||||||
],
|
"obj:3 0 R": {
|
||||||
"/Type": "/Pages"
|
"value": {
|
||||||
}
|
"/Contents": "12 0 R",
|
||||||
},
|
"/MediaBox": [
|
||||||
"obj:3 0 R": {
|
0,
|
||||||
"value": {
|
0,
|
||||||
"/Contents": "12 0 R",
|
612,
|
||||||
"/MediaBox": [
|
392
|
||||||
0,
|
],
|
||||||
0,
|
"/Parent": "2 0 R",
|
||||||
612,
|
"/Resources": {
|
||||||
392
|
"/Font": {
|
||||||
],
|
"/F1": "13 0 R"
|
||||||
"/Parent": "2 0 R",
|
|
||||||
"/Resources": {
|
|
||||||
"/Font": {
|
|
||||||
"/F1": "13 0 R"
|
|
||||||
},
|
|
||||||
"/ProcSet": [
|
|
||||||
"/PDF",
|
|
||||||
"/Text",
|
|
||||||
"/ImageC"
|
|
||||||
],
|
|
||||||
"/XObject": {
|
|
||||||
"/Im1": "14 0 R"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:4 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "15 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "14 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:4 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "15 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "16 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:5 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "17 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "16 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:5 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "17 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "18 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:6 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "19 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "18 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:6 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "19 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "20 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:7 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "21 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "20 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:7 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "21 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "22 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:8 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "23 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "22 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:8 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "23 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "24 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:9 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "25 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "24 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:9 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "25 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "26 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:10 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "27 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "26 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:10 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "27 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "28 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:11 0 R": {
|
"/ImageC"
|
||||||
"value": {
|
|
||||||
"/Contents": "29 0 R",
|
|
||||||
"/MediaBox": [
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
612,
|
|
||||||
392
|
|
||||||
],
|
],
|
||||||
"/Parent": "2 0 R",
|
"/XObject": {
|
||||||
"/Resources": {
|
"/Im1": "28 0 R"
|
||||||
"/Font": {
|
}
|
||||||
"/F1": "13 0 R"
|
},
|
||||||
},
|
"/Type": "/Page"
|
||||||
"/ProcSet": [
|
}
|
||||||
"/PDF",
|
},
|
||||||
"/Text",
|
"obj:11 0 R": {
|
||||||
"/ImageC"
|
"value": {
|
||||||
],
|
"/Contents": "29 0 R",
|
||||||
"/XObject": {
|
"/MediaBox": [
|
||||||
"/Im1": "30 0 R"
|
0,
|
||||||
}
|
0,
|
||||||
|
612,
|
||||||
|
392
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "13 0 R"
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text",
|
||||||
"obj:12 0 R": {
|
"/ImageC"
|
||||||
"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",
|
"/XObject": {
|
||||||
"/Size": 31
|
"/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": {
|
"parameters": {
|
||||||
"decodelevel": "generalized"
|
"decodelevel": "generalized"
|
||||||
},
|
},
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 10,
|
"/Pages": "3 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "3 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"value": {
|
||||||
}
|
"/CreationDate": "u:D:20120621124041",
|
||||||
},
|
"/Producer": "u:Apex PDFWriter"
|
||||||
"obj:2 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/CreationDate": "u:D:20120621124041",
|
"obj:3 0 R": {
|
||||||
"/Producer": "u:Apex PDFWriter"
|
"value": {
|
||||||
}
|
"/Count": 3,
|
||||||
},
|
"/Kids": [
|
||||||
"obj:3 0 R": {
|
"4 0 R",
|
||||||
"value": {
|
"4 0 R",
|
||||||
"/Count": 3,
|
"5 0 R"
|
||||||
"/Kids": [
|
],
|
||||||
"4 0 R",
|
"/Type": "/Pages"
|
||||||
"4 0 R",
|
}
|
||||||
"5 0 R"
|
},
|
||||||
],
|
"obj:4 0 R": {
|
||||||
"/Type": "/Pages"
|
"value": {
|
||||||
}
|
"/Contents": "6 0 R",
|
||||||
},
|
"/MediaBox": [
|
||||||
"obj:4 0 R": {
|
0,
|
||||||
"value": {
|
0,
|
||||||
"/Contents": "6 0 R",
|
612,
|
||||||
"/MediaBox": [
|
792
|
||||||
0,
|
],
|
||||||
0,
|
"/Parent": "3 0 R",
|
||||||
612,
|
"/Resources": {
|
||||||
792
|
"/Font": {
|
||||||
],
|
"/F1": "8 0 R"
|
||||||
"/Parent": "3 0 R",
|
|
||||||
"/Resources": {
|
|
||||||
"/Font": {
|
|
||||||
"/F1": "8 0 R"
|
|
||||||
},
|
|
||||||
"/ProcSet": [
|
|
||||||
"/PDF",
|
|
||||||
"/Text"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text"
|
||||||
"obj:5 0 R": {
|
]
|
||||||
"value": {
|
},
|
||||||
"/Contents": "9 0 R",
|
"/Type": "/Page"
|
||||||
"/MediaBox": [
|
}
|
||||||
0,
|
},
|
||||||
0,
|
"obj:5 0 R": {
|
||||||
612,
|
"value": {
|
||||||
792
|
"/Contents": "9 0 R",
|
||||||
],
|
"/MediaBox": [
|
||||||
"/Parent": "3 0 R",
|
0,
|
||||||
"/Resources": {
|
0,
|
||||||
"/Font": {
|
612,
|
||||||
"/F1": "8 0 R"
|
792
|
||||||
},
|
],
|
||||||
"/ProcSet": [
|
"/Parent": "3 0 R",
|
||||||
"/PDF",
|
"/Resources": {
|
||||||
"/Text"
|
"/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": {
|
"obj:7 0 R": {
|
||||||
"dict": {
|
"value": 47
|
||||||
"/Length": "7 0 R"
|
},
|
||||||
}
|
"obj:8 0 R": {
|
||||||
}
|
"value": {
|
||||||
},
|
"/BaseFont": "/Times-Roman",
|
||||||
"obj:7 0 R": {
|
"/Encoding": "/WinAnsiEncoding",
|
||||||
"value": 47
|
"/Subtype": "/Type1",
|
||||||
},
|
"/Type": "/Font"
|
||||||
"obj:8 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/BaseFont": "/Times-Roman",
|
"obj:9 0 R": {
|
||||||
"/Encoding": "/WinAnsiEncoding",
|
"stream": {
|
||||||
"/Subtype": "/Type1",
|
"dict": {
|
||||||
"/Type": "/Font"
|
"/Length": "10 0 R"
|
||||||
}
|
|
||||||
},
|
|
||||||
"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: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
|
"pageposfrom1": 3
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"qpdf": {
|
"objects": {
|
||||||
"jsonversion": 2,
|
"obj:1 0 R": {
|
||||||
"pdfversion": "1.3",
|
"value": {
|
||||||
"maxobjectid": 11,
|
"/Pages": "3 0 R",
|
||||||
"objects": {
|
"/Type": "/Catalog"
|
||||||
"obj:1 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/Pages": "3 0 R",
|
"obj:2 0 R": {
|
||||||
"/Type": "/Catalog"
|
"value": {
|
||||||
}
|
"/CreationDate": "u:D:20120621124041",
|
||||||
},
|
"/Producer": "u:Apex PDFWriter"
|
||||||
"obj:2 0 R": {
|
}
|
||||||
"value": {
|
},
|
||||||
"/CreationDate": "u:D:20120621124041",
|
"obj:3 0 R": {
|
||||||
"/Producer": "u:Apex PDFWriter"
|
"value": {
|
||||||
}
|
"/Count": 3,
|
||||||
},
|
"/Kids": [
|
||||||
"obj:3 0 R": {
|
"4 0 R",
|
||||||
"value": {
|
"11 0 R",
|
||||||
"/Count": 3,
|
"5 0 R"
|
||||||
"/Kids": [
|
],
|
||||||
"4 0 R",
|
"/Type": "/Pages"
|
||||||
"11 0 R",
|
}
|
||||||
"5 0 R"
|
},
|
||||||
],
|
"obj:4 0 R": {
|
||||||
"/Type": "/Pages"
|
"value": {
|
||||||
}
|
"/Contents": "6 0 R",
|
||||||
},
|
"/MediaBox": [
|
||||||
"obj:4 0 R": {
|
0,
|
||||||
"value": {
|
0,
|
||||||
"/Contents": "6 0 R",
|
612,
|
||||||
"/MediaBox": [
|
792
|
||||||
0,
|
],
|
||||||
0,
|
"/Parent": "3 0 R",
|
||||||
612,
|
"/Resources": {
|
||||||
792
|
"/Font": {
|
||||||
],
|
"/F1": "8 0 R"
|
||||||
"/Parent": "3 0 R",
|
|
||||||
"/Resources": {
|
|
||||||
"/Font": {
|
|
||||||
"/F1": "8 0 R"
|
|
||||||
},
|
|
||||||
"/ProcSet": [
|
|
||||||
"/PDF",
|
|
||||||
"/Text"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text"
|
||||||
"obj:5 0 R": {
|
]
|
||||||
"value": {
|
},
|
||||||
"/Contents": "9 0 R",
|
"/Type": "/Page"
|
||||||
"/MediaBox": [
|
}
|
||||||
0,
|
},
|
||||||
0,
|
"obj:5 0 R": {
|
||||||
612,
|
"value": {
|
||||||
792
|
"/Contents": "9 0 R",
|
||||||
],
|
"/MediaBox": [
|
||||||
"/Parent": "3 0 R",
|
0,
|
||||||
"/Resources": {
|
0,
|
||||||
"/Font": {
|
612,
|
||||||
"/F1": "8 0 R"
|
792
|
||||||
},
|
],
|
||||||
"/ProcSet": [
|
"/Parent": "3 0 R",
|
||||||
"/PDF",
|
"/Resources": {
|
||||||
"/Text"
|
"/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": {
|
"obj:7 0 R": {
|
||||||
"dict": {
|
"value": 47
|
||||||
"/Length": "7 0 R"
|
},
|
||||||
}
|
"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:10 0 R": {
|
||||||
},
|
"value": 47
|
||||||
"obj:8 0 R": {
|
},
|
||||||
"value": {
|
"obj:11 0 R": {
|
||||||
"/BaseFont": "/Times-Roman",
|
"value": {
|
||||||
"/Encoding": "/WinAnsiEncoding",
|
"/Contents": "6 0 R",
|
||||||
"/Subtype": "/Type1",
|
"/MediaBox": [
|
||||||
"/Type": "/Font"
|
0,
|
||||||
}
|
0,
|
||||||
},
|
612,
|
||||||
"obj:9 0 R": {
|
792
|
||||||
"stream": {
|
],
|
||||||
"dict": {
|
"/Parent": "3 0 R",
|
||||||
"/Length": "10 0 R"
|
"/Resources": {
|
||||||
}
|
"/Font": {
|
||||||
}
|
"/F1": "8 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"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"/Type": "/Page"
|
"/ProcSet": [
|
||||||
}
|
"/PDF",
|
||||||
},
|
"/Text"
|
||||||
"trailer": {
|
]
|
||||||
"value": {
|
},
|
||||||
"/ID": [
|
"/Type": "/Page"
|
||||||
"b:fb18b786ff7b358705da8a532aba8f6f",
|
}
|
||||||
"b:f7179eb35159bfd4c00f128abcfd1f02"
|
},
|
||||||
],
|
"trailer": {
|
||||||
"/Info": "2 0 R",
|
"value": {
|
||||||
"/Root": "1 0 R",
|
"/ID": [
|
||||||
"/Size": 11
|
"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,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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
|
qpdf: qjson-bad-object-key.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "potato",
|
"pdfversion": "potato",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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
|
qpdf: qjson-bad-pdf-version1.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": [],
|
"pdfversion": [],
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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
|
qpdf: qjson-bad-pdf-version2.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6
|
"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
|
qpdf: qjson-missing-objects.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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
|
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,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"objects": {
|
||||||
"obj:1 0 R": {
|
"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
|
qpdf: qjson-no-pdf-version.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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: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 600): 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 768): "stream" is missing "dict"
|
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 768): "stream" must have exactly one of "data" or "datafile"
|
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 858): "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 1236): "trailer" is missing "value"
|
WARNING: qjson-obj-key-errors.json (trailer, offset 1152): "trailer" is missing "value"
|
||||||
qpdf: qjson-obj-key-errors.json: errors found in JSON
|
qpdf: qjson-obj-key-errors.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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
|
qpdf: qjson-object-not-dict.json: errors found in JSON
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
"qpdf": {
|
"qpdf-v2": {
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.7",
|
"pdfversion": "1.7",
|
||||||
"objects": false
|
"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 (offset 58): "objects" must be a dictionary
|
||||||
WARNING: qjson-objects-not-dict.json: "qpdf.objects.trailer" was not seen
|
WARNING: qjson-objects-not-dict.json: "qpdf-v2.objects.trailer" was not seen
|
||||||
qpdf: qjson-objects-not-dict.json: errors found in JSON
|
qpdf: qjson-objects-not-dict.json: errors found in JSON
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
"qpdf": {
|
"qpdf-v2": {
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.7",
|
"pdfversion": "1.7",
|
||||||
"objects": {
|
"objects": {
|
||||||
"obj:1 0 R": {
|
"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 118): "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 118): 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 (obj:1 0 R, offset 98): "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: "qpdf-v2.objects.trailer" was not seen
|
||||||
qpdf: qjson-stream-dict-not-dict.json: errors found in JSON
|
qpdf: qjson-stream-dict-not-dict.json: errors found in JSON
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
"qpdf": {
|
"qpdf-v2": {
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.7",
|
"pdfversion": "1.7",
|
||||||
"objects": {
|
"objects": {
|
||||||
"obj:1 0 R": {
|
"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 (obj:1 0 R, offset 99): "stream" must be a dictionary
|
||||||
WARNING: qjson-stream-not-dict.json: "qpdf.objects.trailer" was not seen
|
WARNING: qjson-stream-not-dict.json: "qpdf-v2.objects.trailer" was not seen
|
||||||
qpdf: qjson-stream-not-dict.json: errors found in JSON
|
qpdf: qjson-stream-not-dict.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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
|
qpdf: qjson-trailer-not-dict.json: errors found in JSON
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"qpdf-v2": {
|
||||||
"parameters": {
|
|
||||||
"decodelevel": "none"
|
|
||||||
},
|
|
||||||
"qpdf": {
|
|
||||||
"jsonversion": 2,
|
|
||||||
"pdfversion": "1.3",
|
"pdfversion": "1.3",
|
||||||
"maxobjectid": 6,
|
"maxobjectid": 6,
|
||||||
"objects": {
|
"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
|
qpdf: qjson-trailer-stream.json: errors found in JSON
|
||||||
|
|
|
@ -18,11 +18,8 @@ my $n_tests = 0;
|
||||||
|
|
||||||
my @badfiles = (
|
my @badfiles = (
|
||||||
'no-qpdf-object',
|
'no-qpdf-object',
|
||||||
'no-json-version',
|
|
||||||
'no-pdf-version',
|
'no-pdf-version',
|
||||||
'top-level-scalar',
|
'top-level-scalar',
|
||||||
'bad-json-version1',
|
|
||||||
'bad-json-version2',
|
|
||||||
'bad-pdf-version1',
|
'bad-pdf-version1',
|
||||||
'bad-pdf-version2',
|
'bad-pdf-version2',
|
||||||
'top-level-array',
|
'top-level-array',
|
||||||
|
@ -44,7 +41,7 @@ foreach my $f (@badfiles)
|
||||||
{
|
{
|
||||||
$td->runtest("bad: $f",
|
$td->runtest("bad: $f",
|
||||||
{$td->COMMAND =>
|
{$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->FILE => "qjson-$f.out", $td->EXIT_STATUS => 2},
|
||||||
$td->NORMALIZE_NEWLINES);
|
$td->NORMALIZE_NEWLINES);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user