복붙노트

PHP로 HTML + CSS를 PDF로 변환 하시겠습니까? [닫은]

PHP

PHP로 HTML + CSS를 PDF로 변환 하시겠습니까? [닫은]

Firefox 3 및 IE 7에서 잘 렌더링되는 HTML (XHTML 아님) 문서를 가지고 있습니다.이 템플릿은 상당히 기본적인 CSS를 사용하여 스타일을 지정하고 HTML로 잘 렌더링합니다.

나는 이제 그것을 PDF로 변환하는 방법을 따른다. 나는 시도했다 :

Html2Pdf Pilot이라는 Windows 응용 프로그램을 실제로 사용해 보았습니다. 그러나 최소한 Linux에서 실행되고 이상적으로 웹 서버에서 PHP를 통해 주문형으로 실행되는 무언가가 필요합니다.

무엇이 누락 되었습니까? 또는 어떻게이 문제를 해결할 수 있습니까?

해결법

  1. ==============================

    1.

    중대한: 이 답변은 2009 년에 작성되었으며 2018 년 현재 가장 비용 효율적인 솔루션이 아닐 수도 있습니다. PDFShift와 같은 온라인 대안은 현재 이보다 더 좋았습니다.

    PrinceXML을 살펴보십시오.

    무료이지만 (비록 헤이, 당신의 프로그래밍은 무료가 아니기 때문에, 당신에게 10 시간의 작업 시간을 절약한다면 집이 무료입니다.) 대체 솔루션을 사용하려면 적절한 소프트웨어가있는 전용 서버를 설치해야합니다.

    오, 예, 이것이 ACID2 전체를 수행하는 최초의 HTML2PDF 솔루션이라고 언급 했습니까?

    PrinceXML 샘플

  2. ==============================

    2.

    wkhtmltopdf를 살펴보십시오. 웹킷과 무료로 제공되는 오픈 소스입니다.

    우리는 여기서 작은 자습서를 썼습니다.

    편집 (2017) :

    오늘 무언가를 만드는 것이었다면 더 이상 그 길을 가지 않을 것입니다. 그러나 대신 http://pdfkit.org/를 사용할 것입니다. 브라우저에서 실행하기 위해 모든 nodejs 종속성을 제거합니다.

  3. ==============================

    3.

    몇 가지 조사와 일반적인 헤어 풀링 후 솔루션은 HTML2PDF 인 것으로 보입니다. DOMPDF는 테이블, 테두리, 중간 크기의 복잡한 레이아웃으로도 끔찍한 일을했다. htmldoc은 상당히 견고하지만 거의 CSS를 모르는 사람이다. CSS를 사용하지 않고 HTML 레이아웃을 만들고 싶지 않다.

    HTML2PDF가 가장 유망 해 보였지만 node_type에 대한 null 참조 인수에 대해이 이상한 오류가 계속 발생했습니다. 나는 이것에 대한 해결책을 마침내 발견했다. 기본적으로 PHP 5.1.x는 어떤 크기의 문자열에서도 정규 표현식 (preg_replace_ *)을 대체하여 잘 작동합니다. PHP 5.2.1은 pcre.backtrack_limit이라는 php.ini 설정 지시자를 도입했습니다. 이 구성 매개 변수는 일치가 수행 된 문자열 길이를 제한합니다. 이것이 왜 소개되었는지 나는 모른다. 기본값은 100,000으로 선택되었습니다. 왜 그렇게 낮은 가치입니까? 다시 말하지만, 아무 생각이 없습니다.

    이 때문에 PHP 5.2.1에 대한 버그가 제기되었는데, 약 2 년 후에 아직 열리고 있습니다.

    이 점에 대해 소름 끼치는 점은 제한을 초과하면 교체가 자동으로 실패한다는 것입니다. 적어도 오류가 제기되고 기록 된 경우 어떤 일이 일어 났는지, 왜 고쳐야 할 지, 그리고 무엇을 변경해야하는지에 대해 알 수 있습니다. 하지만.

    그래서 저는 PDF로 변환하기 위해 70k HTML 파일을 가지고 있습니다. 다음 php.ini 설정이 필요합니다.

    이제는 기민한 독자가 내 HTML 파일이 100k보다 작다는 사실을 눈치 챘을 것입니다. 왜 내가이 문제에 부딪혔는가를 짐작할 수있는 유일한 이유는 html2pdf가 프로세스의 일부로 xhtml 로의 변환을한다는 것입니다. 아마 그것은 나를 데려 갔다. (비록 거의 50 %가 부풀어 오른다.) 어쨌든, 위의 일을했습니다.

    자, html2pdf는 리소스 돼지입니다. 내 70k 파일은 35 페이지의 PDF 파일을 만들기 위해 약 5 분, 최소 500-600M의 RAM이 필요합니다. 불행히도 실시간 다운로드를 위해 충분히 빠르지는 않으며 메모리 사용량은 메모리 사용 비율을 1000 대 1 (70k 파일의 경우 600M RAM)의 순서로 지정합니다. 이는 완전히 우스 꽝입니다.

    불행히도, 그게 내가 생각해 낸 것 중 최고야.

  4. ==============================

    4.

    왜 mPDF 버전 2.0을 사용해 보지 않으시겠습니까? 나는 그것을 PDF 문서를 만들 때 사용했다. 그것은 잘 작동합니다.

    한편 mPDF는 버전 5.7이며 HTML2PS / HTML2PDF와는 달리 적극적으로 유지 관리됩니다.

    하지만 문서는 실제로 처리하기가 어려울 수 있음을 명심하십시오. 예를 들어, https://mpdf.github.io/에서이 페이지를보십시오.

    html에서 pdf에 이르는 매우 기본적인 작업은이 라이브러리로 수행 할 수 있지만보다 복잡한 작업은 문서를 읽고 이해하는 데 다소 시간이 걸립니다.

  5. ==============================

    5.

    a) 폴더에서 추출

    b) yourfolder에 file.php를 만들고 다음 코드를 삽입하십시오 :

    <?php
    include('../mpdf.php');
    $mpdf=new mPDF();
    $mpdf->WriteHTML('<p style="color:red;">Hallo World<br/>Fisrt sentencee</p>');
    $mpdf->Output();   exit;
     ?>
    

    c) 브라우저에서 file.php를 엽니 다.

    1) 루트 폴더에 pdftohtml.exe 압축을 풉니 다.

    2) 그 폴더 안의 anyfile.php 파일에이 코드를 넣으십시오 (가정에서는 example.pdf 소스도 있음).

    <?php
    $source="example.pdf";
    $output_fold="FinalFolder";
    
        if (!file_exists($output_fold)) { mkdir($output_fold, 0777, true);}
    $result= passthru("pdftohtml $source $output_fold/new_filename",$log);
    //var_dump($result); var_dump($log);
    ?>
    

    3) FinalFolder를 입력하면 변환 된 파일이 생성됩니다 (원본 PDF와 같은 수의 페이지).

  6. ==============================

    6.

    Checkout TCPDF. 그것은 당신이 필요로하는 것만으로도 충분할 수있는 몇 가지 HTML to PDF 기능을 가지고 있습니다. 그것은 또한 무료입니다!

  7. ==============================

    7.

    필자는 DocRaptor (PrinceXML을 "엔진"으로 사용함)을 제안합니다.

  8. ==============================

    8.

    스레드를 부딪히기 위해 DOMPDF를 시도했지만 완벽하게 작동했습니다. 모든 것을 배치하기 위해 DIV와 다른 블록 레벨 요소를 사용했으며 엄격하게 CSS 2.1로 유지했으며 veru를 멋지게 재생했습니다.

  9. ==============================

    9.

    좋은 소식! 팔팔한!!

    스냅은 URL이나 HTML 페이지에서 축소판, 스냅 샷 또는 PDF 생성을 허용하는 매우 쉬운 오픈 소스 PHP5 라이브러리입니다. 그리고 ... 훌륭한 웹킷 기반 wkhtmltopdf를 사용합니다.

    즐겨! ^ _ ^

  10. ==============================

    10.

    당신이 PDF 변환기 도서관에 완벽한 XHTML + CSS를 찾아 내고 싶은 경우에, 그것을 잊으십시오. 그것은 가능하지 않습니다. 이는 완벽한 브라우저 (XHTML + CSS 렌더링 엔진)를 찾는 것과 같습니다. 우리가 가지고 있습니까? IE 또는 FF?

    나는 DOMPDF를 성공 시켰습니다. 문제는 라이브러리가 작동하는 방식과 함께 사용하기 위해 HTML + CSS 코드를 수정해야한다는 것입니다. 그것 이외에, 나는 꽤 좋은 결과를 가지고있다.

    아래 참조 :

    원본 HTML

    HTML을 PDF로 변환

  11. ==============================

    11.

    이미 언급되었지만, mpdf가 가장 쉽고, 강력하며, 무료로 제공되는 html to pdf 변환기라는 것을 확인하고 싶습니다. 하늘은 정말로 한계입니다. 동적 사용자 생성 데이터의 pdfs를 생성 할 수도 있습니다.

    예를 들어, 고객이 CMS 시스템을 원했기 때문에 클럽에서 연주 한 음악의 트랙 목록을 업데이트 할 수있었습니다. 문제가 없었지만 사용자가 재생 목록의 .pdf를 다운로드 할 수 있기를 원했기 때문에 다운로드 가능한 pdf도 CMS에서 업데이트해야했습니다. mpdf 덕분에, 몇 가지 간단한 루프와 산재 된 변수로 나는 그 일을 할 수있었습니다. 문자 그대로 몇 주일이 걸릴 것이라고 생각한 무언가가 나를 분 걸렸다.

    내가 시작하는 데 도움이되는 위대한 기사.

  12. ==============================

    12.

    외부 라이브러리없이 php (파트 1, 파트 2)에서 pdf를 생성하는 Zend의 devzone에 대한 자습서가 있습니다. 필자는 이런 종류의 솔루션을 구현 한 적이 없지만 모든 PHP를 사용하기 때문에 구현 및 디버깅을보다 유연하게 수행 할 수 있습니다.

  13. ==============================

    13.

    나는 PHP를 사용하여 PDF 파일을 생성하기 위해 fpdf를 사용하고있다. 지금까지는 간단한 출력물을 제작하는 데는 저에게 유리했습니다.

  14. ==============================

    14.

    처음에 오프닝 포스트에서 언급 한 HTML2PDF 및 HTML2PS는이 링크가있는 2009 패키지에 대해 이야기하고있었습니다.

    그러나 더 나은 HTML2PDF가 있습니다.

    부분적으로는 프랑스어이지만 TCPDF를 기반으로합니다.

    페이지에서 반복되는 테이블 머리글 또는 바닥 글을 가질 수 있으며 페이지 번호와 전체 페이지가 있습니다. 그 예를 보라. 나는 3 년 이상 그것을 사용하고 그것을 추천했다.

  15. ==============================

    15.

    비용면에서 웹 서비스 (API)를 사용하는 것이 더 현명한 접근 방법이 될 수 있습니다. 또한이 프로세스를 외부에서 조달함으로써 자체 인프라 / 백엔드의 부담을 줄이고 평판이 좋은 서비스를 제공한다면 웹 표준, 가동 시간, 짧은 처리 시간 및 신속한 컨텐트 공급 조정과의 호환성을 보장 할 수 있습니다.

    현재 시장에 나와있는 대부분의 웹 서비스에 대한 조사를 해본 결과 가격 / 가격 비율에 따라 순서대로이 스레드에서 언급 할 가치가 있다고 생각되는 API를 찾으십시오. 그들 모두는 미리 구성된 PHP 클래스와 패키지를 제공하고 있습니다.

    품질:

    DocRaptor는 고품질 엔진 PrinceXML을 백본으로 사용하여 분명히 최고의 PDF 품질을 제공하고 고도로 세련되고 잘 변환 된 PDF 문서를 반환합니다. 그러나 pdflayer API 서비스는 여기에서 매우 가깝습니다. Pdfcrowd는 반드시 품질이 좋지만 처리 속도가 좋습니다.

    비용:

    pdflayer.com - 위에서 설명한 바와 같이 가장 비용 효율적인 옵션은 pdflayer.com으로 100 개 월간 PDF 및 $ 9.99- $ 119.99 범위의 프리미엄 가입에 대한 무료 가입 계획을 제공합니다. 월별 PDF 문서 10,000 개당 가격은 39.99 달러입니다.

    docraptor.com - 7 일 무료 평가판 기간 제공. 프리미엄 가입 플랜은 $ 15- $ 2250입니다. 월별 PDF 문서 10,000 개가 ~ 300.00 달러입니다.

    pdfcrowd.com - 무료 PDF 100 통 제공. 프리미엄 가입 플랜은 $ 9- $ 89입니다. 월별 PDF 문서 10,000 개가 ~ $ 49.00입니다.

    저는이 세 가지를 모두 사용했으며이 텍스트는 모든 사람들이 비용을 지불하지 않고도 결정할 수 있도록 돕기로되어 있습니다. 이 텍스트는 특정 제품을 보증 할 목적으로 작성된 것이 아니며 제품과 아무런 관련이 없습니다.

  16. ==============================

    16.

    TCPDF에 대한 Darryl Hein의 언급은 좋은 생각 일 수 있습니다. Nicola Asuni의 코드는 매우 편리하고 강력합니다. 유일한 킬러는 PDF 파일을 생성 된 PDF와 병합 할 계획이라면 그 기능이없는 것입니다. PDF를 작성한 다음 Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)의 PDFTK와 같은 것을 사용하여 병합해야합니다.

  17. ==============================

    17.

    최신 야간 dompdf 빌드 잡아보십시오 - 나는 끔찍한 리소스 돼지 였고 영원히 내 PDF를 렌더링하는 데 사용되는 이전 버전을 사용했다. 여기에서 야간을 붙잡고 난 후에.

    PDF를 생성하는 데 몇 초 밖에 걸리지 않았습니다. PrinceXML / Docraptor와 마찬가지로 멋지게 렌더링되었습니다. 마치 내가 마지막으로 사용했기 때문에 dompdf 코드를 심각하게 최적화 한 것처럼 보입니다!

  18. ==============================

    18.

    명령 줄에 액세스 할 수 있다면 PhantomJS를 사용하여 URL (원격 또는 로컬)에서 PDF를 작성할 수 있습니다.

    그것은 정말 잘 작동하며 무료 솔루션입니다.

    이 정확한 문제를 해결하기 위해 만들어진 예제 스크립트를 살펴보십시오.

  19. ==============================

    19.

    이 질문은 이미 꽤 오래되었지만 CutyCapt에 대해 언급 한 사람은 본 적이 없습니다. :)

    CutyCapt

  20. ==============================

    20.

    아마도 파일을 변환기로 넘기기 전에 Tidy를 시도해 볼 수도 있습니다. 일부 HTML 문제 (예 : 닫히지 않은 태그)에서 렌더러 중 하나가 질식하면 도움이 될 수 있습니다.

  21. ==============================

    21.

    나는 PHP 클래스가 CSS와 함께 xHtml 페이지를 렌더링하는 데 가장 좋다고 생각하지 않는다.

    새로운 CSS 규칙이 나오면 어떻게 될까요? (곧 css 3.0 ...)

    html 페이지를 렌더링하는 가장 좋은 방법은 브라우저입니다 (obvisiuly). Firefox 3.0은 기본적으로 pdf 형식으로 '인쇄'할 수 있으며, torisugary는이를 사용하기위한 확장 (명령 줄 인쇄)을 개발했습니다. 여기에서 찾을 수 있습니다.

    어쨌든, 여전히 PDF 파일 변환기로 파이어 폭스를 실행하는 많은 문제가 있습니다 ...

    지금은 wkhtmltopdf가 최고라고 생각합니다 (즉, 사파리 브라우저에서 사용하는 것입니다). 빠르며, 빠르며, 굉장합니다. 예, opensource뿐입니다 ... 훑어보기

  22. ==============================

    22.

    웹 페이지에서 PDF 파일을 작성하기위한 공용 API를 개발했습니다. 그것은 사용하기 쉬운 슈퍼 PHP 클라이언트 클래스가 있습니다. wkhtmltopdf를 사용하여 클라우드에서 PDF를 렌더링합니다.

    HTML에서 특별한 것이 필요하지 않습니다. images / css / js 링크에 절대 URL이 필요 없습니다. localhost (dev 컴퓨터)에서도 작동합니다.

    현재이 서비스는 Azure 4 개 지역 (미국 동부, 미국 서부, EU 북부, 동남아시아)에 종점이 있습니다.

    독점 프로토콜을 사용하여 웹 페이지 내용을 API로 보내 PDF로 변환하기 때문에 빠릅니다.

    모든 엔드 포인트의로드 균형이 조정되므로 신뢰성이 있습니다.

    무료 계정은 테스트 또는 낮은 사용 가능. 웹 사이트 세부 정보 :

    https://rotativahq.com

  23. ==============================

    23.

    이미 제공되는 솔루션이 많지만 다음 두 가지를 권장합니다.

    앞서 언급 한 모든 솔루션에서이 두 API와 다른 점은 HTML을 CSS 및 JavaScript로 PDF로 변환하는 것 외에도 PDF 권한 관리, 워터 마킹 및 암호화를 제공한다는 것입니다. 따라서이 제품은 지상에서 뛰고 싶은 사람들을위한 올인원 (all-in-one) 솔루션입니다.

    면책 조항 : 나는이 웹 사이트를 운영하는 Kaiomi 회사에서 일합니다.

  24. ==============================

    24.

    좋은 렌더링은 아무 의미도 없습니다. 그것을 확인합니까?

    입력이 얼마나 나쁜지에 상관없이 모든 브라우저가 화면에 무엇인가를 보여줄 수있는 최대의 기능을합니다. 물론 그들은 같은 일을하지 않습니다. FireFox와 동일한 렌더링을 원한다면 렌더링 엔진을 사용할 수 있습니다. 거기에 대한 PDF 생성기가 있습니다. 그것은 끔찍한 일입니다.

  25. ==============================

    25.

    나는 TCPDF 또는 DOMPDF를 추천한다.

  26. ==============================

    26.

    나는 PHP를 위해 많은 라이브러리를 시도했다. 내가 열거 한 모든 것을 시도했다. 내 견해로는 TCPDF 라이브러리가 최상의 성능 / 유용성이다. 설치와 사용이 매우 간단하며 중소 규모의 응용 프로그램에서도 좋은 성능을 발휘합니다. 높은 성능과 큰 PDF 문서가 필요하다면 Zend_PDF 모듈을 사용하십시오.

  27. ==============================

    27.

    HTML을 PDF로 변환하는 작업은 PHP를 사용하여 서버 측에서 실제로 수행해야합니까?

    방금 HTML5 / JavaScript를 사용하는 클라이언트 측 솔루션 인 jsPDF를 발견했습니다. MIT 라이선스 코드는 GitHub에서도 제공됩니다.

  28. ==============================

    28.

    TCPDF는 잘 작동하고, 종속성이없고, 자유롭고 끊임없이 버그 수정을합니다. 제공된 HTML / CSS 내용이 잘 형성되면 합리적인 속도입니다. 나는 보통 50 - 300 kB의 HTML 입력 (CSS 포함)을 생성하고 10-15 PDF 페이지로 1-3 초 내에 PDF 출력을 얻습니다.

    TCPDF에 무엇인가 보내기 전에 깔끔한 라이브러리를 HTML 예쁜 포맷터로 사용할 것을 강력히 권장한다.

  29. ==============================

    29.

    PHP는 아니지만, Java 라이브러리를 사용합니다.

    PHP에서 system () 또는 유사한 호출을 통해 사용할 수 있습니다. 그것은 입력의 XML 정형성을 필요로하지만.

  30. ==============================

    30.

    항상 이런 종류의 물건을 찾는 사람들이 있다면, HTML 코드와 페이지를 pdf로 변환 할 수있는 무료 웹 사이트가 있습니다. URL에서 pdf 파일을 얻을 수있는 (아주 작은) API도 있습니다.

    그것을 여기에서 확인해라.

  31. from https://stackoverflow.com/questions/391005/convert-html-css-to-pdf-with-php by cc-by-sa and MIT lisence