Click or drag to resize

ExaminerResults Class

ExaminerResults represents the results of information about a PDF that can be determined without extensive scanning of the document. Not all information within the results is exhaustive and therefore may have either false positives or false negatives depending on the actual document content. To the greatest extent possible, these false indicators are benign except where noted.
Inheritance Hierarchy

Namespace:  Atalasoft.PdfDoc.Examiner
Assembly:  Atalasoft.PdfDoc (in Atalasoft.PdfDoc.dll) Version: (.NET 4.5.2, x86)
public class ExaminerResults

The ExaminerResults type exposes the following members.

Public propertyDocumentVersion
Gets the document version advertised by the document. The resulting value is the maximum of the value in the document header and the value in the document catalog. The value will always be for the form major.minor. Currently major is always 1. Note many incorrect documents contain PDF features that are beyond their advertised version.
Public propertyErrorsEncountered
Gets a list of errors encountered while opening the document. Since only a narrow subset of the document is examined, this list is not guaranteed to be exhaustive.
Public propertyFormUsesXFA
Gets a value indicating whether the AcroForm in the document uses Adobe's Extensible Form Architecture, XFA.
Public propertyHasForm
Gets a value indicating whether the document contains an AcroForm.
Public propertyHasSignatures
Gets a value indicating whether the AcroForm advertises that it contains digital signatures. This does not indicate that the signatures are valid.
Public propertyHasXmp
Gets a value indicating whether the document has XMP metatdata.
Public propertyIsBadlyDamaged
Gets a value indicating whether the document is badly damaged. If, during the process of opening the file, errors were encountered that were of Major severity or worse then IsBadlyDamaged will be set to true. If true, only the properties IsPdf, [P:IsValidHeader], and IsEncrypted will be valid. All other values are suspect.
Public propertyIsEncrypted
Gets a value indicating whether the document contains encryption. Not all documents that are encrypted require a non-empty password. This property merely indicates that a password might be required to correctly open the document. If FromStream(Stream, String, String) throws an IncorrectPasswordException, then the document requires a non-empty password or the supplied password(s) are incorrect.
Public propertyIsIncorrectVersionForXrefStream
Gets a value indicating whether the PDF document's advertised document version is incorrect. Specifically, some PDF document generators use a PDF featured called cross-reference streams that require that the document be version 1.5 or greater. If there is evidence of a cross-reference stream and the version is less than 1.5, this property will true.
Public propertyIsPdf
Gets a value indicating whether the document is a PDF. This test is more lenient than the specification allows and will return true if the document contains the PDF header including in some pathological cases. If the PDF header meets specification, [P:IsValidHeader] will return true. If it returns false, the document is well out-of-spec and no other information in ExaminerResults will be valid.
Public propertyIsPdfA
Gets a value indicating whether the document advertises itself as conforming to the PDF/A-1b archival specification. This does not mean that the document in any way complies with the specification, merely that it says it does. For example, if IsPdfA returns true and HasXmp returns false, then the document is NOT a PDF/A compliant document.
Public propertyIsPdfPortfolio
Gets a value indicating whether the document contains a PDF Portfolio. This test looks specifically for a Collection object in the document's catalog. A PDF Portfolio is a feature wherein a PDF document doesn't necessarily contain any PDF data at all, but instead contains a series of embedded files which represent the content of the document. Some PDF documents that have a Portfolion include an ersatz page which is shown for compatibility. The presentation of embedded files is application dependent.
Public propertyIsValidPdfHeader
Gets a value indicating whether the document contains a valid PDF header. If the document does not meet the PDF specification for a header but still contains the text "%PDF-" this will return false. For example, if the document start with the following:

%!PS-Adobe - this is PostScript not %PDF-1.0

this will be considered to be a PDF, even though it is not within specification (and because it's labeled as PostScript, it will likely generate other errors).

Public propertyMetadata
Gets the metadata associated with the PDF document from the DocumentInfo object within the file. This value may be null.
Public propertyPageCount
Gets the page count of the document.
Public propertyRequiresDynamicFormRendering
Gets a value indicating whether requires dynamic form rendering. Typically, this is set when a document contains an XFA form and has embedded form data that has not yet been converted into PDF content.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodStatic memberCode exampleFromStream
Attempts to build an ExaminerResults object from the stream provided. To the greatest extent possible, FromStream attempts to get some information from the file. If the file is a PDF and it is encrypted, FromStream will throw an IncorrectPasswordException.
Note that many of the properties in the file cascade. For example, if IsPdf returns false, no other property will be valid. If IsEncrypted is true, no other properties except IsPdf, IsPdfA, and [P:IsIncorrectVersionForXrefStream] will be valid.
The properties within ExaminerResults are meant to reflect a very lightweight examination of the file and are in no way are exhaustive. PDF is a very complicated file format and there are a number of exceptions in the specification that are counter to the goal of having a light-weight interface to the information within the file. For example, because a PDF file presents information that indicates that it meets the archival variant, PDF/A, this doesn't guarantee that the document meets all requirements. ExaminerResults reflects what is advertised by the file and not necessarily the entire depth of content.
The stream position can not be counted on to be at a consistent location upon return.
The supplied passwords may either or both be null indicating no password. If passwords are supplied and the document is not encrypted, the passwords will be ignored. If the document is encrypted and the password(s) are incorrect or null FromStream will throw an IncorrectPasswordException.
The following example converts the rectangular points of an annotation into document space.
public ExaminerResults ExaminePdf(Stream stm)
    ExaminerResults res = null;
    try {
        res = ExaminerResults.FromStream(stm, null, null);
        return res;
    catch (IncorrectPasswordException) {
        while (true) {
            string password = GetPasswordFromUser();
            if (password == null) return null; // canceled
            try {
                res = ExaminerResults.FromStream(stm, password, null);
                return res;
            catch (IncorrectPasswordException) { }
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
See Also