我正在自動化我們組織的供應訂購系統。在當前的(紙張)系統下,如果我們要訂購一個網站,我們需要打印出顯示所需項目的網頁。我正在編寫的系統提供了一種上傳掃描文檔的方法,但是我希望將其作爲一鍵式操作,而不是打印網頁,掃描它,然後上載掃描文件。瀏覽器顯示的圖像URL
我發現this代碼頁轉換爲圖像,並確實工作,但產生的圖像是基於關閉HTML(這是有道理的),但沒有什麼是瀏覽器中顯示。
例如,我看這資料:
當我運行通過代碼的URL,這是返回的圖像:
該項目是使用servlet的Java web。 servlet代碼:
try {
if (request.getParameter("formType").equalsIgnoreCase("addReference")) {
String url = request.getParameter("url");
BufferedImage bi = WebImage.create(url, 800, 600);
File tmpFile = new File("c:/testimages/url2img.png");
ImageIO.write(bi, "png", tmpFile);
} catch (Exception e) {
e.printStackTrace();
}
從上面的鏈接代碼:
public abstract class WebImage {
static class Kit extends HTMLEditorKit {
@Override
public Document createDefaultDocument() {
HTMLDocument doc
= (HTMLDocument) super.createDefaultDocument();
doc.setTokenThreshold(Integer.MAX_VALUE);
doc.setAsynchronousLoadPriority(-1);
return doc;
}
}
public static BufferedImage create(String src, int width, int height) {
BufferedImage image = null;
JEditorPane pane = new JEditorPane();
Kit kit = new Kit();
pane.setEditorKit(kit);
pane.setEditable(false);
pane.setMargin(new Insets(0, 0, 0, 0));
try {
pane.setPage(src);
image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
Container c = new Container();
SwingUtilities.paintComponent(g, pane, c, 0, 0, width, height);
g.dispose();
} catch (Exception e) {
System.out.println(e);
}
return image;
}
}
有什麼辦法由瀏覽器所顯示返回的URL 的形象?
雖然我確定你的回答是有效的,但我無法讓它在我的項目上工作。另外,它好像我加入了很多的項目(即,硒),這是不必要的 - 有點像使用全車的時候我需要的是左轉向燈燈泡。但是,謝謝你的回答。 –
我不知道你是如何導入相應的庫,但我建議使用maven來管理你的依賴。它將簡化創建類路徑並運行此代碼。 [這是在github](https://github.com/paul-nelson-baker/selenium-screenshot-demo)。至於添加很多,對於您的問題來說,這是強制性的。你要麼重新發明輪子,並建立一個支持Java的JavaScript引擎和瀏覽器(你必須保持自己,這可能很有趣,學術又費時),或者你使用一個已經有效的項目。你只需要挑選最適合你的東西。 –