来自R的带有wkhtmltopdf的命令

fzsnzjdm  于 2023-02-01  发布在  其他
关注(0)|答案(3)|浏览(214)

我尝试使用wkhtmltopdf将网站内容转换为pdf格式,然后读取到我的R中。因此,我在命令提示行中写入下载为雅虎财经的html首页(只是为了好玩)。因此,我在C上创建了“TemporaryFolder”,并在cmd中写入:

C:\Program Files\wkhtmltopdf\bin>wkhtmltopdf https://finance.yahoo.com/ "C:/TemporaryFolder/myhtml.pdf"

而且它下载雅虎财经网站为pdf。现在我想做同样的事情,但使用R脚本。我知道有system功能,但我很少有经验与它(和cmd老实说)。
所以现在我试着在我的Rstudio中使用这个命令,这样我就可以稍后创建R脚本,将网站下载为HTML并将其转换为PDF。

URL="https://finance.yahoo.com/"
wkhtmltopdf_dir="C:/Program Files/wkhtmltopdf/bin"
save_as="C:/TemporaryFolder/myhtml.pdf"
x=paste0(wkhtmltopdf_dir,">","wkhtmltopdf"," ",URL," ",'\"',save_as,'\"')
system(x)

我也尝试了shell(x),但我得到了“权限被拒绝”。
但是它什么也不做...有没有人能详细说明system是如何工作的,以及这里应该添加什么?
顺便说一句:我会通过使用system来伤害我的计算机吗?例如写一些“坏”命令?这个问题可能听起来很傻,但我真的很陌生。

avkwfej4

avkwfej41#

您试图粘贴的命令("C:/Program Files/wkhtmltopdf/bin>wkhtmltopdf https://finance.yahoo.com/ \"C:/TemporaryFolder/myhtml.pdf\"")不太起作用。第一部分("C:/Program Files/wkhtmltopdf/bin>)实际上是您在commander中运行它时的提示符。它不是命令的一部分,而是显示您运行该命令的目录。
如果将wkhtmltopdf替换为C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe,它应该可以正常工作:

URL="https://finance.yahoo.com/"
wkhtmltopdf_exe="C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe"
save_as="C:/TemporaryFolder/myhtml.pdf"
x=paste0(wkhtmltopdf_exe," ",URL," ",'\"',save_as,'\"')
system(x)

为了回答第二个问题,调用system()通过CMD运行命令,所以基本上任何你可以通过CMD.exe搞砸的事情,你都可以通过system()搞砸。

pw136qt2

pw136qt22#

我找到了问题所在。正如我在评论中所写的,在使用shell(x)而不是system(x)之后,它返回了'C:/Program' is not recognized as an internal or external command, operable program or batch file.。所以我重新安装了wkhtmltopdf到名称不包含空格的文件夹中。所以wkhtmltopdf_exe现在是:
wkhtmltopdf_exe="C:/Programs/wkhtmltopdf/bin/wkhtmltopdf.exe"
其余的代码是相同的。这里的后续工作会很好,有没有办法解决文件夹名称中的空格?或者我应该总是避免空格?将wkhtmltopdf路径放在引号中没有帮助。
感谢用户JAD修复我的第一个代码

fdx2calv

fdx2calv3#

空格一直是命名中的一个缺陷,因此总是被下划线所取代。

相关问题