Pergunta

Eu tenho uma aplicação PHP que precisa gerar algumas faturas PDF e planilhas PDF com agradáveis ??cabeçalhos / rodapés. Alguns usuários StackOverflow recomendo usar TCPDF para criar os documentos PDF. Na minha pesquisa, descobri duas abordagens para gerar PDFs:

1) programaticamente a formatação do PDF assim:

    $tcpdf->SetFillColor(255, 0, 0);
    $tcpdf->SetTextColor(255);
    $tcpdf->SetDrawColor(128, 0, 0);
    $tcpdf->SetLineWidth(0.3);
    $tcpdf->SetFont('', 'B');

2) Converter HTML para PDF

Como faço para decidir qual me aproximo eu devo usar?

Foi útil?

Solução

Posso recomendar Zend_Pdf , que é um método programático de acordo à sua classificação.

A HTML abstração é bom, mas eu não acredito que você tem todo o poder e controle de uma API de desenho baseado na geometria completo. Desconfie de bibliotecas como fpdf que não suportam UTF-8 para fora da caixa, e usar analisador de um homem pobre para 'converter' HTML para PDF.

No que diz respeito à sua aplicação, eu produzi um sistema que gera faturas templated. Meus usuários podem fazer upload de um modelo de PDF, que é extraído por Zend_Pdf. Este modelo é então utilizado para cada página da factura gerada, permitindo fácil personalização.

Note que o meu público são designers principalmente gráficos que são capazes de produzir esses modelos, por isso era a solução adequada aqui. Se o seu público só estão familiarizados com HTML, 'converter' HTML para PDF pode ser o melhor caminho.

Outras dicas

Eu sempre recomendo a criação de PDFs de forma dinâmica, mas com base em modelos que podem ser editados usando ferramentas de usuário final ou - pelo menos - sem ter que ser um programador. No seu caso, que seria provavelmente o HTML. Para mim, a solução ideal é tomar um modelo do Office, preenchê-lo com os valores de programação, e saída para PDF, sempre que tecnicamente possível. Eu faço a parte de escritório modelo de enchimento em PHP usando tbsOOO e ele funciona muito bem.

A principal razão para a utilização de uma abordagem baseada em modelo sobre gerar o documento a partir do zero: o usuário pode projetar o modelo como entenderem, e você não vai ser necessário quando as necessidades de design mudando. (E irá necessidade mudar um dia.) Somente quando as necessidades de dados inseridos para ser alterado ou prorrogado, de alguma forma, o programador entra em jogo. Isso é uma enorme carga de trabalho fora de sua volta.

Oi você tem duas opções. Você pode usar dompdf , que permite que você crie seu documento como um documento HTML normal e estilo-lo com css. Você pode transformar este documento em pdf. Minhas experiências foram bons. I processar uma página html regular usando Zend_View e transformar isso em pdf. Desta forma, você tem um modelo extremamente flexível, beacuse você pode fazer todo o tipo de decisões de exibição em sua vista de geração de html.

? ver a lista de css-compatibilidade .

Como alternativa você poderia usar livedocx . Isso também permite uma abordagem modelo baseado, mas mais rígida e html-less. A para Zend Framework está a caminho.

Eu tive ampla experiência com todas as três abordagens:

  1. Criando o documento programaticamente usando TCPDF (que, apesar de ter sido derivada de FPDF, suporta UTF-8 out of the box). Embora eu sou um grande fã do Zend Framework, ele precisa ser observado que Zend_Pdf não é o suficiente rica ainda em seu conjunto de recursos a ser usado desta forma.

  2. Ter um designer gráfico criar um modelo, carregá-lo usando Zend_Pdf e, em seguida, adicionar conteúdo adicional para isso. Zend_Pdf (1.10.2 - 1.10.7) trabalhou muito bem neste caso, com exceção ao tentar instanciar uma nova página e adicioná-lo ao documento -. Este jogou um monte de erros

  3. A conversão de HTML para PDF usando htmldoc. Esta abordagem sugado mal, mas, principalmente, devido às limitações na htmldoc.

Eu não usei TCPDF para HTML para conversão de PDF, mas a julgar pela qualidade geral do código que eu estou supondo que faria um bom trabalho. (Eu realmente empurrou TCPDF aos limites, incluindo documentos de prestação graficamente ricos em conjuntos de caracteres RTL, chineses, etc, e tem realizado na perfeição). Então, se você decidir fazê-lo por meio de programação, eu recomendo usar TCPDF mas se você tiver um bom modelo a partir de um designer gráfico e pretende apenas acrescentar coisas em cima, carregá-lo com Zend_Pdf e modificação de lá é uma escolha razoável (embora você ainda vai acabar implementação de quebra de palavras e algumas outras coisas básicas).

Eu também recomendo converter HTML para PDF:

  • É mais fácil perceber
  • É mais fácil mudar o layout / design mais tarde
  • Você provavelmente poderia reutilizar alguns html da página

Quando eu uma vez criou uma geração de PDF para um site que eu usei html2ps e, em seguida, converteu o PostScript em PDF mais tarde.

Eu sugiro a formatação programático.

No mundo .net Eu tive experiências distintamente negativos com HTML para conversores de PDF. Eles parecem cair em 2 categorias:

Os que 'parse' seu html e tentar transformá-lo em um pdf. Estes muitas vezes não têm algumas características muito fundamentais como folhas de estilo e suporte para qualquer coisa, mas o layout baseado em tabelas.

Os que 'imprimir' o seu html para uma imagem e vara que em um pdf. Estes podem realmente produzir um documento procurando decente. Eles parecem trabalho ligando um navegador para a biblioteca que provoca problemas de segmentação e mau desempenho.

Eu tive experiências medíocres com apis pdf diretos, mas parece php ter alguns significativamente melhores bibliotecas nesta frente.

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