Converter site em PDF (recursivamente)

2

Existe alguma maneira de converter uma página da web e suas subpáginas em um arquivo PDF?

    
por Tarek 03.08.2017 / 19:09

1 resposta

3

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 arquivos php 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
    
por pa4080 03.08.2017 / 19:48