Class AlphaRasterImage

  • All Implemented Interfaces:
    PDFImage

    public class AlphaRasterImage
    extends java.lang.Object
    implements PDFImage
    PDFImage implementation for alpha channel "images".
    • Constructor Summary

      Constructors 
      Constructor Description
      AlphaRasterImage​(java.lang.String k, java.awt.image.Raster alpha)
      Create a alpha channel image.
      AlphaRasterImage​(java.lang.String k, java.awt.image.RenderedImage image)
      Create a alpha channel image.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static java.awt.image.Raster getAlphaRaster​(java.awt.image.RenderedImage image)
      Extracts the Alpha Raster for the given image.
      int getBitsPerComponent()
      Get the bits per color component for this image.
      PDFDeviceColorSpace getColorSpace()
      Get the color space for this image.
      java.lang.String getFilterHint()
      Returns a hint in form of a String (Possible values from PDFFilterList) indicating which filter setup should be used to encode the object.
      int getHeight()
      Get the image height in pixels.
      PDFICCStream getICCStream()
      Get the ICC stream for this image.
      java.lang.String getKey()
      Key to look up XObject.
      java.lang.String getMask()
      Get the PDF reference for a bitmap mask.
      PDFFilter getPDFFilter()
      Get the PDF Filter to be applied to the image.
      java.lang.String getSoftMask()  
      PDFReference getSoftMaskReference()
      Get the PDF reference for a soft mask.
      PDFColor getTransparentColor()
      Get the transparent color.
      int getWidth()
      Get the image width in pixels.
      boolean isInverted()
      boolean isPS()
      Check if this image is a PostScript image.
      boolean isTransparent()
      Check if this image has a transparent color transparency.
      boolean multipleFiltersAllowed()
      Indicates whether multiple image filters are allowed; this is implemented because Adobe Reader does not like multiple FlateDecode filters applied to an image even though that allowed by the PDF spec; this is probable due to security concerns since many PDF malware exploits, like zip bombs, make use of a chain of FlateDecode filters.
      void outputContents​(java.io.OutputStream out)
      Writes the raw, unencoded contents of the image to a given output stream.
      void populateXObjectDictionary​(PDFDictionary dict)
      Populates the XObject's dictionary with additional values.
      void setup​(PDFDocument doc)
      Setup the PDF image for the current document.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • bitsPerComponent

        private int bitsPerComponent
      • alpha

        private java.awt.image.Raster alpha
      • key

        private java.lang.String key
    • Constructor Detail

      • AlphaRasterImage

        public AlphaRasterImage​(java.lang.String k,
                                java.awt.image.Raster alpha)
        Create a alpha channel image. Creates a new bitmap image with the given data.
        Parameters:
        k - the key to be used to lookup the image
        alpha - the alpha channel raster
      • AlphaRasterImage

        public AlphaRasterImage​(java.lang.String k,
                                java.awt.image.RenderedImage image)
        Create a alpha channel image. Extracts the alpha channel from the RenderedImage and creates a new bitmap image with the given data.
        Parameters:
        k - the key to be used to lookup the image
        image - the image (must have an alpha channel)
    • Method Detail

      • getAlphaRaster

        private static java.awt.image.Raster getAlphaRaster​(java.awt.image.RenderedImage image)
        Extracts the Alpha Raster for the given image. Also works for IndexColorModel.
      • setup

        public void setup​(PDFDocument doc)
        Setup the PDF image for the current document. Some image formats may need to access the document (for example to add an ICC profile to the document).
        Specified by:
        setup in interface PDFImage
        Parameters:
        doc - the PDF parent document (todo) Remove this and delegate to the XObject
      • getKey

        public java.lang.String getKey()
        Key to look up XObject. This should be a unique key to refer to the image.
        Specified by:
        getKey in interface PDFImage
        Returns:
        the key for this image
      • getWidth

        public int getWidth()
        Get the image width in pixels.
        Specified by:
        getWidth in interface PDFImage
        Returns:
        the image width
      • getHeight

        public int getHeight()
        Get the image height in pixels.
        Specified by:
        getHeight in interface PDFImage
        Returns:
        the image height
      • getColorSpace

        public PDFDeviceColorSpace getColorSpace()
        Get the color space for this image. Possible results are: DeviceGray, DeviceRGB, or DeviceCMYK
        Specified by:
        getColorSpace in interface PDFImage
        Returns:
        the color space
      • getBitsPerComponent

        public int getBitsPerComponent()
        Get the bits per color component for this image.
        Specified by:
        getBitsPerComponent in interface PDFImage
        Returns:
        the bits per component
      • isTransparent

        public boolean isTransparent()
        Check if this image has a transparent color transparency. Classes such as PDFImageXObject rely on this simple binary model of transparency (e.g. compare to Transparency) in order to render color key masking (see PDF Spec 1.7 Chapter 8.9.6.4). Therefore only return true if image has fully transparent colors.
        Specified by:
        isTransparent in interface PDFImage
        Returns:
        true if it has at least one fully transparent color
      • getTransparentColor

        public PDFColor getTransparentColor()
        Get the transparent color.
        Specified by:
        getTransparentColor in interface PDFImage
        Returns:
        the transparent color for this image
      • getMask

        public java.lang.String getMask()
        Get the PDF reference for a bitmap mask.
        Specified by:
        getMask in interface PDFImage
        Returns:
        the PDF reference for the mask image
      • getSoftMask

        public java.lang.String getSoftMask()
        Returns:
        null (unless overridden)
      • getSoftMaskReference

        public PDFReference getSoftMaskReference()
        Get the PDF reference for a soft mask.
        Specified by:
        getSoftMaskReference in interface PDFImage
        Returns:
        the PDF reference for a soft mask image (or null if there's no soft mask)
      • isInverted

        public boolean isInverted()
        Specified by:
        isInverted in interface PDFImage
        Returns:
        true for CMYK images generated by Adobe Photoshop
      • outputContents

        public void outputContents​(java.io.OutputStream out)
                            throws java.io.IOException
        Writes the raw, unencoded contents of the image to a given output stream.
        Specified by:
        outputContents in interface PDFImage
        Parameters:
        out - OutputStream to write to
        Throws:
        java.io.IOException - if there creating stream
      • populateXObjectDictionary

        public void populateXObjectDictionary​(PDFDictionary dict)
        Populates the XObject's dictionary with additional values. The values are added to the dictionary after all the values obtained from other methods from this interface have been put into the dictionary. That allows to override certain values.
        Specified by:
        populateXObjectDictionary in interface PDFImage
        Parameters:
        dict - the dictionary to fill
      • getICCStream

        public PDFICCStream getICCStream()
        Get the ICC stream for this image.
        Specified by:
        getICCStream in interface PDFImage
        Returns:
        the ICC stream for this image if any
      • isPS

        public boolean isPS()
        Check if this image is a PostScript image.
        Specified by:
        isPS in interface PDFImage
        Returns:
        true if this is a PostScript image
      • getFilterHint

        public java.lang.String getFilterHint()
        Returns a hint in form of a String (Possible values from PDFFilterList) indicating which filter setup should be used to encode the object.
        Specified by:
        getFilterHint in interface PDFImage
        Returns:
        the filter setup hint
      • getPDFFilter

        public PDFFilter getPDFFilter()
        Get the PDF Filter to be applied to the image.
        Specified by:
        getPDFFilter in interface PDFImage
        Returns:
        the PDF Filter or null
      • multipleFiltersAllowed

        public boolean multipleFiltersAllowed()
        Indicates whether multiple image filters are allowed; this is implemented because Adobe Reader does not like multiple FlateDecode filters applied to an image even though that allowed by the PDF spec; this is probable due to security concerns since many PDF malware exploits, like zip bombs, make use of a chain of FlateDecode filters.
        Specified by:
        multipleFiltersAllowed in interface PDFImage