Pergunta

Eu tenho uma série de PDFs nomeados sequencialmente assim:

  • 01_foo.pdf
  • 02_bar.pdf
  • 03_baz.pdf
  • etc.

Usando Ruby, é possível combiná-las em uma grande PDF, mantendo-os em sequência? Eu não me importo de instalar qualquer gemas necessárias para fazer o trabalho.

Se isto não é possível em Ruby, como sobre outro idioma? Nenhum dos componentes comerciais, se possível.


Update: sugestão de Jason Navarrete levar à solução perfeita:

Coloque os arquivos PDF que precisam ser combinados em um diretório juntamente com pdftk (ou certificar-se de pdftk está na sua PATH), em seguida, execute o seguinte script:

pdfs = Dir["[0-9][0-9]_*"].sort.join(" ")
`pdftk #{pdfs} output combined.pdf`

Ou eu mesmo poderia fazê-lo como um one-liner a partir da linha de comando:

ruby -e '`pdftk #{Dir["[0-9][0-9]_*"].sort.join(" ")} output combined.pdf`'

Great sugestão Jason, solução perfeita, obrigado. Dê a ele um up-voto pessoas .

Foi útil?

Solução

A Rubi-Talk pós sugere a utilização do pdftk kit de ferramentas para mesclar os PDFs.

Deve ser relativamente simples chamada pdftk como um processo externo e tê-lo lidar com a fusão. PDF :: Escritor pode ser um exagero, porque tudo que você está olhando para realizar é um acréscimo simples.

Outras dicas

Você pode fazer isso através da conversão de PostScript e para trás. arquivos PostScript podem ser concatenadas trivialmente. Por exemplo, aqui está um script que usa o Ghostscript ferramentas ps2pdf e pdf2ps:

#!/bin/bash
for file in 01_foo.pdf 02_bar.pdf 03_baz.pdf; do
    pdf2ps $file - >> temp.ps
done

ps2pdf temp.ps output.pdf
rm temp.ps

Eu não estou familiarizado com Ruby, mas há certamente alguma função (pode ser chamado system() (apenas um palpite)) que irá chamar uma determinada linha de comando.

Se você Ghostscript em sua plataforma, desembolsar e executar este comando:

gs -dBATCH -dNOPAUSE q -sDEVICE = pdfwrite -sOutputFile = finished.pdf

Eu tentei a solução pdftk e problemas tiveram tanto SnowLeopard e Tiger. Instalando em Tiger realmente causou estragos no meu sistema e me deixou incapaz de executar script / servidor, felizmente, é uma máquina aposentado de desenvolvimento web.

Em seguida encontrou outra opção: - joinPDF. Foi um absolutamente indolor e rápido instalar e ele funciona perfeitamente.

Também tentou GhostScript e falhou miseravelmente (não conseguia ler as fontes e acabei com PDFs que apresentavam apenas imagens).

Mas se você está procurando uma solução para este problema, você pode querer tentar joinPDF.

Eu não acho que Ruby tem ferramentas para isso. Você pode verificar ImageMagick e Cairo. ImageMagick pode ser usado para ligar várias fotos / documentos juntos, mas eu não tenho certeza sobre o caso PDF.

Então, novamente, há certamente ferramentas do Windows (comercial) para fazer esse tipo de coisa.

Eu uso Cairo-me para gerando PDF do. Se os de PDF são provenientes de você, talvez isso seria uma solução (que faz páginas apoio múltiplas). Boa sorte!

Eu sugiro olhar o código para PDFCreator (VB, se não me engano, mas isso não deve importa desde que você tinha acabado de ser implementar código semelhante em outro idioma), que usa GhostScript (licença GNU) . Ou apenas cavar em linha reta em si GhostScript; há também uma camada de fachada disponível chamado GhostPDF, o que pode fazer o que quiser.

Se você pode controlar GhostScript com VB, você pode fazê-lo com C, o que significa que você pode fazê-lo com Ruby.

Rubi também tem IO.popen, que lhe permite chamar a programas externos que podem fazer isso.

Qualquer código Ruby para fazer isso em uma aplicação real é provavelmente vai ser dolorosamente lento. Gostaria de tentar e caçar ferramentas Unix para fazer o trabalho. Esta é uma das belezas de usar o Mac OS X, tem capacidades PDF muito rápido embutido. A próxima melhor coisa é provavelmente uma ferramenta unix.

Na verdade, eu tive algum sucesso com RTEX. Se você olhar aqui você encontrará algumas informações sobre ele. É muito mais rápido do que qualquer biblioteca Ruby que eu usei e eu tenho certeza de látex tem uma função de trazer dados PDF a partir de outras fontes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top