根据这些文件,可以使用--print-to-pdf
以无头模式启动Chrome以导出网页的PDF格式。这对于通过get
请求访问的页面很好。
试图找到一个打印到PDF的解决方案,这将允许我导出一个PDF后,执行多个导航请求从Chrome。示例:打开google.com
,输入搜索查询,单击第一个结果链接,导出到PDF。
看着(数量非常有限的)文档和样本,我没能找到一种方法来指示Chrome在页面加载后导出PDF。我正在使用Java的chrome-driver
。
一个不涉及Chrome的可能解决方案是使用像wkhtmltopdf这样的工具。在将HTML发送到该工具之前,沿着此路径将迫使我执行以下操作:
我不喜欢这个路径,因为我需要做大量的修改[我假设]才能使下载的文件路径正确,以使wkhtmltopdf
正确读取。
有没有一种方法可以指示Chrome打印到PDF格式,但只能在页面加载之后?
一个从命令行执行此操作的示例,需要对页面html和sed
进行一些修补:
LOGIN='myuserid'
PASSW='mypasswd'
AUTH='pin=$LOGIN&accessCode=$PASSW&Submit=Submit'
TIMESTAMP=`TZ=HST date -d "today" +"%m/%d/%y %I:%M %p HST"`
wget -q --save-cookies cookies.txt --keep-session-cookies \
--post-data $AUTH \
https://csea.ehawaii.gov/iwa/index.html
sed -i 's#href="/iwa/css#href="./bin#g' index.html
sed -i 's#src="/iwa/images#src="./bin#g' index.html
wkhtmltopdf -q --print-media-type \
--header-left "$d" --header-font-size 10 \
--header-line --header-spacing 10 \
--footer-left "Page [page] of [toPage]" --footer-font-size 10 \
--footer-line --footer-spacing 10 \
--footer-right "$TIMESTAMP" \
--margin-bottom 20 --margin-left 15 \
--margin-top 20 --margin-right 15 \
index.html index.pdf
假设Cookie有效,则可以访问登录后可用的其他页面,如下所示:
wget -q --load-cookies cookies.txt https://csea.ehawaii.gov/otherpage.html
wkhtmltopdf <all the options> otherpage.html otherpage.pdf
此外,我以前曾将所有css和图像转储到本地bin
目录中,如下所示:
wget -r -A.jpg -A.gif -A.css -nd -Pbin \
https://csea.ehawaii.gov/iwa/index.html
由于没有答案,我将解释我的变通方法。而不是试图找到如何从Chrome请求打印当前页面,我走了另一条路。
对于本例,我们将尝试从Google下载查询“example”的结果页面:
driver.get(“google.com”)
导航,输入查询“示例”,单击“Google Search”驱动程序检索页面源。GetPageSource()
localhost:8080
。链接“./style.css”将变为“localhost:8080/style.css”chrome--打印到PDF localhost:8080/search?id=query-example
会发生的情况是,chrome将向我们的控制器请求HTML,而对于我们返回的HTML中定义的资源,它将被转到我们的控制器--因为我们重新映射了相关链接--然后控制器将请求转发到资源的真实位置--Google.com。下面是一个spring控制器的例子,注意,这个例子是不完整的,这里只是作为一个指导。
null
@RestController
@RequestMapping
public class InternationalOffloadRestController {
@RequestMapping(method = RequestMethod.GET, value = "/search/html")
public String getHtml(@RequestParam("id") String id) {
File file = new File("location of the HTML file", id);
try (FileInputStream input = new FileInputStream(file)) {
return IOUtils.toString(input, HTML_ENCODING);
}
}
@RequestMapping("/**") // forward all remapped links to google.com
public void forward(HttpServletResponse httpServletResponse, ...) {
URI uri = new URI("https", null, "google.com", -1,
request.getRequestURI(), request.getQueryString(), null);
httpServletResponse.setHeader("Location", uri.toString());
httpServletResponse.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
}
}
null
问题内容: 我有一个客户想打印的网页,而我遇到的麻烦是让页脚位于最后一个打印页面的底部,而不仅仅是内容结束时 我尝试了类似的东西 但它在每页末尾显示页脚。 也许我对CSS的要求太高了…可行吗? 我想我应该对 的(^_^)发疯 问题答案: 尝试将相对的身体和绝对的页脚定位: 借助CSS 3 Paged Media模块,您可以使用以下代码:
但是,对于以下所有使用chromedriver的测试,浏览器都不能成功导航到URL。 浏览器启动,瞬间显示字符数据;出现在地址栏中(就像第一个测试中一样),然后将正确的URL插入到地址栏中。但是,页面永远不会加载,你得到了标准的chrome这个网页不可用的消息,在浏览器的正文/画布上有两个按钮reload和更多。 这是已知的问题吗? 以下异常将被删除: NosuchWindowException:
问题内容: 我已经阅读了很多有关打印页码的网站,但是当我尝试打印html页面时,仍然无法显示它。 接下来是CSS代码: 我试图把这个页面规则放进去 在其外部,尝试将其放入中,但没有任何帮助使我在页面上显示页码。我尝试使用FireFox和Chrome(您知道基于WebKit的浏览器)。我认为问题出在我的HTML或CSS代码中。 有人可以告诉我一个在具有多个页面的大html页面中实现此规则的示例吗?我
在某些情况下,需要在网页上放置一个按钮,以便使用实际的打印机来打印网页的内容。 JavaScript帮助我们实现了打印网页的实现。 当执行JavaScript中的打印功能时,它将打印当前网页。只需在事件中使用它即可直接调用此函数。 语法 示例代码: 运行结果如下:
很多时候,您希望在网页上放置一个按钮,通过实际的打印机打印该网页的内容。 JavaScript帮助您使用window对象的print函数实现此功能。 JavaScript打印函数window.print()在执行时打印当前网页。 您可以使用onclick事件直接调用此函数,如以下示例所示。 例子 (Example) <html> <body> <form>
我需要设置一个ng click事件,以便它加载一个新页面,然后,一旦页面加载完毕,滚动到页面上的一个定位点。我已经尝试了这篇文章中提出的每一个解决方案,但我无法让它正常工作。 大多数解决方案都围绕着滚动到已经加载的页面上的锚定。我需要在加载新页面后出现滚动。 这表示“配置文件卡”中的按钮。当用户点击卡片时,它会将他们带到一个个人资料页面。但是,当他们单击按钮时,它需要将他们带到该配置文件页面的#j