Class NaiveUserAgent

java.lang.Object
com.openhtmltopdf.swing.NaiveUserAgent
All Implemented Interfaces:
DocumentListener, UserAgentCallback
Direct Known Subclasses:
PdfBoxUserAgent

public class NaiveUserAgent extends Object implements UserAgentCallback, DocumentListener

NaiveUserAgent is a simple implementation of UserAgentCallback which places no restrictions on what XML, CSS or images are loaded.

The NaiveUserAgent has a simple per-run cache for images so that the same image is not embedded in a document multiple times.

  • Field Details

  • Constructor Details

    • NaiveUserAgent

      public NaiveUserAgent()
  • Method Details

    • setProtocolsStreamFactory

      public void setProtocolsStreamFactory(Map<String,FSStreamFactory> protocolsStreamFactory)
    • setUriResolver

      public void setUriResolver(FSUriResolver resolver)
    • getDefaultUriResolver

      public FSUriResolver getDefaultUriResolver()
    • clearImageCache

      @Deprecated public void clearImageCache()
      Deprecated.
      Empties the image cache entirely.
    • getProtocolFactory

      protected FSStreamFactory getProtocolFactory(String protocol)
    • hasProtocolFactory

      protected boolean hasProtocolFactory(String protocol)
    • extractProtocol

      protected String extractProtocol(String uri) throws URISyntaxException
      Throws:
      URISyntaxException
    • openStream

      protected InputStream openStream(String uri)
      Gets a InputStream for the resource identified by a resolved URI.
    • openReader

      protected Reader openReader(String uri)
      Gets a reader for the identified resource by a resolved URI.
    • readAll

      protected String readAll(Reader reader) throws IOException
      Throws:
      IOException
    • getCSSResource

      public CSSResource getCSSResource(String uri, ExternalResourceType type)
      Retrieves the CSS located at the given URI. It's assumed the URI does point to a CSS file--the URI will be resolved, accessed (using the set FSStreamFactory or URL::openStream), opened, read and then passed into the CSS parser. The result is packed up into an CSSResource for later consumption.
      Specified by:
      getCSSResource in interface UserAgentCallback
      Parameters:
      uri - Location of the CSS source.
      Returns:
      A CSSResource containing the CSS reader or null if not available.
    • getImageResource

      public ImageResource getImageResource(String uri, ExternalResourceType type)
      Retrieves the image located at the given URI. It's assumed the URI does point to an image--the URI will be accessed (using the set HttpStreamFactory or URL::openStream), opened, read and then passed into the JDK image-parsing routines. The result is packed up into an ImageResource for later consumption.
      Specified by:
      getImageResource in interface UserAgentCallback
      Parameters:
      uri - Location of the image source.
      Returns:
      An ImageResource containing the image.
    • getXMLResource

      public XMLResource getXMLResource(String uri, ExternalResourceType type)
      Retrieves the XML located at the given URI. It's assumed the URI does point to a XML--the URI will be accessed (using the set HttpStreamFactory or URL::openStream), opened, read and then passed into the XML parser (XMLReader) configured for Flying Saucer. The result is packed up into an XMLResource for later consumption.
      Specified by:
      getXMLResource in interface UserAgentCallback
      Parameters:
      uri - Location of the XML source.
      type - Either xhtml or svg.
      Returns:
      An XMLResource containing the image.
    • getBinaryResource

      public byte[] getBinaryResource(String uri, ExternalResourceType type)
      Description copied from interface: UserAgentCallback
      Retrieves a binary resource located at a given URI and returns its contents as a byte array or null if the resource could not be loaded.
      Specified by:
      getBinaryResource in interface UserAgentCallback
    • isVisited

      public boolean isVisited(String uri)
      Returns true if the given URI was visited, meaning it was requested at some point since initialization.
      Specified by:
      isVisited in interface UserAgentCallback
      Parameters:
      uri - A URI which might have been visited.
      Returns:
      Always false; visits are not tracked in the NaiveUserAgent.
    • setBaseURL

      public void setBaseURL(String uri)
      URL relative to which URIs are resolved.
      Specified by:
      setBaseURL in interface UserAgentCallback
      Parameters:
      uri - A URI which anchors other, possibly relative URIs.
    • setAccessController

      public void setAccessController(ExternalResourceControlPriority prio, BiPredicate<String,ExternalResourceType> controller)
    • checkAccessAllowed

      public boolean checkAccessAllowed(String uriOrResolved, ExternalResourceType type, ExternalResourceControlPriority priority)
    • getBaseURL

      public String getBaseURL()
      Returns the current baseUrl for this class.
      Specified by:
      getBaseURL in interface UserAgentCallback
      Returns:
      the base uri, possibly in the implementations private uri-space
    • documentStarted

      @Deprecated public void documentStarted()
      Deprecated.
      Description copied from interface: DocumentListener
      Indicates document has been requested (e.g. a new document is going to be loaded). This will be called before any activity takes place for the document.
      Specified by:
      documentStarted in interface DocumentListener
    • documentLoaded

      @Deprecated public void documentLoaded()
      Deprecated.
      Description copied from interface: DocumentListener
      Indicates document layout has complete, e.g. document is fully "loaded" for display; this is not a callback for the document source (e.g. XML) being loaded. This method will be called on every layout run (including, for example, after panel resizes).
      Specified by:
      documentLoaded in interface DocumentListener
    • onLayoutException

      @Deprecated public void onLayoutException(Throwable t)
      Deprecated.
      Description copied from interface: DocumentListener
      Called when document layout failed with an exception. All Throwable objects thrown (except for ThreadDeath) during layout and not otherwise handled will be provided to this method. If a DocumentListener has been defined an XHTML panel, the listener is entirely responsible for handling the exception. No other action will be taken.
      Specified by:
      onLayoutException in interface DocumentListener
    • onRenderException

      @Deprecated public void onRenderException(Throwable t)
      Deprecated.
      Description copied from interface: DocumentListener
      Called when document render failed with an exception. All Throwable objects thrown (except for ThreadDeath) during render and not otherwise handled will be provided to this method. If a DocumentListener has been defined an XHTML panel, the listener is entirely responsible for handling the exception. No other action will be taken.
      Specified by:
      onRenderException in interface DocumentListener
    • resolveURI

      public String resolveURI(String uri)
      Description copied from interface: UserAgentCallback
      Used to find a uri that may be relative to the BaseURL. The returned value will always only be used via methods in the same implementation of this interface, therefore may be a private uri-space.
      Specified by:
      resolveURI in interface UserAgentCallback
      Parameters:
      uri - an absolute or relative (to baseURL) uri to be resolved.
      Returns:
      the full uri in uri-spaces known to the current implementation.
    • resolveUri

      public String resolveUri(String baseUri, String uri)
      Specified by:
      resolveUri in interface UserAgentCallback