Package org.jpedal

Class PdfDecoder

  • All Implemented Interfaces:
    ImageObserver, MenuContainer, Pageable, Printable, Serializable, Accessible, org.jpedal.PdfDecoderInt

    public class PdfDecoder
    extends JPanel
    implements Printable, Pageable, org.jpedal.PdfDecoderInt
    Provides an object to decode pdf files, view and print in Swing and provide a rasterizer if required - Normal usage is to create instance of PdfDecoder and access via public methods.
    If you only want to rasterize or extracxt text and images you can use PdfDecoderServer
    Examples showing usage in org.jpedal.examples
    We recommend you access JPedal using only public methods listed in API
    See Also:
    Serialized Form
    • Field Detail

      • version

        public static final String version
      • swingPrinter

        public final org.jpedal.parser.SwingPrinter swingPrinter
      • pages

        public org.jpedal.display.Display pages
    • Constructor Detail

      • PdfDecoder

        public PdfDecoder​(boolean newRender)
        Recommend way to create a PdfDecoder if no rendering of page may be required
        Otherwise use PdfDecoder()
        Parameters:
        newRender - flag to show if pages are being rendered (true) or only extraction taking place (flase).
      • PdfDecoder

        public PdfDecoder()
        Recommend way to create a PdfDecoder for renderer only viewer (not recommended for server extraction only processes)
    • Method Detail

      • setEncryptTempFiles

        public void setEncryptTempFiles()
        ensure that files are always encrypted if cached to disk regardless of whether file has a password set
        Specified by:
        setEncryptTempFiles in interface org.jpedal.PdfDecoderInt
      • isOpen

        public boolean isOpen()
        see if file open - may not be open if user interrupted open or problem encountered
        Specified by:
        isOpen in interface org.jpedal.PdfDecoderInt
      • getMarkedContent

        public Document getMarkedContent()
        return markedContent object as XML Document
        Specified by:
        getMarkedContent in interface org.jpedal.PdfDecoderInt
        Returns:
        Document containing XML structure with data
      • getExternalHandler

        public org.jpedal.external.ExternalHandlers getExternalHandler()
        Specified by:
        getExternalHandler in interface org.jpedal.PdfDecoderInt
      • getDisplayRotation

        public int getDisplayRotation()
        current page rotation (in addition to rotation in file) in degrees So if user turns page by 90 degrees, value will be 90
        Specified by:
        getDisplayRotation in interface org.jpedal.PdfDecoderInt
        Returns:
        int current display rotation
      • getPageNumber

        public int getPageNumber()
        current logical page number
        Specified by:
        getPageNumber in interface org.jpedal.PdfDecoderInt
        Returns:
        int current page number
      • setDisplayRotation

        public void setDisplayRotation​(int newRotation)
        Specified by:
        setDisplayRotation in interface org.jpedal.PdfDecoderInt
      • getPages

        public org.jpedal.display.Display getPages()
        Specified by:
        getPages in interface org.jpedal.PdfDecoderInt
      • getlastPageDecoded

        public int getlastPageDecoded()
        return page number for last page decoded (only use in SingleDisplay mode)
        Specified by:
        getlastPageDecoded in interface org.jpedal.PdfDecoderInt
      • getDisplayOffsets

        public org.jpedal.display.DisplayOffsets getDisplayOffsets()
        Specified by:
        getDisplayOffsets in interface org.jpedal.PdfDecoderInt
      • getPageInfo

        public Iterator<Integer> getPageInfo​(int type)
        return details on page for type (defined in org.jpedal.constants.PageInfo) or null if no values Unrecognised key will throw a RunTime exception
        null returned if JPedal not clear on result
        Specified by:
        getPageInfo in interface org.jpedal.PdfDecoderInt
      • getOutlineData

        public org.jpedal.objects.outlines.OutlineData getOutlineData()
        provide direct access to outlineData object
        Specified by:
        getOutlineData in interface org.jpedal.PdfDecoderInt
        Returns:
        OutlineData outline of current file
      • isLoadingLinearizedPDF

        public boolean isLoadingLinearizedPDF()
        track if file still loaded in background
        Specified by:
        isLoadingLinearizedPDF in interface org.jpedal.PdfDecoderInt
        Returns:
        boolean true if PDF is linearized
      • setScaling

        public void setScaling​(float scaleFactor)
        allow user to adjust scaling factor on page
        Specified by:
        setScaling in interface org.jpedal.PdfDecoderInt
        Parameters:
        scaleFactor -
      • getPageAlignment

        public int getPageAlignment()
        return type of alignment for pages if smaller than panel - see options in Display class.
        Specified by:
        getPageAlignment in interface org.jpedal.PdfDecoderInt
      • init

        public static void init​(boolean newEmbedWidthData)
        This will be needed for text extraction and set to true as paramter makes sure widths included in text stream
        Parameters:
        newEmbedWidthData - - flag to embed width data in text fragments for use by grouping algorithms
      • disposeAllStatic

        public static void disposeAllStatic()
        remove all static elements - only do once completely finished with JPedal as will not be reinitialised
      • dispose

        public final void dispose()
        convenience method to remove all items from memory If you wish to clear all static objects as well, you will also need to call disposeAllStatic()
        Specified by:
        dispose in interface org.jpedal.PdfDecoderInt
      • closePdfFile

        public final void closePdfFile()
        convenience method to close the current PDF file and release all resources/delete any temporary files
        Specified by:
        closePdfFile in interface org.jpedal.PdfDecoderInt
      • getPdfBackgroundData

        public final org.jpedal.objects.PdfData getPdfBackgroundData()
        NOT PART OF API

        Access should not generally be required to this class. Please look at getBackgroundGroupingObject() - provide method for outside class to get data object containing text and metrics of text. - Viewer can only access data for finding on page

        Returns:
        PdfData object containing text content from PDF
      • getPdfData

        public final org.jpedal.objects.PdfData getPdfData()
                                                    throws PdfException
        Access should not generally be required to this class but used in examples. Returns the PdfData object containing raw content from page
        Specified by:
        getPdfData in interface org.jpedal.PdfDecoderInt
        Returns:
        PdfData object containing text content from PDF
        Throws:
        PdfException
      • hasOutline

        public final boolean hasOutline()
        flag to show if PDF document contains an outline
        Specified by:
        hasOutline in interface org.jpedal.PdfDecoderInt
      • getOutlineAsXML

        public final Document getOutlineAsXML()
        return a DOM document containing the PDF Outline object as a DOM Document - may return null
        Specified by:
        getOutlineAsXML in interface org.jpedal.PdfDecoderInt
      • getPdfPageData

        public final org.jpedal.objects.PdfPageData getPdfPageData()
        Provides method for outside class to get data object containing information on the page for calculating grouping
        Please note: Structure of PdfPageData is not guaranteed to remain constant. Please contact IDRsolutions for advice.
        Specified by:
        getPdfPageData in interface org.jpedal.PdfDecoderInt
        Returns:
        PdfPageData object
      • setPagePrintRange

        public void setPagePrintRange​(int start,
                                      int end)
                               throws PdfException
        set page range (inclusive) - If end is less than start it will print them backwards (invalid range will throw PdfException)
        Parameters:
        start - start of page range
        end - end of page range
        Throws:
        PdfException - when range is invalid
      • setTextPrint

        public void setTextPrint​(int textPrint)
        tells program to try and use Java's font printing if possible as work around for issue with PCL printing - values are PdfDecoder.TEXTGLYPHPRINT (use Java to rasterize font if available) PdfDecoder.TEXTSTRINGPRINT( print as text not raster - fastest option) PdfDecoder.NOTEXTPRINT (default - highest quality)
        Parameters:
        textPrint - text print
      • useLogicalPrintOffset

        public void useLogicalPrintOffset​(int pagesPrinted)
        If you are printing PDFs using JPedal in your custom code, you may find pages missing, because JPedal does not know about these additional pages. This method allows you to tell JPedal you have already printed pagesPrinted
        Parameters:
        pagesPrinted - pages printed
      • print

        public int print​(Graphics graphics,
                         PageFormat pageFormat,
                         int page)
                  throws PrinterException
        Implements the standard Java printing functionality.
        Specified by:
        print in interface Printable
        Parameters:
        graphics - the context into which the page is drawn
        pageFormat - the size and orientation of the page being drawn
        page - the zero based index of the page to be drawn
        Returns:
        int Printable.PAGE_EXISTS or Printable.NO_SUCH_PAGE
        Throws:
        PrinterException - PrinterException
      • getPageAsHiRes

        public BufferedImage getPageAsHiRes​(int pageIndex)
                                     throws PdfException
        Specified by:
        getPageAsHiRes in interface org.jpedal.PdfDecoderInt
        Parameters:
        pageIndex - number of the page we want to extract
        Returns:
        image of the extracted page
        Throws:
        PdfException - Page size is defined by CropBox see http://files.idrsolutions.com/samplecode/org/jpedal/examples/images/ConvertPagesToHiResImages.java.html for full details
      • getPageAsHiRes

        public BufferedImage getPageAsHiRes​(int pageIndex,
                                            Map<Integer,​Object> params)
                                     throws PdfException
        Specified by:
        getPageAsHiRes in interface org.jpedal.PdfDecoderInt
        Parameters:
        pageIndex - number of the page we want to extract
        params - list of values to override static settings in modifyJPedalParameters for this instance only
        Returns:
        image of the extracted page
        Throws:
        PdfException - Page size is defined by CropBox see http://files.idrsolutions.com/samplecode/org/jpedal/examples/images/ConvertPagesToHiResImages.java.html for full details
      • getPageAsHiRes

        public BufferedImage getPageAsHiRes​(int pageIndex,
                                            Map<Integer,​Object> params,
                                            boolean isTransparent)
                                     throws PdfException
        Specified by:
        getPageAsHiRes in interface org.jpedal.PdfDecoderInt
        Parameters:
        pageIndex - number of the page we want to extract
        params - list of values to override static settings in modifyJPedalParameters for this instance only
        isTransparent - - set if transparent or has background
        Returns:
        image of the extracted page
        Throws:
        PdfException - Page size is defined by CropBox see http://files.idrsolutions.com/samplecode/org/jpedal/examples/images/ConvertPagesToHiResImages.java.html for full details
      • getPageAsHiRes

        public BufferedImage getPageAsHiRes​(int pageIndex,
                                            boolean isTransparent)
                                     throws PdfException
        Specified by:
        getPageAsHiRes in interface org.jpedal.PdfDecoderInt
        Parameters:
        pageIndex - number of the page we want to extract
        Returns:
        image of the extracted page
        Throws:
        PdfException - Page size is defined by CropBox see http://files.idrsolutions.com/samplecode/org/jpedal/examples/images/ConvertPagesToHiResImages.java.html for full details
      • getPageAsImage

        public BufferedImage getPageAsImage​(int pageIndex)
                                     throws PdfException
        generate BufferedImage of a page in current file

        Page size is defined by CropBox see http://files.idrsolutions.com/samplecode/org/jpedal/examples/images/ConvertPagesToImages.java.html for full details

        Specified by:
        getPageAsImage in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • getPageAsImage

        public BufferedImage getPageAsImage​(int pageIndex,
                                            float scaling)
                                     throws PdfException
        generate BufferedImage of a page in current file

        Page size is defined by CropBox

        Specified by:
        getPageAsImage in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • getPageAsTransparentImage

        public BufferedImage getPageAsTransparentImage​(int pageIndex)
                                                throws PdfException
        generate BufferedImage of a page in current file

        Page size is defined by CropBox see http://files.idrsolutions.com/samplecode/org/jpedal/examples/images/ConvertPagesToImages.java.html for full details

        Specified by:
        getPageAsTransparentImage in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • renderPageOntoGraphics2D

        public void renderPageOntoGraphics2D​(float scaling,
                                             int pageIndex,
                                             Graphics2D g2,
                                             boolean useSwingThread)
        put page onto G2

        We do not recommed using this method unless you explicitly need access to direct G2 object. Please use getPageAsImage/HiRes methods

        useSwingThread should be true unless you are using it on a server

        Parameters:
        scaling - scale to use
        pageIndex - page to render
        useSwingThread - true if swing thread should be used
        g2 - graphics to be rendered on
      • getHiResUpscaleFactor

        public float getHiResUpscaleFactor()
        return scaleup factor applied to last Hires image of page generated

        negative values mean no upscaling applied and should be ignored

        Specified by:
        getHiResUpscaleFactor in interface org.jpedal.PdfDecoderInt
        Returns:
        float hires upscale factor
      • flushObjectValues

        public final void flushObjectValues​(boolean reinit)
        provide method for outside class to clear store of objects once written out to reclaim memory
        Specified by:
        flushObjectValues in interface org.jpedal.PdfDecoderInt
        Parameters:
        reinit - lag to show if image data flushed as well
      • getPdfImageData

        public final org.jpedal.objects.PdfImageData getPdfImageData()
        provide method for outside class to get data object containing images

        Please look at examples for usage

        Specified by:
        getPdfImageData in interface org.jpedal.PdfDecoderInt
        Returns:
        PdfImageData containing image metadata
      • getPdfBackgroundImageData

        public final org.jpedal.objects.PdfImageData getPdfBackgroundImageData()
        provide method for outside class to get data object containing images.

        Please look at examples for usage

        Returns:
        PdfImageData containing image metadata
      • setRenderMode

        public final void setRenderMode​(int mode)
        set render mode to state what is displayed onscreen (ie RENDERTEXT,RENDERIMAGES) - only generally required if you do not wish to show all objects on screen (default is all). Add values together to combine settings.
        Specified by:
        setRenderMode in interface org.jpedal.PdfDecoderInt
      • setExtractionMode

        public final void setExtractionMode​(int mode)
        set extraction mode telling JPedal what to extract - (TEXT,RAWIMAGES,FINALIMAGES - add together to combine) - See org.jpedal.examples for specific extraction examples
        Specified by:
        setExtractionMode in interface org.jpedal.PdfDecoderInt
      • modifyNonstaticJPedalParameters

        public void modifyNonstaticJPedalParameters​(Map<Integer,​Object> values)
                                             throws PdfException
        allow user to alter certain values in software such as Colour,

        Please note all Color and text highlighting values are static and common across the JVM

        Specified by:
        modifyNonstaticJPedalParameters in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • modifyJPedalParameters

        public static void modifyJPedalParameters​(Map<Integer,​Object> values)
                                           throws PdfException
        allow user to alter certain values in software such as Colour,

        If you are using decoder.getPageAsHiRes() after passing additional parameters into JPedal using the static method PdfDecoder.modifyJPedalParameters(), then getPageAsHiRes() wont necessarily be thread safe. If you want to use getPageAsHiRes() and pass in additional parameters, in a thread safe mannor, please use the method getPageAsHiRes(int pageIndex, Map params) or getPageAsHiRes(int pageIndex, Map params, boolean isTransparent) and pass the additional parameters in directly to the getPageAsHiRes() method without calling PdfDecoder.modifyJPedalParameters() first.

        Please see http://files.idrsolutions.com/samplecode/org/jpedal/examples/images/ConvertPagesToHiResImages.java.html for example of usage

        Please note all Color and text highlighting values except page colour are static and common across the JVM

        Parameters:
        values - Map of Jpedal Parameters
        Throws:
        PdfException - PdfException
      • getFileInformationData

        public final org.jpedal.objects.PdfFileInformation getFileInformationData()
        method to return null or object giving access info fields and metadata.
        Specified by:
        getFileInformationData in interface org.jpedal.PdfDecoderInt
      • setExtractionMode

        public final void setExtractionMode​(int mode,
                                            float scaling)
        Please do not use for general usage. Use setPageParameters(scalingValue, pageNumber) to set page scaling
        Specified by:
        setExtractionMode in interface org.jpedal.PdfDecoderInt
      • getDPIFactory

        public org.jpedal.utils.DPIFactory getDPIFactory()
        return handle on PDFFactory which adjusts display size so matches size in Acrobat
        Specified by:
        getDPIFactory in interface org.jpedal.PdfDecoderInt
        Returns:
        DPIFactory
      • setPageParameters

        public void setPageParameters​(float scaling,
                                      int pageNumber)
        initialise panel and set size to fit PDF page
        intializes display with rotation set to the default, specified in the PDF document scaling value of -1 means keep existing setting
        Specified by:
        setPageParameters in interface org.jpedal.PdfDecoderInt
      • setPageParameters

        public void setPageParameters​(float scaling,
                                      int pageNumber,
                                      int newRotation)
        calls setPageParameters(scaling,pageNumber) after setting rotation to draw page
        Specified by:
        setPageParameters in interface org.jpedal.PdfDecoderInt
      • setStatusBarObject

        public void setStatusBarObject​(org.jpedal.io.StatusBar statusBar)
        Not part of API - used internally

        set status bar to use when decoding a page - StatusBar provides a GUI object to display progress and messages.

        Specified by:
        setStatusBarObject in interface org.jpedal.PdfDecoderInt
      • waitForDecodingToFinish

        public void waitForDecodingToFinish()
        wait for decoding to finish
        Specified by:
        waitForDecodingToFinish in interface org.jpedal.PdfDecoderInt
      • setPreviewThumbnail

        public void setPreviewThumbnail​(BufferedImage previewImage,
                                        String previewText)
        internal method used by Viewer to provide preview of PDF in Viewer
        Specified by:
        setPreviewThumbnail in interface org.jpedal.PdfDecoderInt
      • getDynamicRenderer

        public org.jpedal.render.DynamicVectorRenderer getDynamicRenderer()
        Not part of API - used internally

        gets DynamicVector Object

        Specified by:
        getDynamicRenderer in interface org.jpedal.PdfDecoderInt
      • getDynamicRenderer

        public org.jpedal.render.DynamicVectorRenderer getDynamicRenderer​(boolean reset)
        Not part of API - used internally

        gets DynamicVector Object - NOT PART OF API and subject to change (DO NOT USE)

        Specified by:
        getDynamicRenderer in interface org.jpedal.PdfDecoderInt
      • setPDFCursor

        public void setPDFCursor​(Cursor c)
        Override setCursor so that we can turn on and off
        Parameters:
        c - Cursor
      • setDefaultCursor

        public void setDefaultCursor​(Cursor c)
        When changing the mouse mode we call this method to set the mouse mode default cursor
        Parameters:
        c - :: The cursor to set as the default
      • decodePage

        public final void decodePage​(int rawPage)
        decode a page, - page must be between 1 and PdfDecoder.getPageCount() - Will kill off if already running

        returns minus page if trying to open linearized page not yet available

        Specified by:
        decodePage in interface org.jpedal.PdfDecoderInt
      • isPageAvailable

        public boolean isPageAvailable​(int rawPage)
        see if page available if in Linearized mode or return true
        Specified by:
        isPageAvailable in interface org.jpedal.PdfDecoderInt
        Parameters:
        rawPage - page to be checked
        Returns:
        boolean true if page is available
      • printAdditionalObjectsOverPage

        public void printAdditionalObjectsOverPage​(int page,
                                                   int[] type,
                                                   Color[] colors,
                                                   Object[] obj)
        store objects to use on a print
        Parameters:
        page - page to be drawn over
        type - type used
        colors - colours used
        obj - Objects drawn
      • printAdditionalObjectsOverAllPages

        public void printAdditionalObjectsOverAllPages​(int[] type,
                                                       Color[] colors,
                                                       Object[] obj)
        store objects to use on a print
        Parameters:
        type - type used
        colors - colours used
        obj - objects drawn
      • drawAdditionalObjectsOverPage

        public void drawAdditionalObjectsOverPage​(int page,
                                                  int[] type,
                                                  Color[] colors,
                                                  Object[] obj)
                                           throws PdfException
        allow user to add grapical content on top of page - for display ONLY Additional calls will overwrite current settings on page ONLY works in SINGLE VIEW displaymode
        Specified by:
        drawAdditionalObjectsOverPage in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • flushAdditionalObjectsOnPage

        public void flushAdditionalObjectsOnPage​(int page)
        allow user to remove all additional grapical content from the page (only for display) ONLY works in SINGLE VIEW displaymode
        Specified by:
        flushAdditionalObjectsOnPage in interface org.jpedal.PdfDecoderInt
      • decodePageInBackground

        public final void decodePageInBackground​(int i)
        decode a page as a background thread (use other background methods to access data)

        we now recommend you use decodePage as this has been heavily optimised for speed

        Specified by:
        decodePageInBackground in interface org.jpedal.PdfDecoderInt
      • getPageCount

        public final int getPageCount()
        get page count of current PDF file
        Specified by:
        getPageCount in interface org.jpedal.PdfDecoderInt
      • isEncrypted

        public final boolean isEncrypted()
        return true if the current pdf file is encrypted
        check isFileViewable(),

        if file is encrypted and not viewable - a user specified password is needed.
        Specified by:
        isEncrypted in interface org.jpedal.PdfDecoderInt
      • isPasswordSupplied

        public final boolean isPasswordSupplied()
        show if encryption password has been supplied or set a certificate
        Specified by:
        isPasswordSupplied in interface org.jpedal.PdfDecoderInt
      • isFileViewable

        public boolean isFileViewable()
        show if encrypted file can be viewed,
        if false a password needs entering
        Specified by:
        isFileViewable in interface org.jpedal.PdfDecoderInt
      • isExtractionAllowed

        public boolean isExtractionAllowed()
        show if content can be extracted
        Specified by:
        isExtractionAllowed in interface org.jpedal.PdfDecoderInt
      • setEncryptionPassword

        public final void setEncryptionPassword​(String password)
                                         throws PdfException
        set a password for encryption - software will resolve if user or owner password- calls verifyAccess() from 2.74 so no separate call needed
        Specified by:
        setEncryptionPassword in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfArray

        public final void openPdfArray​(byte[] data,
                                       String password)
                                throws PdfException
        routine to open a byte stream containing the PDF file and extract key info from pdf file so we can decode any pages. Does not actually decode the pages themselves - By default files over 16384 bytes are cached to disk but this can be altered by setting PdfFileReader.alwaysCacheInMemory to a maximimum size or -1 (always keep in memory)
        Specified by:
        openPdfArray in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfArray

        public final void openPdfArray​(byte[] data)
                                throws PdfException
        routine to open a byte stream containing the PDF file and extract key info from pdf file so we can decode any pages. Does not actually decode the pages themselves - By default files over 16384 bytes are cached to disk but this can be altered by setting PdfFileReader.alwaysCacheInMemory to a maximimum size or -1 (always keep in memory)
        Specified by:
        openPdfArray in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfFile

        public void openPdfFile​(String filename,
                                Certificate certificate,
                                PrivateKey key)
                         throws PdfException
        allow user to open file using Certificate and key
        Specified by:
        openPdfFile in interface org.jpedal.PdfDecoderInt
        Parameters:
        filename - The name of the file to open
        certificate - certificate of PDF file
        key - private key of PDF file
        Throws:
        PdfException
      • openPdfFileFromStream

        public final void openPdfFileFromStream​(Object filename,
                                                String password)
                                         throws PdfException
        routine to open PDF file and extract key info from pdf file so we can decode any pages which also sets password. Does not actually decode the pages themselves. Also reads the form data. You must explicitly close your stream!!
        Specified by:
        openPdfFileFromStream in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfFile

        public final void openPdfFile​(String filename)
                               throws PdfException
        routine to open PDF file and extract key info from pdf file so we can decode any pages. Does not actually decode the pages themselves. Also reads the form data. You must explicitly close any open files with closePdfFile() to Java will not release all the memory
        Specified by:
        openPdfFile in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfFile

        public final void openPdfFile​(String filename,
                                      String password)
                               throws PdfException
        routine to open PDF file and extract key info from pdf file so we can decode any pages which also sets password. Does not actually decode the pages themselves. Also reads the form data. You must explicitly close any open files with closePdfFile() or Java will not release all the memory
        Specified by:
        openPdfFile in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfFileFromURL

        public final boolean openPdfFileFromURL​(String pdfUrl,
                                                boolean supportLinearized)
                                         throws PdfException
        routine to open PDF file via URL and extract key info from pdf file so we can decode any pages - Does not actually decode the pages themselves - Also reads the form data - Based on an idea by Peter Jacobsen
        You must explicitly close any open files with closePdfFile() so Java will release all the memory

        If boolean supportLinearized is true, method will return with true value once Linearized part read

        Specified by:
        openPdfFileFromURL in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfFileFromURL

        public final boolean openPdfFileFromURL​(String pdfUrl,
                                                boolean supportLinearized,
                                                String password)
                                         throws PdfException
        routine to open PDF file via URL and extract key info from pdf file so we can decode any pages - Does not actually decode the pages themselves - Also reads the form data - Based on an idea by Peter Jacobsen
        You must explicitly close any open files with closePdfFile() so Java will release all the memory

        If boolean supportLinearized is true, method will return with true value once Linearized part read

        Specified by:
        openPdfFileFromURL in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfFileFromInputStream

        public final boolean openPdfFileFromInputStream​(InputStream is,
                                                        boolean supportLinearized)
                                                 throws PdfException
        routine to open PDF file via InputStream and extract key info from pdf file so we can decode any pages - Does not actually decode the pages themselves -
        You must explicitly close any open files with closePdfFile() to Java will not release all the memory

        IMPORTANT NOTE: If the stream does not contain enough bytes, test for Linearization may fail If boolean supportLinearized is true, method will return with true value once Linearized part read (we recommend use you false unless you know exactly what you are doing)

        Specified by:
        openPdfFileFromInputStream in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • openPdfFileFromInputStream

        public final boolean openPdfFileFromInputStream​(InputStream is,
                                                        boolean supportLinearized,
                                                        String password)
                                                 throws PdfException
        routine to open PDF file via InputStream and extract key info from pdf file so we can decode any pages - Does not actually decode the pages themselves -
        You must explicitly close any open files with closePdfFile() to Java will not release all the memory

        IMPORTANT NOTE: If the stream does not contain enough bytes, test for Linearization may fail If boolean supportLinearized is true, method will return with true value once Linearized part read (we recommend use you false unless you know exactly what you are doing)

        Specified by:
        openPdfFileFromInputStream in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • getJPedalObject

        public Object getJPedalObject​(int id)
        Not part of API - used internally

        will return some dictionary values - if not a set value, will return null

        Specified by:
        getJPedalObject in interface org.jpedal.PdfDecoderInt
        Returns:
        Object jpedal object
      • setPageMode

        public void setPageMode​(int mode)
        Not part of API - used internally
        Specified by:
        setPageMode in interface org.jpedal.PdfDecoderInt
        Parameters:
        mode - page mode
      • isXMLExtraction

        public boolean isXMLExtraction()
        shows if text extraction is XML or pure text
        Specified by:
        isXMLExtraction in interface org.jpedal.PdfDecoderInt
      • useTextExtraction

        public void useTextExtraction()
        Controls type of text extraction if using JPedal purely for as a text extraction engine (otherwise do not touch) XML extraction is the default - pure text extraction is much faster for pure Text extraction, otherwise should not need to be set (for examples and more details see https://www.idrsolutions.com/how-to-extract-text-from-pdf-files/)
        Specified by:
        useTextExtraction in interface org.jpedal.PdfDecoderInt
      • useXMLExtraction

        public void useXMLExtraction()
        Controls type of text extraction if using JPedal purely for as a text extraction engine (otherwise do not touch) XML extraction is the default - pure text extraction is much faster for pure Text extraction, otherwise should not need to be set (for examples and more details see https://www.idrsolutions.com/how-to-extract-text-from-pdf-files/)
        Specified by:
        useXMLExtraction in interface org.jpedal.PdfDecoderInt
      • clearScreen

        public void clearScreen()
        remove all displayed objects for JPanel display (wipes current page)
      • setStreamCacheSize

        public void setStreamCacheSize​(int size)
        allows user to cache large objects to disk to avoid memory issues, setting minimum size in bytes (of uncompressed stream) above which object will be stored on disk if possible (default is -1 bytes which is all objects stored in memory) - Must be set before file opened.
        Specified by:
        setStreamCacheSize in interface org.jpedal.PdfDecoderInt
      • hasEmbeddedFonts

        public boolean hasEmbeddedFonts()
        shows if embedded fonts present on page just decoded
        Specified by:
        hasEmbeddedFonts in interface org.jpedal.PdfDecoderInt
      • getPageFromObjectRef

        public int getPageFromObjectRef​(String ref)
        given a ref, what is the page
        Specified by:
        getPageFromObjectRef in interface org.jpedal.PdfDecoderInt
        Parameters:
        ref - - PDF object reference
        Returns:
        - page number with being first page
      • getInfo

        public String getInfo​(int type)
        Returns list of the fonts used on the current page decoded or null type can be PdfDictionary.Font or PdfDictionary.Image
        Specified by:
        getInfo in interface org.jpedal.PdfDecoderInt
      • getFormRenderer

        public org.jpedal.objects.acroforms.AcroRenderer getFormRenderer()
        Allow user to access Forms renderer object if needed
        Specified by:
        getFormRenderer in interface org.jpedal.PdfDecoderInt
      • getJavaScript

        public org.jpedal.objects.Javascript getJavaScript()
        Allow user to access javascript object if needed
        Specified by:
        getJavaScript in interface org.jpedal.PdfDecoderInt
      • isPageSuccessful

        public boolean isPageSuccessful()
        shows if page reported any errors while printing. Log can be found with getPageFailureMessage()
        Returns:
        Returns the printingSuccessful.
      • getPageDecodeReport

        public String getPageDecodeReport()
        return any errors or other messages while calling decodePage() - zero length is no problems
        Specified by:
        getPageDecodeReport in interface org.jpedal.PdfDecoderInt
      • getPageFailureMessage

        public String getPageFailureMessage()
        Return String with all error messages from last printed (useful for debugging)
        Returns:
        String
      • getSelectedRectangleOnscreen

        public BufferedImage getSelectedRectangleOnscreen​(float t_x1,
                                                          float t_y1,
                                                          float t_x2,
                                                          float t_y2,
                                                          float scaling)
        If running in GUI mode, will extract a section of rendered page as BufferedImage -coordinates are PDF co-ordinates. If you wish to use hires image, you will need to enable hires image display with
        Specified by:
        getSelectedRectangleOnscreen in interface org.jpedal.PdfDecoderInt
        Parameters:
        t_x1 - x1 coordinate
        t_y1 - y1 coordinate
        t_x2 - x2 coordinate
        t_y2 - y2 coordinate
        scaling - scaling of rectangle
        Returns:
        pageErrorMessages - Any printer errors
      • getObjectStore

        public org.jpedal.io.ObjectStore getObjectStore()
        return object which provides access to file images and name
        Specified by:
        getObjectStore in interface org.jpedal.PdfDecoderInt
      • setObjectStore

        public void setObjectStore​(org.jpedal.io.ObjectStore newStore)
        return object which provides access to file images and name (use not recommended)
        Specified by:
        setObjectStore in interface org.jpedal.PdfDecoderInt
      • getDecoderOptions

        public org.jpedal.parser.DecoderOptions getDecoderOptions()
        Return decoder options as object for cases where value is needed externally and can't be static
        Specified by:
        getDecoderOptions in interface org.jpedal.PdfDecoderInt
        Returns:
        DecoderOptions object containing settings for this PdfDecoder object
      • getGroupingObject

        public org.jpedal.grouping.PdfGroupingAlgorithms getGroupingObject()
                                                                    throws PdfException
        returns object containing grouped text of last decoded page - if no page decoded, a Runtime exception is thrown to warn user Please see org.jpedal.examples.text for example code.
        Specified by:
        getGroupingObject in interface org.jpedal.PdfDecoderInt
        Throws:
        PdfException
      • getBackgroundGroupingObject

        public org.jpedal.grouping.PdfGroupingAlgorithms getBackgroundGroupingObject()
        returns object containing grouped text from background grouping - Please see org.jpedal.examples.text for example code
        Specified by:
        getBackgroundGroupingObject in interface org.jpedal.PdfDecoderInt
      • getPDFVersion

        public final String getPDFVersion()
        get PDF version in file
        Specified by:
        getPDFVersion in interface org.jpedal.PdfDecoderInt
      • resetForNonPDFPage

        public void resetForNonPDFPage​(int pageCount)
        used for non-PDF files to reset page
        Specified by:
        resetForNonPDFPage in interface org.jpedal.PdfDecoderInt
      • hasAllImages

        public boolean hasAllImages()
        flag to show if we suspect problem with some images
        Returns:
        boolean
      • getPageDecodeStatus

        public boolean getPageDecodeStatus​(int status)
        returns booleans based on flags in class org.jpedal.parser.DecoderStatus
        Specified by:
        getPageDecodeStatus in interface org.jpedal.PdfDecoderInt
        Parameters:
        status - status of decoding
        Returns:
        boolean based on flags in DecoderStatus
      • getPageDecodeStatusReport

        public String getPageDecodeStatusReport​(int status)
        get page statuses (flags in class org.jpedal.parser.DecoderStatus)
        Specified by:
        getPageDecodeStatusReport in interface org.jpedal.PdfDecoderInt
      • setPrintAutoRotateAndCenter

        public void setPrintAutoRotateAndCenter​(boolean value)
        set print mode (Matches Abodes Auto Print and rotate output
        Parameters:
        value - mode to be set
      • setPrintCurrentView

        public void setPrintCurrentView​(boolean value)
        tell printout to print only visible area in viewer if set
        Parameters:
        value - true if only visible area should be printed
      • addExternalHandler

        public void addExternalHandler​(Object newHandler,
                                       int type)
        not part of API used internally

        allows external helper classes to be added to JPedal to alter default functionality -

        Specified by:
        addExternalHandler in interface org.jpedal.PdfDecoderInt
        Parameters:
        newHandler - Handler to add
        type - type of handler
      • getExternalHandler

        public Object getExternalHandler​(int type)
        not part of API used internally

        allows external helper classes to be accessed if needed - also allows user to access SwingGUI if running full Viewer package - not all Options available to get - please contact IDRsolutions if you are looking to use

        Specified by:
        getExternalHandler in interface org.jpedal.PdfDecoderInt
        Parameters:
        type - type of handler
      • getIO

        public org.jpedal.io.PdfObjectReader getIO()
        allow access to PDF file
        Specified by:
        getIO in interface org.jpedal.PdfDecoderInt
        Returns:
        PdfObjectReader
      • getFileName

        public String getFileName()
        currently open PDF file name
        Specified by:
        getFileName in interface org.jpedal.PdfDecoderInt
        Returns:
        String
      • isForm

        public boolean isForm()
        return true if currently open PDF file is an FDF form
        Specified by:
        isForm in interface org.jpedal.PdfDecoderInt
        Returns:
        boolean
      • setAllowDifferentPrintPageSizes

        public void setAllowDifferentPrintPageSizes​(boolean allowDifferentPrintPageSizes)
        allow printing of different sizes pages
        Parameters:
        allowDifferentPrintPageSizes - true if printing of different sized pages is allowed
      • getTextLines

        public org.jpedal.text.TextLines getTextLines()
        access textlines object
        Specified by:
        getTextLines in interface org.jpedal.PdfDecoderInt
      • setInset

        public final void setInset​(int width,
                                   int height)
        set an inset display so that display will not touch edge of panel
        Specified by:
        setInset in interface org.jpedal.PdfDecoderInt
      • ensurePointIsVisible

        public void ensurePointIsVisible​(Point p)
        make screen scroll to ensure point is visible
        Parameters:
        p - Point to be made visible
      • setPrintIndent

        public void setPrintIndent​(int oddPages,
                                   int evenPages)
        set a left margin for printing pages (ie for duplex)
        Parameters:
        oddPages - oddPages
        evenPages - evenpages
      • setUserOffsets

        public void setUserOffsets​(int x,
                                   int y,
                                   int mode)
        not part of API used internally

        allow user to 'move' display of PDF

        mode is a Constant in org.jpedal.external.OffsetOptions (ie OffsetOptions.SWING_DISPLAY,OffsetOptions.PRINTING)

        Specified by:
        setUserOffsets in interface org.jpedal.PdfDecoderInt
      • getUserOffsets

        public Point getUserOffsets​(int mode)
        not part of API used internally
        Parameters:
        mode - mode
        Returns:
        Points
      • getMaximumSize

        public Dimension getMaximumSize()
        get sizes of panel
        This is the PDF pagesize (as set in the PDF from pagesize) - It now includes any scaling factor you have set (ie a PDF size 800 * 600 with a scaling factor of 2 will return 1600 *1200)
        Overrides:
        getMaximumSize in class JComponent
      • getPreferredSize

        public Dimension getPreferredSize()
        get sizes of panel
        This is the PDF pagesize (as set in the PDF from pagesize) - It now includes any scaling factor you have set (ie a PDF size 800 * 600 with a scaling factor of 2 will return 1600 *1200)
        Overrides:
        getPreferredSize in class JComponent
        Returns:
        Dimension
      • updateCursorBoxOnScreen

        public final void updateCursorBoxOnScreen​(int[] rectParams,
                                                  int outlineColor)
        update rectangle we draw to highlight an area - See Viewer example for example code showing current usage. This method takes an int array containing the x,y,w,h params of the rectangle we wish to update. It also takes an int outLineColor which is the rgb value of a Color object.
        Specified by:
        updateCursorBoxOnScreen in interface org.jpedal.PdfDecoderInt
      • paintComponent

        public void paintComponent​(Graphics g)
        standard method to draw page and any highlights onto JPanel
      • getPDFWidth

        public int getPDFWidth()
        get sizes of panel
        This is the PDF pagesize (as set in the PDF from pagesize) - It now includes any scaling factor you have set
        Specified by:
        getPDFWidth in interface org.jpedal.PdfDecoderInt
      • getPDFHeight

        public final int getPDFHeight()
        get sizes of panel - This is the PDF pagesize
        Specified by:
        getPDFHeight in interface org.jpedal.PdfDecoderInt
      • setPDFBorder

        public final void setPDFBorder​(Border newBorder)
        set border for screen and print which will be displayed
        Setting a new value will enable screen and border painting - disable with disableBorderForPrinting()
        Specified by:
        setPDFBorder in interface org.jpedal.PdfDecoderInt
      • getPDFBorder

        public final Border getPDFBorder()
        get border for screen and print which will be displayeds
        Returns:
        Border
      • setHardwareAccelerationforScreen

        public void setHardwareAccelerationforScreen​(boolean useAcceleration)
        Enables/Disables hardware acceleration of screen rendering (default is on)
        Specified by:
        setHardwareAccelerationforScreen in interface org.jpedal.PdfDecoderInt
      • getScrollInterval

        public int getScrollInterval()
        return amount to scroll window by when scrolling (default is 10)
        Specified by:
        getScrollInterval in interface org.jpedal.PdfDecoderInt
        Returns:
        int
      • setScrollInterval

        public void setScrollInterval​(int scrollInterval)
        set amount to scroll window by when scrolling
        Specified by:
        setScrollInterval in interface org.jpedal.PdfDecoderInt
        Parameters:
        scrollInterval - scroll interval
      • getDisplayView

        public int getDisplayView()
        returns view mode used - ie SINGLE_PAGE,CONTINUOUS,FACING,CONTINUOUS_FACING (no effect in OS versions)
        Specified by:
        getDisplayView in interface org.jpedal.PdfDecoderInt
      • setPrintPageScalingMode

        public void setPrintPageScalingMode​(int pageScalingMode)
        set page scaling mode to use - default setting is PAGE_SCALING_REDUCE_TO_PRINTER_MARGINS All values start PAGE_SCALING
        Parameters:
        pageScalingMode - mode to set
      • setUsePDFPaperSize

        public void setUsePDFPaperSize​(boolean usePDFPaperSize)
      • getScaling

        public float getScaling()
        returns current scaling value used internally
        Specified by:
        getScaling in interface org.jpedal.PdfDecoderInt
        Returns:
        float
      • getInsetH

        public int getInsetH()
        Description copied from interface: org.jpedal.PdfDecoderInt
        Return amount to inset the page rectangle height by
        Specified by:
        getInsetH in interface org.jpedal.PdfDecoderInt
        Returns:
        int
      • getInsetW

        public int getInsetW()
        Description copied from interface: org.jpedal.PdfDecoderInt
        Return amount to inset the page rectangle width by
        Specified by:
        getInsetW in interface org.jpedal.PdfDecoderInt
        Returns:
        int
      • getNumberOfPages

        public int getNumberOfPages()
        part of pageable interface - used only in printing Use getPageCount() for number of pages
        Specified by:
        getNumberOfPages in interface Pageable
      • getUserSetPageFormat

        public PageFormat getUserSetPageFormat​(int p)
                                        throws IndexOutOfBoundsException
        Returns pageFormats set by the user for a given page or a standard page format for all pages if set.
        Parameters:
        p - :: Page to check for a page format
        Returns:
        PageFormat that has been set or null is no value has been sets
        Throws:
        IndexOutOfBoundsException - incorrect index
      • setCenterOnScaling

        public void setCenterOnScaling​(boolean center)
        Specify if the pdf page should be centered within the pageformat when print. This method has been depricated, please use setPrintPageCentering(boolean center) instead.
        Parameters:
        center - :: If true the pdf page will be centered in the imageable area.
      • setPrintAutoRotate

        public void setPrintAutoRotate​(boolean rotate)
        Specify if the pdf page should be rotated to best fit the printed page imagable area.
        Parameters:
        rotate - :: If true the pdf page will be rotated to better fit the imageable area.
      • setPageFormat

        public void setPageFormat​(int p,
                                  PageFormat pf)
        Set PageFormat for a specific page when printing. If no pageFormat is set a default will be used. Recommended to use setPageFormat(PageFormat pf) to set a single PageFormat for all pages.
        Parameters:
        p - int value representing the page number to apply the PageFormat to
        pf - PageFormat object to be used when printing the specified page
      • setPageFormat

        public void setPageFormat​(PageFormat pf)
        Set PageFormat to be used when a specific PageFormat has not been set for a page.
        Parameters:
        pf - PageFormat object to be used when printing
      • setPagePrintRange

        public void setPagePrintRange​(SetOfIntegerSyntax range)
                               throws PdfException
        set inclusive range to print (see SilentPrint.java and Viewer.java for sample print code (invalid range will throw PdfException) can take values such as new PageRanges("3,5,7-9,15");
        Parameters:
        range - range of pages to print
        Throws:
        PdfException - PdfException
      • setPrintPageMode

        public void setPrintPageMode​(int mode)
        allow user to select only odd or even pages to print
        Parameters:
        mode - mode to use for printing
      • stopPrinting

        public final void stopPrinting()
        ask JPedal to stop printing a page
      • getCurrentPrintPage

        public int getCurrentPrintPage()
        return page currently being printed or -1 if finished
        Returns:
        int
      • resetCurrentPrintPage

        public void resetCurrentPrintPage()
      • getSpecialMode

        public int getSpecialMode()
        retusn a value defined in SpecialOptions used internally and in custom JPedal releases
        Specified by:
        getSpecialMode in interface org.jpedal.PdfDecoderInt
        Returns:
        int
      • useNewGraphicsMode

        public boolean useNewGraphicsMode()
        Specified by:
        useNewGraphicsMode in interface org.jpedal.PdfDecoderInt
      • useNewGraphicsMode

        public void useNewGraphicsMode​(boolean isEnabled)
        switches on or off glow border in JPedal viewer
        Specified by:
        useNewGraphicsMode in interface org.jpedal.PdfDecoderInt
        Parameters:
        isEnabled -
      • getMaxSizeWH

        public int[] getMaxSizeWH()
        Specified by:
        getMaxSizeWH in interface org.jpedal.PdfDecoderInt
      • getPaneBounds

        public int[] getPaneBounds()
        Specified by:
        getPaneBounds in interface org.jpedal.PdfDecoderInt
      • repaintPane

        public void repaintPane​(int page)
        Specified by:
        repaintPane in interface org.jpedal.PdfDecoderInt
      • requestFocus

        public void requestFocus()
        Specified by:
        requestFocus in interface org.jpedal.PdfDecoderInt
        Overrides:
        requestFocus in class JComponent
      • getTextPrint

        public int getTextPrint()
        Specified by:
        getTextPrint in interface org.jpedal.PdfDecoderInt