我想从X网站保存/下载pdf,然后将所有这些pdf合并为一个,这样我就可以很容易地一次看到所有这些pdfs。
我做了什么,
从网站
获取pdfwget -r -l1 -A.pdf --no-parent http://linktoX
将pdf合并为一个
gs -dNOPAUSE -sDEVICE = pdfwrite -sOUTPUTFILE = Combined _ date +%F
。pdf -dBATCH file1.pdf file2.pdf file3.pdf
我的问题是,我想在一个脚本中自动完成整个过程,所以我不必每天都这样做。这里每天都会在X中添加新的pdf。
那么,如何在不提供所有pdf的完整列表的情况下执行上面的第2步,我尝试在第2步中执行file*.pdf
;但它以随机顺序组合了所有pdf。
接下来的问题是,文件* .pdf的总数每天都不一样,有时5个pdf有时10个......但是好的是它命名为file1.pdf file2.pdf ...
所以,我需要一些帮助来完成上面的步骤2,这样所有的pdf都按顺序组合,我不必明确给出每个pdf的名称
感谢。
更新: 这解决了问题
pdftk `ls -rt kanti*.pdf` cat output Kanti.pdf
我做了ls -rt,因为首先下载了file1.pdf,然后是file2.pdf等等......只是做了ls -t把file20.pdf放在了开头,而file1.pdf放在了最后......
答案 0 :(得分:3)
我过去也使用过pdftk,效果很好。
要按数字顺序列出文件,您可以通过执行以下操作来指示sort忽略文件名的前$ n - 1个字符:
ls | sort -n -k 1.$n
所以如果你有文件* .pdf:
$ ls | sort -n -k 1.5
file1.pdf
file2.pdf
file3.pdf
file4.pdf
file10.pdf
file11.pdf
file20.pdf
file21.pdf
答案 1 :(得分:2)
之前我曾使用pdftk进行此类连接,因为Debft / Ubuntu可以随时使用pdftk。
答案 2 :(得分:1)
您可以执行以下操作:
GSCOMMAND="gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Combined_date +%F.pdf -dBATCH"
FILES=`ls file*.pdf | sort -n -k 1.5`
$GSCOMMAND $FILES
这假设文件名为“file.pdf”。另见alberge的帖子。
对于名称中带有空格的文件,它会做一些奇怪的事情,因此如果您需要能够处理带空格的名称,则需要添加转义。
我真的很好奇其他人会想出什么,因为在我看来这是一个非常快速和肮脏的解决方案,但是由于其他人的答案而变得更好:)
修改强>
按照alberge的建议使用FILES的数字排序命令。