Como gerar dinamicamente documentos PDF

1

Eu quero criar um aplicativo da web para gerar documentos PDF elegantes. O layout deve ser baseado em modelos de design e os dados devem vir dinamicamente do banco de dados. Idealmente, quero projetar o modelo em uma ferramenta "publishing like" com espaços reservados e substituir esses espaços reservados pelo aplicativo da Web pelos dados do banco de dados. Pense em algo como um gerador de faturas, em que um cliente pode escolher entre diferentes modelos de fatura e os próprios dados da fatura provenientes do banco de dados. Obrigado pelas suas ideias!

    
por Thomas 27.05.2013 / 12:56

3 respostas

1

Eu usei o Java, o Jasper Reports e o iReport para uma tarefa semelhante. Espero que ajude.

    
por Silviu Burcea 27.05.2013 / 13:03
1

Eu uso perl (com HTML :: Template) para gerar um documento .ods a partir de dados de banco de dados, então eu uso unoconv para convertê-lo em pdf. Para ser preciso:

  • primeiro, crie um documento .ods com boa aparência. Certifique-se de que campos variáveis são reconhecíveis.
  • descompacte o documento .ods e edite o arquivo contents.xml.
  • em contents.xml, altere todos os campos variáveis para < TMPL_VAR > tags como por HTML :: Template. Este arquivo contents.xml será seu modelo.
  • escreva um programa Perl que leia o banco de dados, preencha os campos TMPL_VAR, grave um novo arquivo contents.xml e faça um novo zip do novo arquivo contents.xml em um novo documento .ods.
  • use então unoconv para converter o novo documento em pdf.

Facilmente estendido para usar mais de um modelo.

    
por Jos 27.05.2013 / 14:41
0

Eu queria postar isso como um comentário, já que é um conselho geral, não uma solução final, mas ficou um pouco por muito tempo. Posso, claro, ajudá-lo a encontrar sua solução concreta nos comentários.

Para começar com a regra geral: Não há uma solução melhor. Isso se resume principalmente ao que você está confortável para criar o documento.

Se você conhece o LaTeX, essa é uma possibilidade óbvia. Os documentos do LaTeX são lindos, basicamente por definição.

Se você não conhece o LaTeX e se sente confortável com poucas opções a menos, mas conhece o modo de organização, esse é outro bom caminho a percorrer. Documentos em modo de organização podem ser convertidos em LaTeX, que podem ser convertidos para PDF, e também são muito bonitos. pandoc pode fazer isso diretamente, mas eu não verifiquei isso.

Obviamente, outra possibilidade é projetar seu documento no modo de organização, permitir que o Emacs construa o código LaTeX e, em seguida, usar esse documento LaTeX para preencher as variáveis em todas as instâncias antes de compilá-lo para PDF. Dessa forma, você ainda não precisa projetar o documento no LaTeX e não precisa compilar a partir de documentos no modo de organização, mas de documentos do LaTeX.

Se você está bem com menos ainda e não quer fazer muito, você pode usar o markdown. O Markdown oferece de longe o menor número de opções, tanto em opções de design quanto em tipos de conteúdo. No entanto, é muito fácil de aprender e usar e você pode criar seu documento aqui no StackExchange com uma visualização ao vivo. Isso também deve lhe dar uma ideia de seus limites. Há bons documentos no markdown, mas geralmente envolve muitos ajustes no formato de saída desejado (no seu caso, provavelmente, um PDF DIN A4 de várias páginas) que meio que anula o propósito de ser fácil de aprender. É claro que pode ser uma solução perfeitamente boa para pessoas que querem escrever muito - por exemplo - documentação no markdown, já que é super fácil de escrever, mas no seu caso, a parte de escrita é automatizada, então essa vantagem não realmente contar e o fácil de usar a linguagem pode não valer o incômodo de fazer com que os documentos tenham a aparência que você deseja.

Se você não estiver confortável com nenhum dos itens acima, você pode usar a abordagem do Jos de projetar seu documento no LibreOffice, descompactá-lo, alterar seu content.xml , empacotá-lo novamente e convertê-lo em PDF. No entanto, embora isso ofereça muito mais opções do que o markdown, ele oferece muito menos opções do que o LaTeX e a obtenção do nível de org-mode será incômoda. Na verdade, a coisa toda parece ser difícil de se adaptar rapidamente, pois envolve muitas etapas quando você deseja alterar o documento. Também parece ser o mais propenso a erros. Não necessariamente no tipo "a PDF vir a ser, no final", mas no "parece que é suposto ser".

Uma observação importante: não tente mudar o LibreOffice for Microsoft Office. Embora você possa encontrar ferramentas para convertê-las em PDF, parece uma péssima ideia usar seus formatos. O motivo é que o LibreOffice usa o OpenDocument Standard, que usa arquivos zip padrão, portanto, você pode usar qualquer ferramenta zip para extrair e compactar o arquivo. Os arquivos do Microsoft Office, por outro lado, são meramente baseados em zip. Você poderá extraí-los com ferramentas zip normais, mas não poderá compactá-los usando ferramentas zip padrão.

org-mode ou LaTeX são particularmente úteis se você quiser um índice. É possivelmente com os outros também, mas mais trabalho. Se você quiser uma tonelada de opções e estiver disposto a aprender, se necessário, o LaTeX definitivamente é o caminho a ser seguido.

    
por UTF-8 23.01.2017 / 23:33