gpt4 book ai didi

java - 浏览器显示的图像 URL

转载 作者:行者123 更新时间:2023-11-30 06:41:51 26 4
gpt4 key购买 nike

我正在自动化我们组织的供应订购系统。在当前(纸质)系统下,如果我们从网站订购,则需要附上显示所请求商品的网页的打印输出。我正在编写的系统有一个上传扫描文档的方法,但我想使其成为一键操作,而不是打印网页,扫描它,然后上传扫描文件。

我找到了this代码将页面转换为图像,它确实工作,但创建的图像是基于html(这是有道理的),而不是浏览器中显示的内容。

例如,我正在查看此项目:

Sample Amazon item

<小时/>

当我通过代码运行 url 时,这是返回的图像:

Returned image

该项目是使用 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;
}
}

有没有办法返回浏览器显示的网址图像?

最佳答案

您正在使用 Java,因此实际上有一个非常简单的解决方案。浏览器自动化是一个(大部分)已解决的问题 Selenium .

这里是一些示例代码,请注意,如果页面加载时间比平常长,它就不是特别强大,但它应该足以演示执行您想要的操作所需的步骤。另请注意,如果需要 headless 运行,您可能需要查看 JBrowserDriver而不是 FireFox 驱动程序。

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("https://www.amazon.com/I-Robot-Isaac-Asimov/dp/055338256X/ref=sr_1_2?ie=UTF8&qid=1496161782&sr=8-2&keywords=Asimov");
// This move is necessary, the original file is temporary and gets deleted after java exists
File resultingScreenshot = new File(System.getProperty("user.home"), "screenshot.png");
Files.move(screenshotFile, resultingScreenshot);
driver.quit();

System.out.println("The screenshot is found here: " + resultingScreenshot);

关于java - 浏览器显示的图像 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44267396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com