Class PdfAChecker

java.lang.Object
com.itextpdf.pdfa.checker.PdfAChecker
Direct Known Subclasses:
PdfA1Checker

public abstract class PdfAChecker extends Object
An abstract class that will run through all necessary checks defined in the different PDF/A standards and levels. A number of common checks are executed in this class, while standard-dependent specifications are implemented in the available subclasses. The standard that is followed is the series of ISO 19005 specifications, currently generations 1 through 3. The ZUGFeRD standard is derived from ISO 19005-3. While it is possible to subclass this method and implement its abstract methods in client code, this is not encouraged and will have little effect. It is not possible to plug custom implementations into iText, because iText should always refuse to create non-compliant PDF/A, which would be possible with client code implementations. Any future generations of the PDF/A standard and its derivates will get their own implementation in the iText 7 - pdfa project.
  • Field Details

    • ICC_COLOR_SPACE_RGB

      public static final String ICC_COLOR_SPACE_RGB
      The Red-Green-Blue color profile as defined by the International Color Consortium.
      See Also:
    • ICC_COLOR_SPACE_CMYK

      public static final String ICC_COLOR_SPACE_CMYK
      The Cyan-Magenta-Yellow-Key (black) color profile as defined by the International Color Consortium.
      See Also:
    • ICC_COLOR_SPACE_GRAY

      public static final String ICC_COLOR_SPACE_GRAY
      The Grayscale color profile as defined by the International Color Consortium.
      See Also:
    • ICC_DEVICE_CLASS_OUTPUT_PROFILE

      public static final String ICC_DEVICE_CLASS_OUTPUT_PROFILE
      The Output device class
      See Also:
    • ICC_DEVICE_CLASS_MONITOR_PROFILE

      public static final String ICC_DEVICE_CLASS_MONITOR_PROFILE
      The Monitor device class
      See Also:
    • maxGsStackDepth

      public static final int maxGsStackDepth
      The maximum Graphics State stack depth in PDF/A documents, i.e. the maximum number of graphics state operators with code q that may be opened (i.e. not yet closed by a corresponding Q) at any point in a content stream sequence. Defined as 28 by PDF/A-1 section 6.1.12, by referring to the PDF spec Appendix C table 1 "architectural limits".
      See Also:
    • conformanceLevel

      protected PdfAConformanceLevel conformanceLevel
    • pdfAOutputIntentColorSpace

      protected String pdfAOutputIntentColorSpace
    • gsStackDepth

      protected int gsStackDepth
    • rgbIsUsed

      protected boolean rgbIsUsed
    • cmykIsUsed

      protected boolean cmykIsUsed
    • grayIsUsed

      protected boolean grayIsUsed
    • checkedObjects

      protected Set<PdfObject> checkedObjects
      Contains some objects that are already checked. NOTE: Not all objects that were checked are stored in that set. This set is used for avoiding double checks for actions, signatures, xObjects and page objects; and for letting those objects to be manually flushed. Use this mechanism carefully: objects that are able to be changed (or at least if object's properties that shall be checked are able to be changed) shouldn't be marked as checked if they are not to be flushed immediately.
    • checkedObjectsColorspace

      protected Map<PdfObject,PdfColorSpace> checkedObjectsColorspace
  • Constructor Details

    • PdfAChecker

      protected PdfAChecker (PdfAConformanceLevel conformanceLevel)
      Creates a PdfAChecker with the required conformance level.
      Parameters:
      conformanceLevel - the required conformance level
  • Method Details

    • checkDocument

      public void checkDocument (PdfCatalog catalog)
      This method checks a number of document-wide requirements of the PDF/A standard. The algorithms of some of these checks vary with the PDF/A level and thus are implemented in subclasses; others are implemented as private methods in this class.
      Parameters:
      catalog - The catalog being checked
    • checkSinglePage

      public void checkSinglePage (PdfPage page)
      This method checks all requirements that must be fulfilled by a page in a PDF/A document.
      Parameters:
      page - the page that must be checked
    • checkPdfObject

      public void checkPdfObject (PdfObject obj)
      This method checks the requirements that must be fulfilled by a COS object in a PDF/A document.
      Parameters:
      obj - the COS object that must be checked
    • getConformanceLevel

      public PdfAConformanceLevel getConformanceLevel()
      Gets the PdfAConformanceLevel for this file.
      Returns:
      the defined conformance level for this document.
    • isFullCheckMode

      public boolean isFullCheckMode()
      In full check mode all objects will be tested for ISO conformance. If full check mode is switched off objects which were not modified might be skipped to speed up the validation of the document
      Returns:
      true if full check mode is switched on
      See Also:
    • setFullCheckMode

      public void setFullCheckMode (boolean fullCheckMode)
      In full check mode all objects will be tested for ISO conformance. If full check mode is switched off objects which were not modified might be skipped to speed up the validation of the document
      Parameters:
      fullCheckMode - is a new value for full check mode switcher
      See Also:
    • objectIsChecked

      public boolean objectIsChecked (PdfObject object)
      Remembers which objects have already been checked, in order to avoid redundant checks.
      Parameters:
      object - the object to check
      Returns:
      whether or not the object has already been checked
    • checkTagStructureElement

      public void checkTagStructureElement (PdfObject obj)
      This method checks compliance of the tag structure elements, such as struct elements or parent tree entries.
      Parameters:
      obj - an object that represents tag structure element.
    • checkSignature

      public void checkSignature (PdfDictionary signatureDict)
      This method checks compliance of the signature dictionary
      Parameters:
      signatureDict - a PdfDictionary containing the signature.
    • checkCanvasStack

      public abstract void checkCanvasStack (char stackOperation)
      This method checks compliance with the graphics state architectural limitation, explained by maxGsStackDepth.
      Parameters:
      stackOperation - the operation to check the graphics state counter for
    • checkInlineImage

      public abstract void checkInlineImage (PdfStream inlineImage, PdfDictionary currentColorSpaces)
      This method checks compliance with the inline image restrictions in the PDF/A specs, specifically filter parameters.
      Parameters:
      inlineImage - a PdfStream containing the inline image
      currentColorSpaces - a PdfDictionary containing the color spaces used in the document
    • checkColor

      public abstract void checkColor (Color color, PdfDictionary currentColorSpaces, Boolean fill, PdfStream contentStream)
      This method checks compliance with the color restrictions imposed by the available color spaces in the document. This method will be abstract in update 7.2
      Parameters:
      color - the color to check
      currentColorSpaces - a PdfDictionary containing the color spaces used in the document
      fill - whether the color is used for fill or stroke operations
      contentStream - current content stream
    • checkColorSpace

      public abstract void checkColorSpace (PdfColorSpace colorSpace, PdfDictionary currentColorSpaces, boolean checkAlternate, Boolean fill)
      This method performs a range of checks on the given color space, depending on the type and properties of that color space.
      Parameters:
      colorSpace - the color space to check
      currentColorSpaces - a PdfDictionary containing the color spaces used in the document
      checkAlternate - whether or not to also check the parent color space
      fill - whether the color space is used for fill or stroke operations
    • checkRenderingIntent

      public abstract void checkRenderingIntent (PdfName intent)
      Checks whether the rendering intent of the document is within the allowed range of intents. This is defined in ISO 19005-1 section 6.2.9, and unchanged in newer generations of the PDF/A specification.
      Parameters:
      intent - the intent to be analyzed
    • checkFontGlyphs

      public abstract void checkFontGlyphs (PdfFont font, PdfStream contentStream)
      Performs a check of the each font glyph as a Form XObject. See ISO 19005-2 Annex A.5. This only applies to type 3 fonts. This method will be abstract in update 7.2
      Parameters:
      font - PdfFont to be checked
      contentStream - stream containing checked font
    • checkExtGState

      public abstract void checkExtGState (CanvasGraphicsState extGState, PdfStream contentStream)
      Performs a number of checks on the graphics state, among others ISO 19005-1 section 6.2.8 and 6.4 and ISO 19005-2 section 6.2.5 and 6.2.10. This method will be abstract in the update 7.2
      Parameters:
      extGState - the graphics state to be checked
      contentStream - current content stream
    • checkFont

      public abstract void checkFont (PdfFont pdfFont)
      Performs a number of checks on the font. See ISO 19005-1 section 6.3, ISO 19005-2 and ISO 19005-3 section 6.2.11. Be aware that not all constraints defined in the ISO are checked in this method, for most of them we consider that iText always creates valid fonts.
      Parameters:
      pdfFont - font to be checked
    • checkXrefTable

      public abstract void checkXrefTable (PdfXrefTable xrefTable)
      Verify the conformity of the cross-reference table.
      Parameters:
      xrefTable - is the Xref table
    • checkContentStream

      protected abstract void checkContentStream (PdfStream contentStream)
      Attest content stream conformance with appropriate specification. Throws PdfAConformanceException if any discrepancy was found
      Parameters:
      contentStream - is a content stream to validate
    • checkContentStreamObject

      protected abstract void checkContentStreamObject (PdfObject object)
      Verify the conformity of the operand of content stream with appropriate specification. Throws PdfAConformanceException if any discrepancy was found
      Parameters:
      object - is an operand of content stream to validate
    • getMaxNumberOfIndirectObjects

      protected abstract long getMaxNumberOfIndirectObjects()
      Retrieve maximum allowed number of indirect objects in conforming document.
      Returns:
      maximum allowed number of indirect objects
    • getForbiddenActions

      protected abstract Set<PdfName> getForbiddenActions()
      Retrieve forbidden actions in conforming document.
      Returns:
      set of PdfName with forbidden actions
    • getAllowedNamedActions

      protected abstract Set<PdfName> getAllowedNamedActions()
      Retrieve allowed actions in conforming document.
      Returns:
      set of PdfName with allowed named actions
    • checkAction

      protected abstract void checkAction (PdfDictionary action)
      Checks if the action is allowed.
      Parameters:
      action - to be checked
    • checkAnnotation

      protected abstract void checkAnnotation (PdfDictionary annotDic)
      Verify the conformity of the annotation dictionary.
      Parameters:
      annotDic - the annotation PdfDictionary to be checked
    • checkCatalogValidEntries

      protected abstract void checkCatalogValidEntries (PdfDictionary catalogDict)
      Checks if entries in catalog dictionary are valid.
      Parameters:
      catalogDict - the catalog PdfDictionary to be checked
    • checkColorsUsages

      protected abstract void checkColorsUsages()
      Verify the conformity of used color spaces.
    • checkImage

      protected abstract void checkImage (PdfStream image, PdfDictionary currentColorSpaces)
      Verify the conformity of the given image.
      Parameters:
      image - the image to check
      currentColorSpaces - the PdfDictionary containing the color spaces used in the document
    • checkFileSpec

      protected abstract void checkFileSpec (PdfDictionary fileSpec)
      Verify the conformity of the file specification dictionary.
      Parameters:
      fileSpec - the PdfDictionary containing file specification to be checked
    • checkForm

      protected abstract void checkForm (PdfDictionary form)
      Verify the conformity of the form dictionary.
      Parameters:
      form - the form PdfDictionary to be checked
    • checkFormXObject

      protected abstract void checkFormXObject (PdfStream form)
      Verify the conformity of the form XObject dictionary.
      Parameters:
      form - the PdfStream to check
    • checkLogicalStructure

      protected abstract void checkLogicalStructure (PdfDictionary catalog)
      Performs a number of checks on the logical structure of the document.
      Parameters:
      catalog - the catalog PdfDictionary to check
    • checkMetaData

      protected abstract void checkMetaData (PdfDictionary catalog)
      Performs a number of checks on the metadata of the document.
      Parameters:
      catalog - the catalog PdfDictionary to check
    • checkNonSymbolicTrueTypeFont

      protected abstract void checkNonSymbolicTrueTypeFont (PdfTrueTypeFont trueTypeFont)
      Verify the conformity of the non-symbolic TrueType font.
      Parameters:
      trueTypeFont - the PdfTrueTypeFont to check
    • checkOutputIntents

      protected abstract void checkOutputIntents (PdfDictionary catalog)
      Verify the conformity of the output intents array in the catalog dictionary.
      Parameters:
      catalog - the PdfDictionary to check
    • checkPageObject

      protected abstract void checkPageObject (PdfDictionary page, PdfDictionary pageResources)
      Verify the conformity of the page dictionary.
      Parameters:
      page - the PdfDictionary to check
      pageResources - the page's resources dictionary
    • checkPageSize

      protected abstract void checkPageSize (PdfDictionary page)
      Checks the allowable size of the page.
      Parameters:
      page - the PdfDictionary of page which size being checked
    • checkPdfArray

      protected abstract void checkPdfArray (PdfArray array)
      Verify the conformity of the PDF array.
      Parameters:
      array - the PdfArray to check
    • checkPdfDictionary

      protected abstract void checkPdfDictionary (PdfDictionary dictionary)
      Verify the conformity of the PDF dictionary.
      Parameters:
      dictionary - the PdfDictionary to check
    • checkPdfName

      protected abstract void checkPdfName (PdfName name)
      Verify the conformity of the PDF name.
      Parameters:
      name - the PdfName to check
    • checkPdfNumber

      protected abstract void checkPdfNumber (PdfNumber number)
      Verify the conformity of the PDF number.
      Parameters:
      number - the PdfNumber to check
    • checkPdfStream

      protected abstract void checkPdfStream (PdfStream stream)
      Verify the conformity of the PDF stream.
      Parameters:
      stream - the PdfStream to check
    • checkPdfString

      protected abstract void checkPdfString (PdfString string)
      Verify the conformity of the PDF string.
      Parameters:
      string - the PdfString to check
    • checkSymbolicTrueTypeFont

      protected abstract void checkSymbolicTrueTypeFont (PdfTrueTypeFont trueTypeFont)
      Verify the conformity of the symbolic TrueType font.
      Parameters:
      trueTypeFont - the PdfTrueTypeFont to check
    • checkTrailer

      protected abstract void checkTrailer (PdfDictionary trailer)
      Verify the conformity of the trailer dictionary.
      Parameters:
      trailer - the PdfDictionary of trailer to check
    • checkPageTransparency

      protected abstract void checkPageTransparency (PdfDictionary pageDict, PdfDictionary pageResources)
      Verify the conformity of the page transparency.
      Parameters:
      pageDict - the PdfDictionary contains contents for transparency to be checked
      pageResources - the PdfDictionary contains resources for transparency to be checked
    • checkResources

      protected void checkResources (PdfDictionary resources)
      Verify the conformity of the resources dictionary.
      Parameters:
      resources - the PdfDictionary to be checked
    • checkFlag

      protected static boolean checkFlag (int flags, int flag)
      Checks if the specified flag is set.
      Parameters:
      flags - a set of flags specifying various characteristics of the PDF object
      flag - to be checked
      Returns:
      true if the specified flag is set
    • checkStructure

      protected static boolean checkStructure (PdfAConformanceLevel conformanceLevel)
      Checks conformance level of PDF/A standard.
      Parameters:
      conformanceLevel - the PdfAConformanceLevel to be checked
      Returns:
      true if the specified conformanceLevel is a for PDF/A-1, PDF/A-2 or PDF/A-3
    • isContainsTransparencyGroup

      protected static boolean isContainsTransparencyGroup (PdfDictionary dictionary)
      Checks whether the specified dictionary has a transparency group.
      Parameters:
      dictionary - the PdfDictionary to check
      Returns:
      true if and only if the specified dictionary has a PdfName.Group key and its value is a dictionary with PdfName.Transparency subtype
    • isAlreadyChecked

      protected boolean isAlreadyChecked (PdfDictionary dictionary)
      Checks whether the specified dictionary was already checked.
      Parameters:
      dictionary - the PdfDictionary to check
      Returns:
      true if the specified dictionary was checked
    • checkResourcesOfAppearanceStreams

      protected void checkResourcesOfAppearanceStreams (PdfDictionary appearanceStreamsDict)
      Checks resources of the appearance streams.
      Parameters:
      appearanceStreamsDict - the dictionary with appearance streams to check.
    • checkAppearanceStream

      protected void checkAppearanceStream (PdfStream appearanceStream)
      Check single annotation appearance stream.
      Parameters:
      appearanceStream - the PdfStream to check