converter sites para pdf

Iniciado por olinto, 16 de Setembro de 2017, 20:37

tópico anterior - próximo tópico

olinto

Olá,

Gostaria de converter alguns sites para pdf. Um exemplo é o http://ecology.msu.montana.edu/labdsv/R/labs/ que possui diversos subdiretórios com conteúdo dos tutoriais. Achei muita coisa para uma página apenas.

Após pesquisar na web, o que me levou mais próximo foi o http://kmkeen.com/mirror/2009-02-05-14-00-00.html que utilliza wget e htmldoc. Mas alguns gráficos ficaram com problemas.

Gostaria de saber se existem outras opções que não consegui encontrar.

Obrigado!

Antônio Olinto
Antônio Olinto
Linux User 455618
Ubuntu User 31203

bugged

Salva o site em imprimir e inves de imprimir vc coloca pdf

Enviado de meu LG-K430 usando Tapatalk


druidaobelix

Citação de: bugged online 17 de Setembro de 2017, 08:00
Salva o site em imprimir e inves de imprimir vc coloca pdf

De fato, usar Ctrl p para imprimir dependendo do site pode ser um ótima opção (e as vezes a única).
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

olinto

Caros, obrigado pela resposta.

Tentei salvar e imprimir pelos navegadores Chrome e Firefox mas eles só salvam a página, não o site. No meu exemplo eles salvaram http://ecology.msu.montana.edu/labdsv/R/labs/ e não o conjunto http://ecology.msu.montana.edu/labdsv/R/labs/lab1/lab1.html, http://ecology.msu.montana.edu/labdsv/R/labs/lab2/lab2.html, ..., /lab14.html

Estou fazendo algo errado? Não encontrei nenhuma opção como "salvar website", apenas "salvar página".

Abraços

Antônio Olinto
Antônio Olinto
Linux User 455618
Ubuntu User 31203

druidaobelix

#4
Citação de: olinto online 18 de Setembro de 2017, 07:03
Tentei salvar e imprimir pelos navegadores Chrome e Firefox mas eles só salvam a página, não o site. No meu exemplo eles salvaram [...]
Estou fazendo algo errado? Não encontrei nenhuma opção como "salvar website", apenas "salvar página".

Então, @olinto,

Ao mencionar o Ctrl p como uma forma prática de produzir um pdf estava apenas comentando uma forma, mas ela presume a realização manual da tarefa, página por página daquilo que se queira transformar em pdf. Depois de produzidas a partir de cada link do site se pode juntar todas elas em um único documento pdf usando, por exemplo pdttk ou qualquer um dos vários outros softwares que fazem isso. Estava apenas querendo dizer que dependendo de algumas 'barreiras' que o site possa colocar, por vezes é a forma de se fazer. Não é possível apenas usando Ctrl p fazer todo o trabalho de uma vez só.

Vamos, entretanto, voltar à questão que você colocou no post inicial.

A forma descrita naquela link que você trouxe parece estar funcionando bem, não cheguei a examinar tão em detalhes, mas até onde foi possível ver sumariamente parece que está funcionando.

Como lá é dito, pressupõe existente o pacote wget, que já vem instalado por padrão no Ubuntu e ainda o pacote htmldoc, que está nos repositórios e basta instalar da forma padrão.

sudo apt install htmldoc

Pois bem, a partir daí, como descrito, é fazer:

wget -nd -mk http://example.com

htmldoc --webpage -f example.pdf example_path/toc.html example_path/*.html

Apliquei aqui usando como exemplo o site que você mencionou:

http://ecology.msu.montana.edu/labdsv/R/labs/

Só para facilitar o acesso e o agrupamento criei um diretório:

mkdir ~/ecologylabs

cd ~/ecologylabs

Então, estando dentro da pasta criada, o wget ficou:

wget -nd -mk http://ecology.msu.montana.edu/labdsv/R/labs/

Foram baixados localmente os arquivos que compõe o site e neles especialmente, que é o que mais diretamente interessa:


index.html  lab12.html  lab1.html  lab4.html  lab7.html  R_ecology.html
lab10.html  lab13.html  lab2.html  lab5.html  lab8.html  R_S_ecology.html
lab11.html  lab14.html  lab3.html  lab6.html  lab9.html

Daí usando o comando:

htmldoc --webpage -f teste.pdf ~/ecologylabs/*.html

Foi criado um documento pdf de 192 páginas, que me pareceu espelhar bem o que se pretendia.

Mas claro, como dito antes, não cheguei a comparar detalhadamente o resultado obtido com cada página do site.

Também do processamento resultaram as seguintes mensagens de erro:

ERR011: Unable to parse HTML element on line 139!
ERR011: Unable to parse HTML element on line 204!
ERR011: Unable to parse HTML element on line 262!
PAGES: 192
BYTES: 3370127                                   

No post inicial está dito que "Mas alguns gráficos ficaram com problemas".

Quais seriam mais especificamente essas páginas que aparecem com problemas?

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

#5
Outra opção para converter html em pdf pode ser o wkhtmltopdf, que igualmente trabalha por linha de comando e é bastante eficiente nisso.

https://wkhtmltopdf.org/

A versão básica se encontra diretamente nos repositórios:

sudo apt-get install wkhtmltopdf

Porém, instalar direto dos repositórios não produz a biblioteca QT patcheada para o wkhtmltopdf, o que significa algumas limitações quanto aos parâmetros que se pode aplicar (dependendo do trabalho não faz diferença) então se não quiser ter o trabalho de compilar também se pode baixar o binário já patcheado de forma completa (=static version), talvez seja a melhor opção.

cd ~/

Pode ser baixado daqui, observando-se as arquitetura 32-bit ou 64-bit

https://wkhtmltopdf.org/downloads.html

para 32-bit:

wget -c https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-i386.tar.xz

para 64-bit:

wget -c https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

Para descompactar:

tar -xvf nomedoarquivo.tar.xz

(ou simplesmente use o botão direito do mouse e faça a descompactação)

O detalhe do detalhe, descompacte diretamente no /home/$USER, pois há uma observação quanto a isso para que a execução não falhe.

Uma vez baixado é só extrair que será criado um diretório de nome wkhtmltox

Para executar é só entrar no diretório:

cd ~/wkhtmltox/bin

e então fazer de forma semelhante:

./wkhtmltopdf /path/*.html nome_arquivo.pdf

(note o ./ (ponto barra) antes do nome do executável)

Assim sendo, usando o mesmo raciocínio daquele outro software, use o wget para baixar localmente os arquivos.

Da mesma forma, para facilitar e agrupar, crie um diretório próprio:

mkdir ~/ecologylabs

cd ~/ecologylabs

De forma idêntica, baixando os arquivos que compõem o site:

wget -nd -mk http://ecology.msu.montana.edu/labdsv/R/labs/

Indo para o diretório do wkhtmltox

cd ~/wkhtmltox/bin

Executando informando o caminho onde se encontram os arquivos html baixados pelo wget:

./wkhtmltopdf ~/ecologylabs/*.html teste.pdf

Experimentei aqui e fez o processamento sem problemas e sem nenhuma mensagem de erro, produzindo um documento pdf de 134 páginas (não usei separador de páginas e tampouco numeração), que em vista sumária pareceu-me consistente.

Faça a experiência aí com o wkhtmltopdf, pode ser que resolva a questão, como visto o uso básico é bastante simples e muito semelhante àquele outro que você já experimentou e trouxe o link. Salvo engano, a qualidade dos gráficos me pareceu melhor que o outro software, mas como disse, foram observações apenas sumárias mesmo, você aí que conhece da matéria de fundo vai poder avaliar melhor.

Nessa página se encontram os parâmetros:

https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

Nessa outra há um bom roteiro, também se preferir compilar diretamente, além de outras explicações úteis:

https://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf-0.9.9-doc.html

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

olinto

Caro druidaobelix

Muito obrigado por pela atenção de sua resposta.

O wkhtmltopdf deu um resultado bem melhor. Os gráficos ficaram corretos. Praticamente todos do htmldoc ficaram borrados.

No entanto a quebra de páginas do wkhtmltopdf deixa a desejar (como o próprio manual indica), ou ao menos é mais complicado,
https://ourcodeworld.com/articles/read/446/how-to-add-a-new-page-on-your-pdf-with-wkhtmltopdf

Abraços

Antonio
Antônio Olinto
Linux User 455618
Ubuntu User 31203

druidaobelix

#7
Citação de: olinto online 01 de Outubro de 2017, 13:20
O wkhtmltopdf deu um resultado bem melhor. Os gráficos ficaram corretos. [...]
No entanto a quebra de páginas do wkhtmltopdf deixa a desejar (como o próprio manual indica), ou ao menos é mais complicado,

Pois então, @olinto,

A questão da quebra de página em determinadas circunstâncias pode mesmo ser complicada, como você apropriadamente observou no manual e como, aliás, o próprio desenvolvedor explicitamente alerta ao dizer:

Citar
Page Breaking
The current page breaking algorithm of WebKit leaves much to be desired. Basically webkit will render everything into one long page, and then cut it up into pages. This means that if you have two columns of text where one is vertically shifted by half a line. Then webkit will cut a line into to pieces display the top half on one page. And the bottom half on another page. It will also break image in two and so on. If you are using the patched version of QT you can use the CSS page-break-inside property to remedy this somewhat. There is no easy solution to this problem, until this is solved try organising your HTML documents such that it contains many lines on which pages can be cut cleanly.

Como se vê, a afirmação é direta ao dizer "leaves much to be desired (=deixa muito a desejar) e mais adiante There is no easy solution to this problem (não há solução fácil para esse problema), o que é perfeitamente compreensível. O exemplo que ele menciona é significativo.

Um website foi concebido para uma determinada finalidade que não a de estar impressa em um documento pdf, aliás, a essência do conceito html é a existência virtual cuja dinâmica se dá pelos links. Apenas não deveria ser necessário colocar uma página web num documento pdf. A página web deveria estar sempre disponível e acessível. Num mundo ideal todos deveriam ter acesso pleno e imediato à internet, tornando desnecessárias essas conversões de formatos.

Mas sabemos que isso é apenas o ideal e não o real, então aí aparecem essas soluções como o excelente wkhtmltopdf, mas aqui e ali sempre existirão algumas limitações.

No caso concreto que você apresenta não parece haver dificuldades maiores (não vi realmente em detalhes, página por página), além do que se trata de um conjunto pequeno e, se necessário, facilmente manipulável ainda que fazendo a segmentação de forma manual.

No caso do seu exemplo uma primeira característica que chama a atenção é o ordenamento (se é que isso é realmente importante), mas também facilmente contornável, bastando renomear a sequência html para ao invés de chamar lab1 lab2 lab3 etc é só adicionar um 0 (zero) antes do numeral que o processamento irá colocar na ordem numérica habitual como lab01.html lab02.html lab03.html e assim por diante. Como são poucos blocos neste caso é bastante fácil de ser feito.

Também eventualmente pode ser útil, dependendo do que se queira, usar o parâmetro --default-header que coloca no cabeçalho o título e ainda diretamente a numeração.

Algo como:

./wkhtmltopdf --default-header ~/ecologylabs/*.html teste.pdf

(duplo hífen antes do parâmetro --default-header)

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.