使用wkhtmltopdf

时间:2018-07-13 12:41:12

标签: r cmd

我正在尝试使用wkhtmltopdf将网站内容转换为pdf,然后将其读入我的R。因此,我在COMMAND PROMPT行中进行了编写,以将其下载为Yahoo Finance的html主页(仅出于娱乐目的)。因此,我在C上创建了“ TemporaryFolder”并用cmd编写:

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

并以pdf格式下载Yahoo金融网站。现在,我想做同样的事情,但是使用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损坏我的计算机吗?例如写一些“坏”命令?这个问题听起来很愚蠢,但是我真的是陌生的。

2 个答案:

答案 0 :(得分:1)

您要粘贴为命令("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()进行混乱。

答案 1 :(得分:0)

我弄清楚出了什么问题。正如我在评论中所述,在使用 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { getActivity().getWindow().requestFeature(Window.FEATURE_NO_TITLE); getActivity().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); View view = inflater.inflate(R.layout.custom_product_popup, container, false); return view; } 而不是shell(x)之后,它返回了system(x)。所以我将wkhtmltopdf重新安装到名称不包含空格的文件夹中。因此,'C:/Program' is not recognized as an internal or external command, operable program or batch file.现在是:

wkhtmltopdf_exe

其余代码相同。这里的后续操作很好,有没有办法解决文件夹名称中的空格?还是我应该始终避免空格?将wkhtmltopdf路径放在引号中没有帮助。

感谢用户JAD修复了我的第一个代码