我正在尝试使用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
损坏我的计算机吗?例如写一些“坏”命令?这个问题听起来很愚蠢,但是我真的是陌生的。
答案 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修复了我的第一个代码