org.fit.cssbox.io.DocumentSource Java Examples
The following examples show how to use
org.fit.cssbox.io.DocumentSource.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: BrowserConfig.java From CSSBox with GNU Lesser General Public License v3.0 | 6 votes |
/** * Creates a new instance of the {@link org.fit.cssbox.io.DocumentSource} class registered in the browser configuration. * @param url the URL to be given to the document source. * @return the document source. * @throws IOException */ public DocumentSource createDocumentSource(URL url) throws IOException { try { Constructor<? extends DocumentSource> constr = getDocumentSourceClass().getConstructor(URL.class); return constr.newInstance(url); } catch (Exception e) { Throwable cause = e; //find if there is an IOException cause and throw it while (cause != null && !(cause instanceof IOException)) cause = e.getCause(); if (cause != null && cause instanceof IOException) throw (IOException) cause; //no IO exception cause, this should not happen (some internal reflection problem) log.error("Could not create the DocumentSource instance: " + e.getMessage()); e.printStackTrace(); return null; } }
Example #2
Source File: ImageRenderer.java From WebVector with GNU Lesser General Public License v3.0 | 5 votes |
/** * Renders a document using the PDF engine. * @param docSource * @param da * @param pageFormat * @return */ protected PDFEngine renderPdf(DocumentSource docSource, DOMAnalyzer da, String pageFormat) { PDFEngine engine = new PDFEngine(pageFormat, da.getRoot(), da, docSource.getURL()); engine.setAutoMediaUpdate(false); //we have a correct media specification, do not update engine.getConfig().setClipViewport(cropWindow); engine.getConfig().setLoadImages(loadImages); engine.getConfig().setLoadBackgroundImages(loadBackgroundImages); defineLogicalFonts(engine.getConfig()); engine.createLayout(windowSize); return engine; }
Example #3
Source File: ImageRenderer.java From WebVector with GNU Lesser General Public License v3.0 | 5 votes |
/** * Renders a document using the graphics engine. * @param docSource * @param da * @param useFractionalMetrics * @param setDefaultFonts * @return */ protected GraphicsEngine renderGraphics(DocumentSource docSource, DOMAnalyzer da, boolean useFractionalMetrics, boolean setDefaultFonts) { GraphicsEngine engine = new GraphicsEngine(da.getRoot(), da, docSource.getURL()); engine.setUseFractionalMetrics(useFractionalMetrics); //fractional metrics are useful for vector output engine.setAutoMediaUpdate(false); //we have a correct media specification, do not update engine.getConfig().setClipViewport(cropWindow); engine.getConfig().setLoadImages(loadImages); engine.getConfig().setLoadBackgroundImages(loadBackgroundImages); if (setDefaultFonts) defineLogicalFonts(engine.getConfig()); engine.createLayout(windowSize); return engine; }
Example #4
Source File: DefaultAnalyzer.java From SwingBox with GNU Lesser General Public License v3.0 | 5 votes |
@Override public Viewport analyze(DocumentSource docSource, Dimension dim) throws Exception { DOMSource parser = new DefaultDOMSource(docSource); w3cdoc = parser.parse(); // Create the CSS analyzer DOMAnalyzer da = new DOMAnalyzer(w3cdoc, docSource.getURL()); da.attributesToStyles(); da.addStyleSheet(null, CSSNorm.stdStyleSheet(), DOMAnalyzer.Origin.AGENT); da.addStyleSheet(null, CSSNorm.userStyleSheet(), DOMAnalyzer.Origin.AGENT); da.getStyleSheets(); BufferedImage tmpImg = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB); canvas = new BrowserCanvas(da.getRoot(), da, docSource.getURL()); canvas.setImage(tmpImg); canvas.getConfig().setLoadImages(true); canvas.getConfig().setLoadBackgroundImages(true); canvas.createLayout(dim); return canvas.getViewport(); }
Example #5
Source File: StyleImport.java From CSSBox with GNU Lesser General Public License v3.0 | 5 votes |
public StyleImport(String urlstring) throws IOException, SAXException { //Open the network connection DocumentSource docSource = new DefaultDocumentSource(urlstring); //Parse the input document DOMSource parser = new DefaultDOMSource(docSource); doc = parser.parse(); //Create the CSS analyzer DOMAnalyzer da = new DOMAnalyzer(doc, docSource.getURL()); da.getStyleSheets(); //load the author style sheets da.localizeStyles(); //put the style sheets into the document header docSource.close(); }
Example #6
Source File: GraphicsVisualContext.java From CSSBox with GNU Lesser General Public License v3.0 | 5 votes |
@Override protected String registerExternalFont(TermURI urlstring, String format) throws MalformedURLException, IOException { String nameFound = null; if (format == null || FontDecoder.supportedFormats.contains(format)) { URL url = DataURLHandler.createURL(urlstring.getBase(), urlstring.getValue()); String regName = FontDecoder.findRegisteredFont(url); if (regName == null) { DocumentSource imgsrc = getViewport().getConfig().createDocumentSource(url); Font newFont; try { newFont = FontDecoder.decodeFont(imgsrc, format); } catch (FontFormatException e) { throw new IOException(e); } if (GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(newFont)) log.debug("Registered font: {}", newFont.getFontName()); else log.debug("Failed to register font: {} (not fatal, probably already existing)", newFont.getFontName()); regName = newFont.getFontName(); FontDecoder.registerFont(url, regName); } nameFound = regName; } return nameFound; }
Example #7
Source File: BrowserConfig.java From CSSBox with GNU Lesser General Public License v3.0 | 5 votes |
/** * Creates a new instance of the {@link org.fit.cssbox.io.DocumentSource} class registered in the browser configuration. * @param base the base URL * @param urlstring the URL suffix * @return the document source. */ public DocumentSource createDocumentSource(URL base, String urlstring) { try { Constructor<? extends DocumentSource> constr = getDocumentSourceClass().getConstructor(URL.class, String.class); return constr.newInstance(base, urlstring); } catch (Exception e) { log.warn("Could not create the DocumentSource instance: " + e.getMessage()); return null; } }
Example #8
Source File: BrowserConfig.java From CSSBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * Obtains the class used by CSSBox for obtaining documents based on their URLs. * @return the used class */ public Class<? extends DocumentSource> getDocumentSourceClass() { return documentSourceClass; }
Example #9
Source File: ContentReader.java From SwingBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * Reads input data and converts them to "elements" * * @param docSource * the document source * @param cba * the instance of {@link CSSBoxAnalyzer} * @param dim * the dimension * @return the list of elements. Note that, this method returns instance of * LinkedList. * @throws IOException * Signals that an I/O exception has occurred. */ public List<ElementSpec> read(DocumentSource docSource, CSSBoxAnalyzer cba, Dimension dim) throws IOException { // ale ked sa pouzije setText() neviem nic o url, nic sa nenastavuje , // moze byt null // (URL) doc.getProperty(Document.StreamDescriptionProperty) if (cba == null) throw new IllegalArgumentException("CSSBoxAnalyzer can not be NULL !!!\nProvide your custom implementation or check instantiation of DefaultAnalyzer object..."); elements = new Vector<ElementSpec>();// ArrayList<ElementSpec>(1024); elements.add(new ElementSpec(SimpleAttributeSet.EMPTY, ElementSpec.EndTagType)); order = 0; // System.err.print("used Reader and encoding ? " + // is.getCharacterStream() + " , "); // InputStreamReader r = (InputStreamReader)is.getCharacterStream(); // System.err.println(r.getEncoding()); Viewport vp; try { // System.err.println("analyzing..."); vp = cba.analyze(docSource, dim); // System.err.println("analyzing finished..."); } catch (Exception e) { throw new IOException(e); } //Use this for "drawing" the boxes. This constructs the element list. vp.draw(this); // System.err.println("num. of elements : " + elements.size()); // System.err.println("Root min width : " + root.getMinimalWidth() + // " ,normal width : " + root.getWidth() + " ,maximal width : " + // root.getMaximalWidth()); // TODO po skonceni nacitavania aj nejake info spravit // >> Document.TitleProperty - observer, metainfo return elements; }
Example #10
Source File: BrowserConfig.java From CSSBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * Creates a new instance of the {@link org.fit.cssbox.io.DOMSource} class registered in the browser configuration * ({@link org.fit.cssbox.layout.BrowserConfig}). * @param src the document source to be given to the DOM source. * @return the DOM source. */ public DOMSource createDOMSource(DocumentSource src) { try { Constructor<? extends DOMSource> constr = getDOMSourceClass().getConstructor(DocumentSource.class); return constr.newInstance(src); } catch (Exception e) { log.warn("BoxFactory: Warning: could not create the DOMSource instance: " + e.getMessage()); return null; } }
Example #11
Source File: BrowserConfig.java From CSSBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * Sets the class used by CSSBox for obtaining documents based on their URLs. * @param documentSourceClass the new document source class */ public void registerDocumentSource(Class<? extends DocumentSource> documentSourceClass) { this.documentSourceClass = documentSourceClass; }
Example #12
Source File: SimpleBrowser.java From CSSBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * @param args the command line arguments */ public static void main(String args[]) { if (args.length != 1) { System.err.println("Usage: SimpleBrowser <url>"); System.exit(0); } try { //Open the network connection DocumentSource docSource = new DefaultDocumentSource(args[0]); //Parse the input document DOMSource parser = new DefaultDOMSource(docSource); Document doc = parser.parse(); //Create the CSS analyzer DOMAnalyzer da = new DOMAnalyzer(doc, docSource.getURL()); da.attributesToStyles(); //convert the HTML presentation attributes to inline styles da.addStyleSheet(null, CSSNorm.stdStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the standard style sheet da.addStyleSheet(null, CSSNorm.userStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the additional style sheet da.addStyleSheet(null, CSSNorm.formsStyleSheet(), DOMAnalyzer.Origin.AGENT); //render form fields using css da.getStyleSheets(); //load the author style sheets //Display the result SimpleBrowser test = new SimpleBrowser(da.getRoot(), docSource.getURL(), da); test.setSize(1275, 750); test.setVisible(true); docSource.close(); } catch (Exception e) { System.out.println("Error: "+e.getMessage()); e.printStackTrace(); } }
Example #13
Source File: TextBoxes.java From CSSBox with GNU Lesser General Public License v3.0 | 4 votes |
/** * main method */ public static void main(String[] args) { if (args.length != 1) { System.err.println("Usage: TextBoxes <url>"); System.exit(0); } try { //Open the network connection DocumentSource docSource = new DefaultDocumentSource(args[0]); //Parse the input document DOMSource parser = new DefaultDOMSource(docSource); Document doc = parser.parse(); //Create the CSS analyzer DOMAnalyzer da = new DOMAnalyzer(doc, docSource.getURL()); da.attributesToStyles(); //convert the HTML presentation attributes to inline styles da.addStyleSheet(null, CSSNorm.stdStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the standard style sheet da.addStyleSheet(null, CSSNorm.userStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the additional style sheet da.getStyleSheets(); //load the author style sheets //Create the browser canvas GraphicsEngine browser = new GraphicsEngine(da.getRoot(), da, docSource.getURL()); //Disable the image loading browser.getConfig().setLoadImages(false); browser.getConfig().setLoadBackgroundImages(false); //Create the layout for 1000x600 pixels browser.createLayout(new Dimension(1000, 600)); //Display the result printTextBoxes(browser.getViewport()); docSource.close(); } catch (Exception e) { System.err.println("Error: "+e.getMessage()); e.printStackTrace(); } }
Example #14
Source File: FontDecoder.java From CSSBox with GNU Lesser General Public License v3.0 | 4 votes |
public static Font decodeFont(DocumentSource fontSource, String format) throws FontFormatException, IOException { //TODO decode other formats than TTF return Font.createFont(Font.TRUETYPE_FONT, fontSource.getInputStream()); }
Example #15
Source File: PreviewImageServiceImpl.java From openemm with GNU Affero General Public License v3.0 | 3 votes |
private BufferedImage renderDocumentWithCssBox(String url) throws IOException, SAXException { DocumentSource docSource = new DefaultDocumentSource(ensureUrlHasProtocol(url)); final Dimension windowSize = new Dimension(VIEWPORT_WIDTH, VIEWPORT_HEIGHT); final String mediaType = "screen"; // Parse the input document DOMSource parser = new DefaultDOMSource(docSource); Document doc = parser.parse(); // Create the media specification MediaSpec media = new MediaSpec(mediaType); media.setDimensions(windowSize.width, windowSize.height); media.setDeviceDimensions(windowSize.width, windowSize.height); // Create the CSS analyzer DOMAnalyzer analyzer = new DOMAnalyzer(doc, docSource.getURL()); analyzer.setMediaSpec(media); // Convert the HTML presentation attributes to inline styles analyzer.attributesToStyles(); // Use the standard style sheet analyzer.addStyleSheet(null, CSSNorm.stdStyleSheet(), DOMAnalyzer.Origin.AGENT); // Use the additional style sheet analyzer.addStyleSheet(null, CSSNorm.userStyleSheet(), DOMAnalyzer.Origin.AGENT); // Render form fields using css analyzer.addStyleSheet(null, CSSNorm.formsStyleSheet(), DOMAnalyzer.Origin.AGENT); // Load the author style sheets analyzer.getStyleSheets(); BrowserCanvas contentCanvas = new BrowserCanvas(analyzer.getRoot(), analyzer, docSource.getURL()); // We have a correct media specification, do not update contentCanvas.setAutoMediaUpdate(false); contentCanvas.getConfig().setClipViewport(false); contentCanvas.getConfig().setLoadImages(true); contentCanvas.getConfig().setLoadBackgroundImages(true); contentCanvas.getConfig().setImageLoadTimeout((int) TimeUnit.SECONDS.toMillis(IMAGE_LOADING_TIMEOUT)); contentCanvas.createLayout(windowSize); return contentCanvas.getImage(); }
Example #16
Source File: ComputeStyles.java From CSSBox with GNU Lesser General Public License v3.0 | 3 votes |
/** * @param args */ public static void main(String[] args) { if (args.length != 2) { System.err.println("Usage: ComputeStyles <url> <output_file>"); System.exit(0); } try { //Open the network connection DocumentSource docSource = new DefaultDocumentSource(args[0]); //Parse the input document DOMSource parser = new DefaultDOMSource(docSource); Document doc = parser.parse(); //Create the CSS analyzer DOMAnalyzer da = new DOMAnalyzer(doc, docSource.getURL()); da.attributesToStyles(); //convert the HTML presentation attributes to inline styles da.addStyleSheet(null, CSSNorm.stdStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the standard style sheet da.addStyleSheet(null, CSSNorm.userStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the additional style sheet da.getStyleSheets(); //load the author style sheets //Compute the styles System.err.println("Computing style..."); da.stylesToDomInherited(); //Save the output OutputStream os = new FileOutputStream(args[1]); Output out = new NormalOutput(doc); out.dumpTo(os); os.close(); docSource.close(); System.err.println("Done."); } catch (Exception e) { System.err.println("Error: "+e.getMessage()); e.printStackTrace(); } }
Example #17
Source File: ImageRenderer.java From CSSBox with GNU Lesser General Public License v3.0 | 3 votes |
/** * Renders the URL and prints the result to the specified output stream in the specified * format. * @param urlstring the source URL * @param out output stream * @return true in case of success, false otherwise * @throws SAXException */ public boolean renderURL(String urlstring, OutputStream out) throws IOException, SAXException { if (!urlstring.startsWith("http:") && !urlstring.startsWith("https:") && !urlstring.startsWith("ftp:") && !urlstring.startsWith("file:")) urlstring = "http://" + urlstring; //Open the network connection DocumentSource docSource = new DefaultDocumentSource(urlstring); //Parse the input document DOMSource parser = new DefaultDOMSource(docSource); Document doc = parser.parse(); //create the media specification MediaSpec media = new MediaSpec(mediaType); media.setDimensions(windowSize.width, windowSize.height); media.setDeviceDimensions(windowSize.width, windowSize.height); //Create the CSS analyzer DOMAnalyzer da = new DOMAnalyzer(doc, docSource.getURL()); da.setMediaSpec(media); da.attributesToStyles(); //convert the HTML presentation attributes to inline styles da.addStyleSheet(null, CSSNorm.stdStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the standard style sheet da.addStyleSheet(null, CSSNorm.userStyleSheet(), DOMAnalyzer.Origin.AGENT); //use the additional style sheet da.addStyleSheet(null, CSSNorm.formsStyleSheet(), DOMAnalyzer.Origin.AGENT); //render form fields using css da.getStyleSheets(); //load the author style sheets GraphicsEngine contentCanvas = new GraphicsEngine(da.getRoot(), da, docSource.getURL()); contentCanvas.setAutoMediaUpdate(false); //we have a correct media specification, do not update contentCanvas.getConfig().setClipViewport(cropWindow); contentCanvas.getConfig().setLoadImages(loadImages); contentCanvas.getConfig().setLoadBackgroundImages(loadBackgroundImages); contentCanvas.createLayout(windowSize); ImageIO.write(contentCanvas.getImage(), "png", out); docSource.close(); return true; }
Example #18
Source File: CSSBoxAnalyzer.java From SwingBox with GNU Lesser General Public License v3.0 | 2 votes |
/** * Analyzes content from InputSource and constructs a tree of Boxes, which * is further processed. * * @param docSource * the document source implementation. * @param dim * the dimension of rendering area. * @return the tree of boxes. * @throws Exception * some exception may be thrown during processing. */ Viewport analyze(DocumentSource docSource, Dimension dim) throws Exception;