Pergunta

Eu sou um desenvolvedor PHP e em um dos meus projetos, eu preciso converter alguns documentos HTML (cerca de 30 a 50 páginas) em documentos PDF.

Minha busca transformou-se as seguintes soluções possíveis. Entre elas estão algumas bibliotecas PHP e alguns aplicativos de linha de comando. Cada um tem suas próprias vantagens e desvantagens.

bibliotecas PHP:

  1. fpdf (necessidade de mais esforço para converter)
  2. tcpdf (necessidade de mais esforço para converter)
  3. http://html2fpdf.sourceforge.net
  4. http://html2pdf.fr/
  5. http://code.google.com/p/dompdf/ (em comparação a outra, funciona bem)

Para cada biblioteca, tenho problemas como:

  1. leva um longo tempo (mais de cinco minutos para converter 30 páginas HTML)
  2. Requer muitos recursos (memória e tempo)

    (I definir os seguintes parâmetros no php.ini:

    max_execution_time = 600
    memory_limit = 250M

    mas as coisas ainda não funcionam.)

  3. Precisa de páginas HTML para ser bem formatado (por exemplo, não faltando etiquetas próximos)

Todos estes trabalhos quando tento converter documentos HTML simples (cinco ou menos páginas com pouco CSS)

aplicativos linha de comando

Todos os aplicativos de linha de comando funcionam perfeitamente e muito rapidamente em comparação com as bibliotecas acima, mas só quando eu executá-los diretamente no console. Quando eu tento usá-los em PHP com exec() ou system(), eles me dão erros.

A seguir estão os aplicativos de linha de comando e seus erros quando eu executá-los em PHP:

  1. html2pdf ( http://www.tufat.com/s_html2ps_html2pdf.htm )

    html2pdf: 11380): Gtk-WARNING **: pode exibir não aberto:: 0.0
    Nenhum protocolo especificado

  2. wkhtmltopdf

    A carregar a página: 10%
    Carregando página: 33%
    Carregando página: 100%
    À espera de redirecionamento
    páginas outputting
    QPainter :: begin (): Devolvido falsa
    QPainter :: begin (): Devolvido falsa
    QPainter :: save: Painter não está ativo
    QPainter :: escala: Painter não está ativo
    QPainter :: setRenderHint: Painter deve estar ativo para definir sugestões de renderização
    QPainter :: setBrush: Painter não está ativo
    QPainter :: caneta: Painter não está ativo
    QPainter :: setPen: Painter não está ativo

  3. htmltopdf ( http://www.ultrashareware.com/html-to -pdf.htm )

Então agora eu estou procurando ajuda. resposta Qualquer pessoa pode:

biblioteca que PHP iria funcionar bem no meu caso?

Por que esses erros ocorrem em aplicações de linha de comando?

Foi útil?

Solução

Em relação wkhtmltopdf :

  • Esta coisa funciona incrivelmente rápido e que também pode lidar com todos os tipos de HTML / CSS você jogue com ele, então quando você precisa de velocidade, você deve considerá-lo seriosly. Nós mudar para ele recentemente em nossa empresa e nosso serviço PDF tem enourmous velocidade-boost.

  • Pelo menos no Linux precisa XOrg bibliotecas para ser instalado -. Servidores geralmente não tê-los, de modo que pode ser o seu problema

Outras dicas

Tente isto:

Você já tentou Príncipe ?

Mas o que se você vai usar qualquer serviço on-line e enviar o seu conteúdo HTML sobre HTTP? É claro que a maioria deles não são livres.

Uma possibilidade: ter o script automaticamente:

  1. Tome a página web
  2. Abra a página em um navegador da web
  3. Faça um screencap da página
  4. Transformá-lo em um PDF

passo 4 é fácil - há uma abundância de bibliotecas PHP / cmdline que vai deixar você colocar imagens em um pdf ou convertê-los (. Por exemplo, fpdf)

Para obter as etapas 1-3 ... você pode poderia tentar olhar para o código a partir daqui: http://browsershots.org / . Não tenho certeza se seria relevante - parece que ele requer muita configuração. Talvez sua arquitetura poderia trabalhar?

Um par de perguntas e sugestões:

  • Você realmente precisa dele convertido para PDF? Por quê? Em alguns casos, seria melhor ficar com HTML.
  • É a atualização do hardware do servidor que gera o PDF é uma opção? Perguntei isso porque se todas as bibliotecas que você tentou está levando muito tempo para criar, então sua única opção pode ser a atualização do servidor.
  • Você pode querer resolver o problema com o erro de linha de comando. Se ele dá os resultados mais rápidos, em seguida, encontrar um trabalho em torno dela.

Tente HTMLDOC projeto ferramenta de linha de comando https://www.msweet.org/projects.php?Z1

Há muitos solução para HTML conversão para PDF, posso sugerir-lhe a um por https://grabz.it .

A ter uma API PHP flexível que pode ser usado por cronjobs ou diretamente a partir da página web PHP.

Se você quiser experimentá-lo, em primeiro lugar você deve ter uma aplicativo chave + segredo para autorização e o desenvolvimento livre SDK

Aqui está um exemplo de uma implementação básica.

//First init
include("GrabzItClient.class.php");

// Create the GrabzItClient class
// Replace "APPLICATION KEY", "APPLICATION SECRET" values for your account!
$grabzIt = new GrabzItClient("Application Key", "Application Secret");

// To take a PDF screenshot
$grabzIt->URLToPDF("http://www.google.com");

// To save in case public callback handler is available
$grabzIt->Save("http://www.example.com/handler.php");   
// OR To save in case public callback handler is not available,
// it's a synchonous method can be usedthe will force your application to wait 
// while the screenshot is created
$filepath = "images/result.jpg";
$grabzIt->SaveTo($filepath);    

É possível obter outros tipos de imagens, como Screenshot imagem e etc .

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