将网站转换为 PDF(递归)

Tar*_*rek 10 scripts pdf convert

有什么方法可以将网页及其子页面转换为一个 PDF 文件?

pa4*_*080 15

将网页列表另存为 PDF 文件

  • 首先安装wkhtmltopdf转换工具(此工具需要桌面环境;源码):

    sudo apt install wkhtmltopdf 
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后创建一个文件,其中包含多个目标网页的 URL 列表(每个都在新行上)。让我们调用这个文件url-list.txt并将它放在~/Downloads/PDF/. 例如它的内容可以是:

    https://askubuntu.com/users/721082/tarek
    https://askubuntu.com/users/566421/pa4080
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后运行下一个命令,这将为每个站点 URL 生成一个 PDF 文件,位于执行命令的目录中:

    while read i; do wkhtmltopdf "$i" "$(echo "$i" | sed -e 's/https\?:\/\///' -e 's/\//-/g' ).pdf"; done < ~/Downloads/PDF/url-list.txt
    
    Run Code Online (Sandbox Code Playgroud)

    此命令的结果 - 在目录中执行~/Downloads/PDF/- 是:

    ~/Downloads/PDF/$ ls -1 *.pdf
    askubuntu.com-users-566421-pa4080.pdf
    askubuntu.com-users-721082-tarek.pdf
    
    Run Code Online (Sandbox Code Playgroud)
  • 通过在上述目录(source)中执行的下一个命令合并输出文件:

    gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged-output.pdf $(ls -1 *.pdf)
    
    Run Code Online (Sandbox Code Playgroud)

    结果是:

    ~/Downloads/PDF/$ ls -1 *.pdf
    askubuntu.com-users-566421-pa4080.pdf
    askubuntu.com-users-721082-tarek.pdf
    merged-output.pdf
    
    Run Code Online (Sandbox Code Playgroud)

将整个网站另存为 PDF 文件

  • 首先,我们必须创建一个url-list.txt包含站点 URL 映射的文件 ( )。运行这些命令(source):

    TARGET_SITE="https://www.yahoo.com/"
    wget --spider --force-html -r -l2 "$TARGET_SITE" 2>&1 | grep '^--' | awk '{ print $3 }' | grep -v '\.\(css\|js\|png\|gif\|jpg\)$' > url-list.txt
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后我们需要完成上一节中的步骤。

创建一个脚本,将整个网站保存为 PDF 文件(递归)

  • 为了自动化该过程,我们可以将所有内容整合到一个脚本文件中。

  • 创建一个可执行文件,名为site-to-pdf.sh

    mkdir -p ~/Downloads/PDF/
    touch ~/Downloads/PDF/site-to-pdf.sh
    chmod +x ~/Downloads/PDF/site-to-pdf.sh
    nano ~/Downloads/PDF/site-to-pdf.sh
    
    Run Code Online (Sandbox Code Playgroud)
  • 脚本内容为:

    sudo apt install wkhtmltopdf 
    
    Run Code Online (Sandbox Code Playgroud)

    复制以上内容并nano使用:Shift+Insert为粘贴;Ctrl+OEnter保存;Ctrl+X退出。

  • 用法:

    在此处输入图片说明


原始问题的答案:

将多个 PHP 文件转换为一个 PDF(递归)