将网站转换为 PDF(递归)

将网站转换为 PDF(递归)

有没有办法将网页及其子页面转换为一个 PDF 文件?

答案1

将网页列表保存为 PDF 文件

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

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

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

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

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

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

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

    结果是:

    ~/Downloads/PDF/$ ls -1 *.pdf
    askubuntu.com-users-566421-pa4080.pdf
    askubuntu.com-users-721082-tarek.pdf
    merged-output.pdf
    

将整个网站保存为 PDF 文件

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

    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
    
  • 然后我们需要按照上面部分的步骤进行。

创建一个脚本,将整个网站保存为 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
    
  • 脚本内容为:

    #!/bin/sh
    TARGET_SITE="$1"
    wget --spider --force-html -r -l2 "$TARGET_SITE" 2>&1 | grep '^--' | awk '{ print $3 }' | grep -v '\.\(css\|js\|png\|gif\|jpg\|txt\)$' > url-list.txt
    while read i; do wkhtmltopdf "$i" "$(echo "$i" | sed -e 's/https\?:\/\///' -e 's/\//-/g' ).pdf"; done < url-list.txt
    gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged-output.pdf $(ls -1 *.pdf)
    

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

  • 用法:

    在此处输入图片描述


原始问题的答案:

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

  • 首先安装该包enscript,它是一个常规文件转换为 pdf'转换工具:

    sudo apt update && sudo apt install enscript
    
  • 然后运行下一个命令,它将生成名为的文件,位于执行命令的目录中,它将包含其中及其子目录的所有文件output.pdf的内容:php/path/to/folder/

    find /path/to/folder/ -type f -name '*.php' -exec printf "\n\n{}\n\n" \; -exec cat "{}" \; | enscript -o - | ps2pdf - output.pdf
    
  • 例如,从我的系统生成这个文件

    find /var/www/wordpress/ -type f -name '*.php' -exec printf "\n\n{}\n\n" \; -exec cat "{}" \; | enscript -o - | ps2pdf - output.pdf
    

相关内容