문제

저는 PHP 개발자이고 내 프로젝트 중 하나에서 일부 HTML 문서(약 30~50페이지)를 PDF 문서로 변환해야 합니다.

내 검색 결과 다음과 같은 가능한 해결책이 나타났습니다.그 중에는 일부 PHP 라이브러리와 일부 명령줄 애플리케이션이 있습니다.각각에는 고유한 장점과 단점이 있습니다.

PHP 라이브러리:

  1. fpdf (변환하려면 더 많은 노력이 필요함)
  2. tcpdf (변환하려면 더 많은 노력이 필요함)
  3. html2fpdf http://html2fpdf.sourceforge.net
  4. HTML2PDF http://html2pdf.fr/
  5. 돔pdf http://code.google.com/p/dompdf/ (다른 것에 비해 잘 작동함)

각 라이브러리마다 다음과 같은 문제가 있습니다.

  1. 시간이 오래 걸림(HTML 30페이지를 변환하는데 5분 이상)
  2. 너무 많은 리소스(메모리 및 시간) 필요

    (php.ini에서 다음 매개변수를 설정했습니다.

    max_execution_time = 600
    memory_limit = 250M

    하지만 여전히 작동하지 않습니다.)

  3. 올바른 형식의 HTML 페이지가 필요합니다(예:누락된 닫기 태그 없음)

이러한 모든 작업은 간단한 HTML 문서(CSS가 거의 없는 5페이지 이하)를 변환하려고 할 때 작동합니다.

명령줄 애플리케이션

모든 명령줄 앱은 위의 라이브러리에 비해 완벽하고 매우 빠르게 작동하지만 콘솔에서 직접 실행할 때만 작동합니다.PHP에서 사용하려고 할 때 exec() 또는 system(), 그들은 나에게 오류를 제공합니다.

다음은 명령줄 응용 프로그램과 PHP에서 실행할 때 발생하는 오류입니다.

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

    html2pdf:11380):Gtk-경고 **:디스플레이를 열 수 없습니다::0.0
    프로토콜이 지정되지 않았습니다.

  2. wkhtmltopdf

    로딩 페이지:10%
    로딩 페이지:33%
    로딩 페이지:100%
    리디렉션을 기다리는 중
    페이지 출력
    QPainter::시작():거짓으로 반환됨
    QPainter::시작():거짓으로 반환됨
    QPainter::저장:화가가 활동하지 않음
    QPainter::규모:화가가 활동하지 않음
    QPainter::setRenderHint:렌더링 힌트를 설정하려면 Painter가 활성화되어 있어야 합니다.
    QPainter::setBrush:화가가 활동하지 않음
    QPainter::펜:화가가 활동하지 않음
    QPainter::세트펜:화가가 활동하지 않음

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

그래서 지금 나는 도움을 찾고 있습니다.누구든지 대답할 수 있습니까?

내 경우에는 어떤 PHP 라이브러리가 잘 작동할까요?

명령줄 응용 프로그램에서 이러한 오류가 발생하는 이유는 무엇입니까?

도움이 되었습니까?

해결책

에 관하여 wkhtmltopdf:

  • 이 기능은 놀라울 정도로 빠르게 작동하며 모든 종류의 HTML/CSS를 처리할 수 있으므로 속도가 필요할 경우 심각하게 고려해야 합니다.최근 우리 회사에서 이 솔루션으로 전환했는데 PDF 제공 속도가 엄청나게 빨라졌습니다.

  • 적어도 Linux에서는 XOrg 라이브러리를 설치해야 합니다. 서버에는 일반적으로 XOrg 라이브러리가 없으므로 문제가 될 수 있습니다.

다른 팁

이 시도:

당신은 시도 했습니까? 왕자?

그러나 온라인 서비스를 사용하고 HTML 콘텐츠를 HTTP로 보내면 어떻게됩니까? 물론 대부분은 무료가 아닙니다.

한 가지 가능성 : 스크립트를 자동으로 제공합니다.

  1. 웹 페이지를 가져 가십시오
  2. 웹 브라우저에서 해당 페이지를 엽니 다
  3. 해당 페이지의 스크린 캡을 사용하십시오
  4. PDF로 바꿉니다

4 단계는 쉽습니다. PDF에 이미지를 넣거나 변환 할 수있는 PHP/CMDLINE 라이브러리가 많이 있습니다 (예 : FPDF).

1-3 단계의 경우 ... 여기에서 코드를 살펴볼 수 있습니다. http://browsershots.org/. 관련이 있는지 확실하지 않습니다. 많은 설정이 필요한 것 같습니다. 아마도 그들의 건축이 효과가있을 수 있습니까?

몇 가지 질문과 제안 :

  • 정말 PDF로 변환해야합니까? 왜요? 경우에 따라 HTML을 고수하는 것이 좋습니다.
  • PDF AN 옵션을 생성하는 서버의 하드웨어를 업그레이드하고 있습니까? 시도한 모든 라이브러리가 생성하는 데 너무 오래 걸리면 유일한 옵션이 서버를 업그레이드하는 것일 수 있기 때문에 이것을 물었습니다.
  • 명령 줄 오류의 문제를 해결할 수 있습니다. 가장 빠른 결과를 제공한다면 그 주변의 작업을 찾으십시오.

HTMLDOC CommandLine 도구 프로젝트를 사용해보십시오 https://www.msweet.org/projects.php?z1

HTML을 PDF로 변환하는 데 많은 솔루션이 있습니다. https://grabz.it.

Cronjobs 또는 PHP 웹 페이지에서 직접 사용할 수있는 유연한 PHP API가 있습니다.

시도하고 싶다면 처음에는 앱 키 + 비밀 승인과 개발 무료 SDK

다음은 기본 구현의 예입니다.

//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);    

다음과 같은 다른 종류의 스크린 샷을 얻을 수 있습니다. 이미지 스크린 샷 등.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top