Eu usei o Java, o Jasper Reports e o iReport para uma tarefa semelhante. Espero que ajude.
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!
Eu usei o Java, o Jasper Reports e o iReport para uma tarefa semelhante. Espero que ajude.
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:
Facilmente estendido para usar mais de um modelo.
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.
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.