etc./StackOverFlow

HTML 및 CSS를 PDF에 추가하는 방법 [닫은]

청렴결백한 만능 재주꾼 2022. 1. 4. 06:05
반응형

질문자 :Community Wiki


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

이제 PDF로 변환하는 방법을 찾고 있습니다. 나는 시도했다:

  • DOMPDF : 테이블에 큰 문제가 있었습니다. 내 큰 중첩 테이블을 제외하고 도움이되었지만 (최대 128M의 메모리를 소비하기 전에 죽어 가고있었습니다. php.ini의 메모리 제한입니다) 테이블을 완전히 엉망으로 만들고 얻지 못하는 것 같습니다. 이미지. 표는 다양한 지점에 선을 추가하기 위한 테두리 스타일이 있는 기본적인 것이었습니다.
  • HTML2PDF 및 HTML2PS : 저는 사실 이것으로 운이 좋았습니다. 일부 이미지(모든 이미지는 Google 차트 URL임)를 렌더링했고 테이블 형식은 훨씬 더 좋았지만 아직 파악하지 못한 복잡성 문제가 있는 것 같았고 알 수 없는 node_type() 오류로 계속 죽어갔습니다. 여기에서 어디로 가야할지 확실하지 않습니다. 그리고
  • Htmldoc : 이것은 기본 HTML에서 잘 작동하는 것 같지만 CSS에 대한 지원이 거의 없으므로 HTML에서 모든 작업을 수행해야 합니다.

실제로 꽤 괜찮은 작업을 수행한 Html2Pdf Pilot이라는 Windows 앱을 사용해 보았지만 최소한 Linux에서 실행되고 이상적으로는 웹 서버에서 PHP를 통해 주문형으로 실행되는 것이 필요합니다.

내가 놓치고 있는 것이 무엇이며 이 문제를 어떻게 해결할 수 있습니까?



wkhtmltopdf 살펴보십시오. 웹킷을 기반으로 하는 오픈 소스이며 무료입니다.

우리는 여기에 작은 튜토리얼을 작성했습니다.

편집(2017):

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


Community Wiki

중요: 이 답변은 2009년에 작성되었으며 2019년 현재 가장 비용 효율적인 솔루션이 아닐 수도 있습니다. 온라인 대안은 당시보다 오늘날 더 좋습니다.

다음은 사용할 수 있는 몇 가지 온라인 서비스입니다.


PrinceXML 을 살펴보십시오.

무료는 아니지만 최고의 HTML/CSS를 PDF로 변환하는 변환기임이 분명합니다(하지만 프로그래밍도 무료가 아닐 수 있으므로 10시간의 작업 시간을 절약할 수 있다면 집에 있는 것입니다. 대체 솔루션을 사용하려면 올바른 소프트웨어로 전용 서버를 설정해야 합니다.)

오 예, 이것이 전체 ACID2 를 수행하는 최초의(그리고 아마도 유일한) HTML2PDF 솔루션이라고 언급했습니까?

PrinceXML 샘플


Community Wiki

몇 가지 조사와 일반적인 헤어 풀링 후에 솔루션은 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 설정이 필요합니다.

  • pcre.backtrack_limit = 2000000; # 아마도 내가 필요로 하는 것보다 더 많을 수 있지만 괜찮습니다.
  • memory_limit = 1024M; # 예, 1기가바이트 ; 그리고
  • max_execution_time = 600; # 네, 10분 .

이제 눈치 빠른 독자는 내 HTML 파일이 100k보다 작다는 것을 알아차렸을 것입니다. 내가 이 문제를 일으킨 이유를 추측할 수 있는 유일한 이유는 html2pdf가 프로세스의 일부로 xhtml로 변환하기 때문입니다. 아마도 그것이 나를 사로 잡았을 것입니다 (거의 50 %가 이상해 보이지만). 어떤 경우이든 위의 작업은 효과가 있었습니다.

이제 html2pdf는 리소스 돼지입니다. 내 70k 파일은 35페이지 PDF 파일을 만드는 데 약 5분이 걸리고 최소 500-600M RAM이 필요합니다. 불행히도 실시간 다운로드에 대해서는 (지금까지) 충분히 빠르지 않으며 메모리 사용량은 메모리 사용량 비율을 1000:1(70k 파일의 경우 600M RAM) 정도로 유지하는데, 이는 완전히 터무니없는 일입니다.

불행히도, 그것이 내가 생각해낸 최고입니다.


Community Wiki

mPDF 버전 2.0 을 사용해 보시지 않겠습니까? PDF 문서를 만드는 데 사용했습니다. 잘 작동합니다.

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

그러나 문서를 처리하기가 정말 어려울 수 있음을 명심하십시오. 예를 들어 https://mpdf.github.io/ 페이지를 살펴보십시오.

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


Community Wiki

  1. MPDF를 사용하십시오! ==

a) yourfolder

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 를 엽니다.




2) pdfToHtml을 사용하세요!


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

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

  3. FinalFolder 를 입력하면 변환된 파일이 있습니다(원본 PDF의 페이지 수만큼..)


Community Wiki

체크아웃 TCPDF . 그것은 당신이 필요로하는 것에 충분할 수있는 PDF 기능을 HTML로 가지고 있습니다. 또한 무료입니다!


Community Wiki

스레드를 충돌시키기 위해 DOMPDF를 시도했고 완벽하게 작동했습니다. DIV 및 기타 블록 수준 요소를 사용하여 모든 것을 배치했으며 CSS 2.1을 엄격하게 유지했으며 매우 훌륭하게 재생되었습니다.


Community Wiki

DocRaptor PrinceXML 을 "엔진"으로 사용)를 제안합니다.


Community Wiki

좋은 소식! 스내피 !!

Snappy는 URL이나 html 페이지에서 썸네일, 스냅샷 또는 PDF를 생성할 수 있는 매우 쉬운 오픈 소스 PHP5 라이브러리입니다. 그리고... 뛰어난 웹킷 기반 wkhtmltopdf를 사용합니다.

즐기다! ^_^


Community Wiki

이미 언급했지만 mpdf가 가장 쉽고 강력하며 가장 무료인 HTML to pdf 변환기임을 확인하고 싶습니다. 하늘은 정말 한계입니다. 동적 사용자 생성 데이터의 PDF를 생성할 수도 있습니다.

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

시작하는 데 도움이 된 훌륭한 기사.


Community Wiki

완벽한 XHTML+CSS to PDF 변환기 라이브러리를 찾으려면 잊어버리십시오. 그것은 가능하지 않습니다. 마치 완벽한 브라우저를 찾는 것과 같기 때문입니다(XHTML+CSS 렌더링 엔진). 하나가 있습니까? IE 또는 FF?

나는 DOMPDF로 약간의 성공을 거두었다. 문제는 라이브러리가 작동하도록 의도된 방식에 맞게 HTML+CSS 코드를 수정해야 한다는 것입니다. 그 외에는 꽤 좋은 결과를 얻었습니다.

아래 참조:

원본 HTML

HTML을 PDF로 변환


Community Wiki

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

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

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

페이지에서 반복되는 표 머리글 또는 바닥글이 있고 페이지 번호와 총 페이지가 있을 수 있습니다. 예제를 참조하십시오. 3년 넘게 사용하고 있는데 추천합니다.


Community Wiki

fpdf 를 사용하여 PHP를 사용하여 PDF 파일을 생성하고 있습니다. 지금까지 간단한 출력을 생성하는 것이 잘 작동하고 있습니다.


Community Wiki

외부 라이브러리 없이 PHP에서 pdf를 생성하는 방법에 대한 Zend의 devzone( 1 부 , 2부)에 대한 자습서가 있습니다. 나는 이런 종류의 솔루션을 구현한 적이 없지만 모두 php이기 때문에 구현하고 디버그하는 것이 더 유연하다는 것을 알게 될 것입니다.


Community Wiki

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


Community Wiki

최신 야간 dompdf 빌드를 가져오십시오. 나는 끔찍한 리소스 돼지였고 내 pdf를 렌더링하는 데 영원히 걸렸던 이전 버전을 사용하고 있었습니다. 여기 에서 밤샘을 잡은 후.

PDF를 생성하는 데 몇 초 밖에 걸리지 않았으며 PrinceXML / Docraptor에서 와 마찬가지로 멋지게 렌더링되었습니다. 내가 마지막으로 사용한 이후로 그들이 dompdf 코드를 심각하게 최적화한 것 같습니다!


Community Wiki

비용 측면에서 웹 서비스(API)를 사용하는 것이 많은 경우 더 합리적인 접근 방식일 수 있습니다. 또한 이 프로세스를 아웃소싱하여 자체 인프라/백엔드의 부담을 줄이고 평판이 좋은 서비스를 사용하는 경우 웹 표준 조정, 가동 시간, 짧은 처리 시간 및 빠른 콘텐츠 전달과의 호환성을 보장합니다.

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

  1. pdflayer.com - 비용: $ - 품질: ☆☆☆☆
  2. docraptor.com - 비용: $$$ - 품질: ☆☆☆☆☆
  3. pdfcrowd.com - 비용: $$ - 품질: ☆☆☆

품질:

고품질 엔진 PrinceXML 을 백본으로 사용하는 DocRaptor는 분명히 최고의 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 - 100개의 PDF를 한 번 무료로 제공합니다. 프리미엄 구독 계획의 범위는 $9-$89입니다. 월간 PDF 문서 10,000개의 가격은 ~ $49.00입니다.

나는 세 가지를 모두 사용했으며 이 텍스트는 모든 비용을 지불하지 않고도 결정하는 데 도움이 될 것입니다. 이 텍스트는 한 제품을 보증하기 위해 작성된 것이 아니며 저는 그 어떤 제품과도 아무런 관련이 없습니다.


Community Wiki

명령줄에 액세스할 수 있는 경우 PhantomJS 를 사용하여 URL (원격 또는 로컬)에서 PDF

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

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


Community Wiki

이 질문은 이미 꽤 오래되었지만 CutyCapt를 언급하는 사람을 본 적이 없으므로 하겠습니다. :)

큐티캡트

CutyCapt 는 WebKit의 웹 페이지 렌더링을 SVG, PDF, PS, PNG, JPEG, TIFF, GIF 및 BMP를 포함한 다양한 벡터 및 비트맵 형식으로 캡처하는 작은 플랫폼 간 명령줄 유틸리티입니다.


Community Wiki

TCPDF 또는 DOMPDF를 순서대로 권장합니다.


Community Wiki

나는 PHP 클래스가 CSS로 xHtml 페이지를 렌더링하는 데 가장 적합하다고 생각하지 않습니다.

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

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

어쨌든, 여전히 많은 problmes 그냥 PDF 변환기로 파이어 폭스를 runninr있다 ...

현재로서는 wkhtmltopdf가 최고(safari 브라우저에서 사용되는 것), 빠르고, 빠르고, 굉장하다고 생각합니다. 예, 오픈 소스도... 한번 보세요


Community Wiki

웹 페이지에서 PDF 파일을 빌드하는 공개 API를 개발했습니다. 그것은 매우 사용하기 쉽게 만드는 멋진 PHP 클라이언트 클래스를 가지고 있습니다. wkhtmltopdf를 사용하여 클라우드에서 PDF를 렌더링합니다.

HTML에서 특별한 것은 필요하지 않습니다. images/css/js 링크에 절대 URL이 필요하지 않습니다. localhost(개발 머신)에서도 작동합니다.

현재 이 서비스에는 미국 동부, 미국 서부, EU 북부, 동남아시아의 4개 Azure 지역에 엔드포인트가 있습니다.

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

모든 엔드포인트가 로드 밸런싱되기 때문에 안정적입니다.

테스트용으로 사용 가능한 무료 계정 또는 사용량이 적습니다. 웹 사이트에 대한 세부 정보:

https://rotativahq.com


Community Wiki

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


Community Wiki

좋은 렌더링은 아무 의미가 없습니다. 확인합니까?

모든 브라우저는 입력이 아무리 나쁘더라도 화면에 무언가를 표시하기 위해 최선을 다합니다. 그리고 물론 그들은 같은 일을 하지 않습니다. FireFox와 동일한 렌더링을 원하면 해당 렌더링 엔진을 사용할 수 있습니다. pdf 생성기가 있습니다. 그것은 끔찍하게 많은 작업입니다.


Community Wiki

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

  1. HTM2PDF - HTML을 PDF로 변환하는 API를 제공하며 PHP SDK도 포함하므로 PHP에서 구현하기가 매우 쉽습니다. 유럽, 아시아 및 미국에서 서버 위치를 선택할 수 있습니다.
  2. PDFmyURL - HTM2PDF와 거의 동일한 기능으로 URL 및 HTML을 PDF로 변환하는 API를 제공하지만 로드 밸런싱된 환경에서 작동하며 조금 더 오래되었습니다.

앞서 언급한 모든 솔루션과 이 두 API가 다른 점은 CSS 및 JavaScript를 사용하여 HTML을 PDF로 변환하는 것 외에도 PDF 권한 관리, 워터마킹 및 암호화도 제공한다는 것입니다. 따라서 지상에서 실행하려는 사람들을 위한 올인원 솔루션입니다.

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


Community Wiki

HTML에서 PDF로의 변환은 실제로 PHP를 사용하여 서버 측에서 발생 해야 합니까?

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


Community Wiki

TCPDF는 잘 작동하고 종속성이 없으며 무료이며 지속적으로 버그가 수정됩니다. 제공되는 HTML/CSS 콘텐츠의 형식이 잘 잡혀 있으면 적당한 속도입니다. 나는 일반적으로 50 - 300kB의 HTML 입력(CSS 포함)을 생성하고 10 - 15개의 PDF 페이지로 1-3초 이내에 PDF 출력을 얻습니다.

TCPDF에 무엇이든 보내기 전에 깔끔한 라이브러리를 HTML 프리티 포맷터로 사용하는 것이 좋습니다.


Community Wiki

나는 PHP에 대해 많은 다른 라이브러리를 시도했습니다. 내가 시도한 모든 목록. 제 생각에는 TCPDF 라이브러리가 성능/사용성을 가장 잘 타협한 것입니다. 설치 및 사용이 매우 간단하며 중소형 애플리케이션에서도 우수한 성능을 발휘합니다. 고성능, 대용량 PDF 문서가 필요하다면 Zend_PDF 모듈을 사용하되 열심히 코딩할 준비를 하세요!


Community Wiki

웹 API

이런 종류의 것을 항상 검색하는 사람들이 있다면 html 코드 및 페이지를 pdf로 변환할 수 있는 무료 웹사이트가 있습니다. URL에서 pdf 파일을 가져올 수 있는 (매우 작은) API도 있습니다.

여기에서 확인


Community Wiki

PHP 가 아니라 다음을 수행하는 Java 라이브러리 입니다.

Flying Saucer는 XML 또는 XHTML을 가져와서 PDF로 렌더링하기 위해 CSS 2.1 호환 스타일시트를 적용합니다.

system() 또는 유사한 호출을 통해 PHP 에서 사용할 수 있습니다. input 의 XML 형식이 필요하지만 .


Community Wiki

출처 : http:www.stackoverflow.com/questions/391005/how-can-i-add-html-and-css-into-pdf

반응형