JSON Profile File
This is what the everything.json profile file looks like. The JSON content below includes every possible setting for PDF Checker.
{
"general": {
"unable-to-open": {
"check": "on",
"report-as-error": "on",
"report-message": "Cannot be opened/not valid PDF",
"abort-remaining-checks": "on"
},
"password-protected": {
"check": "on",
"report-as-error": "on",
"report-message": "Requires password for opening",
"abort-remaining-checks": "on"
},
"contains-owner-password": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains owner password",
"abort-remaining-checks": "off"
},
"xfa-type": {
"check": "on",
"report-as-error": "off",
"report-message": "XFA document",
"abort-remaining-checks": "off"
},
"acroforms-type": {
"check": "on",
"report-as-error": "off",
"report-message": "AcroForms document (no XFA)",
"abort-remaining-checks": "off"
},
"pdf-v2": {
"check": "on",
"report-as-error": "off",
"report-message": "PDF 2.0 document",
"abort-remaining-checks": "off"
},
"contains-signature": {
"check": "on",
"report-as-error": "off",
"report-message": "Signed document",
"abort-remaining-checks": "off"
},
"does-not-conform-to-claimed-pdfa-type": {
"check": "on",
"report-as-error": "off",
"report-message": "Is not PDF/A conformant, see ‘claimed-pdfa-type’ in the
Summary section for more details.",
"abort-remaining-checks": "off"
},
"claims-pdfx-conformance": {
"check": "on",
"report-as-error": "off",
"report-message": "Claims PDF/X compliance",
"abort-remaining-checks": "off"
},
"claims-pdfe-conformance": {
"check": "on",
"report-as-error": "off",
"report-message": "Claims PDF/E compliance",
"abort-remaining-checks": "off"
},
"claims-pdfvt-conformance": {
"check": "on",
"report-as-error": "off",
"report-message": "Claims PDF/VT compliance",
"abort-remaining-checks": "off"
},
"claims-pdfua-conformance": {
"check": "on",
"report-as-error": "off",
"report-message": "Claims PDF/UA compliance",
"abort-remaining-checks": "off"
},
"born-digital": {
"check": "on",
"report-as-error": "off",
"report-message": "Document was born digital. It was produced from PDF
authoring software and so it may contain text, images,
tables, forms, and other objects. These types of PDFs
typically do not require OCR.",
"abort-remaining-checks": "off"
},
"image-only": {
"check": "on",
"report-as-error": "off",
"report-message": "Document was not born digital and only consists of images.
It may have been produced by scanning a document for
instance. These types of PDFs are good candidates for
OCR.",
"abort-remaining-checks": "off"
},
"damaged": {
"check": "on",
"report-as-error": "on",
"report-message": "Damaged document",
"abort-remaining-checks": "off"
},
"tagged-pdf": {
"check": "on",
"report-as-error": "off",
"report-message": "Document contains tagged content",
"abort-remaining-checks": "off"
}
},
"cleanup": {
"suboptimal-compression": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains conservatively compressed streams",
"abort-remaining-checks": "off"
}
},
"fonts": {
"found-non-extractible-text": {
"check": "on",
"report-as-error": "off",
"report-message": "Uses fonts that do not allow text to be extracted",
"abort-remaining-checks": "off"
},
"uses-fonts-not-embedded": {
"check": "on",
"report-as-error": "on",
"report-message": "Uses fonts not embedded in document",
"abort-remaining-checks": "off"
},
"uses-base14fonts-not-embedded": {
"check": "on",
"report-as-error": "on",
"report-message": "Uses Base 14 fonts not embedded in document",
"abort-remaining-checks": "off"
},
"uses-fonts-fully-embedded": {
"check": "on",
"report-as-error": "off",
"report-message": "Uses fonts fully embedded in document",
"abort-remaining-checks": "off"
},
"fontdescriptor-missing-fields": {
"check": "on",
"report-as-error": "on",
"report-message": "FontDescriptor has missing required fields",
"abort-remaining-checks": "off"
},
"fontdescriptor-missing-capheight": {
"check": "on",
"report-as-error": "off",
"report-message": "FontDescriptor is missing potentially required
CapHeight field",
"abort-remaining-checks": "off"
}
},
"objects": {
"contains-javascript-actions": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains JavaScript actions",
"abort-remaining-checks": "off"
},
"contains-thumbnails": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains page thumbnail images",
"abort-remaining-checks": "off"
}
},
"userdata": {
"contains-annots": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains annotations",
"abort-remaining-checks": "off"
},
"contains-annots-not-for-viewing": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains annotations that are set as invisible
for viewing",
"abort-remaining-checks": "off"
},
"contains-annots-not-for-printing": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains annotations that are set as invisible
for printing",
"abort-remaining-checks": "off"
},
"contains-annots-without-normal-appearances": {
"check": "on",
"report-as-error": "on",
"report-message": "Contains annotations without default normal appearances.
These may not be displayed correctly by all PDF viewers",
"abort-remaining-checks": "off"
},
"contains-optional-content": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains optional content (layers)",
"abort-remaining-checks": "off"
},
"contains-transparency": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains transparency",
"abort-remaining-checks": "off"
},
"contains-private-data": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains application private data",
"abort-remaining-checks": "off"
},
"contains-metadata": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains metadata",
"abort-remaining-checks": "off"
},
"contains-embedded-files": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains embedded files",
"abort-remaining-checks": "off"
}
},
"images": {
"color": {
"resolution-too-low": {
"check": "on",
"report-as-error": "off",
"report-message": "Low resolution color image(s) present",
"abort-remaining-checks": "off",
"trigger-dpi": 150
},
"resolution-too-high": {
"check": "on",
"report-as-error": "off",
"report-message": "High resolution color image(s) present",
"abort-remaining-checks": "off",
"trigger-dpi": 600
},
"uses-jpeg2000-compression": {
"check": "on",
"report-as-error": "off",
"report-message": "Color image(s) using JPEG2000 compression",
"abort-remaining-checks": "off"
},
"image-depth": {
"check": "on",
"report-as-error": "off",
"report-message": "16-bit/channel color image(s) present",
"abort-remaining-checks": "off"
}
},
"grayscale": {
"resolution-too-low": {
"check": "on",
"report-as-error": "off",
"report-message": "Low resolution gray image(s) present",
"abort-remaining-checks": "off",
"trigger-dpi": 150
},
"resolution-too-high": {
"check": "on",
"report-as-error": "off",
"report-message": "High resolution gray image(s) present",
"abort-remaining-checks": "off",
"trigger-dpi": 600
},
"uses-jpeg2000-compression": {
"check": "on",
"report-as-error": "off",
"report-message": "Grayscale image(s) using JPEG2000 compression",
"abort-remaining-checks": "off"
}
},
"monochrome": {
"resolution-too-low": {
"check": "on",
"report-as-error": "off",
"report-message": "Low resolution monochrome image(s) present",
"abort-remaining-checks": "off",
"trigger-dpi": 200
},
"resolution-too-high": {
"check": "on",
"report-as-error": "off",
"report-message": "High resolution monochrome image(s) present",
"abort-remaining-checks": "off",
"trigger-dpi": 1200
},
"uses-jbig2-compression": {
"check": "on",
"report-as-error": "off",
"report-message": "Monochrome image(s) using JBIG2 compression",
"abort-remaining-checks": "off"
}
},
"alternate-images": {
"check": "on",
"report-as-error": "off",
"report-message": "Alternate image(s) present",
"abort-remaining-checks": "off"
}
}
}
Turning options on or off
You can create your own JSON profile by editing the JSON profile we provide and removing options you don’t want. Or you can simply turn an option off. Set the “check” value to “off”:
"objects": {
"contains-javascript-actions": {
"check": "off",
"report-as-error": "off",
"report-message": "Contains JavaScript actions",
"abort-remaining-checks": "off"
Abort remaining checks
The “abort-remaining-checks” value appears for every setting. You can set up PDF Checker so that it stops its analysis of a given PDF document if it encounters a condition that you select. This saves processing time; PDF Checker abandons the current document if it finds a critical error. If you are running PDF Checker as a batch process, it will move on to scan the next PDF file in the directory.
Two conditions will cause the PDF Checker review process to stop processing immediately whether the “abort-remaining-checks” condition is turned on or not.
- unable-to-open. The document has an invalid format and cannot be opened, or it is not really a PDF file, or the file is named in the command line statement but is not in the directory.
- password-protected. The document requires a password to open and view, but the password was not provided with the command line statement.
A third condition might cause the review process to stop immediately if the PDF document cannot be repaired.
- damaged. The document is corrupted and PDF Checker cannot open the file.
PDF Checker includes a document repair feature. If PDF Checker finds it cannot open a PDF document, it will run the repair process for the file, and store an updated version of the file in memory with those changes applied, but without changing the file itself. A similar feature in Adobe Acrobat allows a user to save a repaired document and apply those repairs. PDF Checker does not make any changes to the initial document or allow the saving of a repaired document. Other Datalogics products can be used for that.
If PDF Checker still can’t open the PDF document after repairing it, the system will stop processing the document and mark it as damaged. If PDF Checker can open the repaired file, it will run through its normal review process, but the review might not complete successfully. If one of the reviews fails, PDF Checker will stop processing the document, and it will only report on the reviews that completed. For example, if PDF Checker can identify and list the fonts in a repaired PDF document but fails when seeking to process the images in that document, checks made during processing images will be reported as aborted.
Suppose you set the “abort-remaining-checks” value to “on” for the “contains-annots-without-normal-appearances” condition, like this:
"contains-annots-without-normal-appearances": {
"check": "on",
"report-as-error": "off",
"report-message": "Contains annotations without default normal appearances.
These may not be displayed correctly by all PDF viewers",
"abort-remaining-checks": "on"
In this example, the first time PDF Checker finds annotations without normal appearances in a PDF document, it stops all further processing for that document. Since PDF Checker can run multi-threaded, however, and thus complete multiple checks at one time, the actual remaining checks that are not processed can vary, depending on when the abort signal is received. For example, one thread could be checking fonts in a PDF document while another is looking at images. The thread checking fonts might not be finished, or where it breaks off might vary from one PDF document to another, when PDF Checker abandons the PDF file. As a result, the output results might vary, too. The check that causes the process to abort is shown in the output report.
Reporting an issue as an error or information
PDF Checker evaluates a PDF document for each setting included in your JSON profile and generates a record for each result. If you were to export your results to a text file, part of the report might look like this:
Fonts Results
Errors:
Uses fonts not embedded in document:
Arial (1 instance)
Arial,Bold (1 instance)
CourierStd (1 instance)
Meiryo (1 instance)
Murdana (3 instances)
TimesNewRoman (1 instance)
TimesNewRoman,Italic (1 instance)
Note the options in the JSON Profile to report as error, and the error message:
"fonts": {
"uses-fonts-not-embedded": {
"check": "on",
"report-as-error": "on",
"report-message": "Uses fonts not embedded in document",
"abort-remaining-checks": "off"
You can use these settings to flag a result specifically as an error in the output results. Set “report-aserror” to “on” and the result will appear under the heading “Errors” in the export file, as shown above. You can also edit the message that appears by changing the value for “report-message.” You could change the error message from this:
"report-as-error": "on",
"report-message": "Uses fonts not embedded in document",
to this:
"report-as-error": "on",
"report-message": "These fonts are not found in this PDF document"
To see the full list and descriptions of JSON profile parameters, check out the PDF Checker User Guide on GitHub.