Salvar uma lista de páginas da Web como arquivo PDF
-
Primeiro, instale a ferramenta de conversão
wkhtmltopdf
(essa ferramenta exige um ambiente de área de trabalho; fonte ):sudo apt install wkhtmltopdf
-
Em seguida, crie um arquivo que contenha uma lista de URLs de várias páginas da Web de destino (cada uma em uma nova linha). Vamos chamar esse arquivo
url-list.txt
e vamos colocar em~/Downloads/PDF/
. Por exemplo, seu conteúdo poderia ser:https://askubuntu.com/users/721082/tarek https://askubuntu.com/users/566421/pa4080
-
Em seguida, execute o próximo comando, que gerará um arquivo PDF para cada URL do site, localizado no diretório em que o comando é executado:
while read i; do wkhtmltopdf "$i" "$(echo "$i" | sed -e 's/https\?:\/\///' -e 's/\//-/g' ).pdf"; done < ~/Downloads/PDF/url-list.txt
O resultado deste comando - executado dentro do diretório
~/Downloads/PDF/
- é:~/Downloads/PDF/$ ls -1 *.pdf askubuntu.com-users-566421-pa4080.pdf askubuntu.com-users-721082-tarek.pdf
-
Mesclar os arquivos de saída pelo próximo comando, executado no diretório acima ( source ):
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged-output.pdf $(ls -1 *.pdf)
O resultado é:
~/Downloads/PDF/$ ls -1 *.pdf askubuntu.com-users-566421-pa4080.pdf askubuntu.com-users-721082-tarek.pdf merged-output.pdf
Salvar um site inteiro como arquivo PDF
-
Primeiro, devemos criar um arquivo (
url-list.txt
) que contenha o mapa de URLs do site. Execute estes comandos ( source ):TARGET_SITE="https://www.yahoo.com/" wget --spider --force-html -r -l2 "$TARGET_SITE" 2>&1 | grep '^--' | awk '{ print }' | grep -v '\.\(css\|js\|png\|gif\|jpg\)$' > url-list.txt
-
Depois, precisamos seguir as etapas da seção acima.
Crie um script que salvará um site inteiro como arquivo PDF (recursivamente)
-
Para automatizar o processo, podemos reunir todos em um arquivo de script.
-
Crie um arquivo executável chamado
site-to-pdf.sh
:touch ~/Downloads/PDF/site-to-pdf.sh chmod +x ~/Downloads/PDF/site-to-pdf.sh nano ~/Downloads/PDF/site-to-pdf.sh
-
O conteúdo do script é:
#!/bin/sh TARGET_SITE="" wget --spider --force-html -r -l2 "$TARGET_SITE" 2>&1 | grep '^--' | awk '{ print }' | 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)
Copie o conteúdo acima e em
nano
use: Deslocar + Inserir para colar; Ctrl + O e Enter para salvar; Ctrl + X para sair. -
Uso:
A resposta para a pergunta original:
Converta vários arquivos PHP em um PDF (recursivamente)
-
Primeiro instale o pacote
enscript
, que é um ' arquivo regular para pdf' ferramenta de conversão:sudo apt update && sudo apt install enscript
-
Em seguida, execute o próximo comando, que gerará o arquivo chamado
output.pdf
, localizado no diretório em que o comando será executado, que conterá o conteúdo de todos os arquivosphp
em/path/to/folder/
e seus subdiretórios:find /path/to/folder/ -type f -name '*.php' -exec printf "\n\n{}\n\n" \; -exec cat "{}" \; | enscript -o - | ps2pdf - output.pdf
-
Exemplo, do meu sistema, que gerou este arquivo :
find /var/www/wordpress/ -type f -name '*.php' -exec printf "\n\n{}\n\n" \; -exec cat "{}" \; | enscript -o - | ps2pdf - output.pdf