source

PDF에 HTML 및 CSS를 추가하는 방법

gigabyte 2022. 11. 19. 11:41
반응형

PDF에 HTML 및 CSS를 추가하는 방법

Firefox 3 및 IE 7에서 정상적으로 표시되는 HTML(XHTML이 아님) 문서를 가지고 있습니다.스타일링에 매우 기본적인 CSS를 사용하여 HTML로 적절하게 렌더링합니다.

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

  • DOMPDF: 테이블에 큰 문제가 있었습니다.큰 네스트 테이블을 삭제해 버리면 도움이 됩니다(최대 128M의 메모리를 소비하기 전에, php.ini의 메모리 제한에 맞았습니다).하지만 테이블이 완전히 뒤죽박죽이 되어 이미지를 얻을 수 없는 것 같습니다.테이블은 여러 지점에 선을 추가할 수 있는 테두리 스타일이 있는 기본적인 것들이었다.
  • HTML2PDF와 HTML2PS: 사실 저는 운이 좋았어요.일부 이미지(모든 이미지는 구글 차트 URL)를 렌더링하고 테이블 포맷은 훨씬 나아졌지만 아직 파악하지 못한 복잡성 문제가 있어 알 수 없는 node_type() 오류로 인해 계속 중단되었습니다.여기서 어디로 가야 할지 모르겠다.
  • Htmldoc: 이것은 기본적인 HTML에서는 정상적으로 동작하고 있는 것처럼 보이지만, CSS는 거의 지원되지 않기 때문에 HTML로 모든 것을 할 필요가 있습니다(Htmldoc-land에서는 아직 2001년인지 몰랐습니다).그래서 저는 쓸모가 없습니다.

Html2Pdf 파일럿이라는 Windows 앱을 사용해 보았습니다만, 적어도 Linux 상에서 동작해, Web 서버상에서 PHP 를 사용해 온 디맨드로 동작하는 것이 필요합니다.

부족한 점 또는 이 문제를 해결하려면 어떻게 해야 합니까?

보세요. 웹키트를 기반으로 한 무료 오픈 소스입니다.

저희가 여기에 작은 튜토리얼을 썼어요.

편집(2017):

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

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

사용할 수 있는 온라인 서비스는 다음과 같습니다.


PrinceXML을 보세요.

이것은 확실히 최적인 HTML/CSS/PDF 변환기입니다만, 무료는 아닙니다(하지만 프로그래밍도 무료가 아닐 수 있습니다).10시간의 작업 시간을 단축하면 자택에서도 무료입니다(대체 솔루션에서는 적절한 소프트웨어를 사용하여 전용 서버를 셋업할 필요가 있습니다).

네, 이것이 완전한 ACID2를 실현하는 최초의 (아마도 유일한) HTML2PDF 솔루션이라고 말씀드렸습니까?

PrinceXML 샘플

조사와 일반적인 머리털 뽑기를 통해 해결방법은 HTML2PDF인 것 같습니다.DOMPDF는 테이블, 테두리, 심지어 적당히 복잡한 레이아웃도 엉망으로 처리했습니다.htmldoc은 상당히 견고해 보이지만 거의 완전히 CSS를 무시하고 있기 때문에 그 프로그램만을 위해 HTML 레이아웃을 실행하고 싶지 않습니다.

HTML2PDF가 가장 유망해 보였는데 node_type에 대한 null reference 인수에 대한 이상한 오류가 계속 발생했습니다.나는 마침내 이것의 해결책을 찾았다.기본적으로 PHP 5.1.x는 모든 크기의 문자열에서 regex 치환(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_syslog_time = 600, # 예, 10분입니다.

이제 현명한 리더는 내 HTML 파일이 10K보다 작다는 것을 알아차렸을지도 모른다.제가 이 문제를 일으킨 유일한 이유는 html2pdf가 프로세스의 일부로 xhtml로 변환하기 때문입니다.아마도 그것이 나를 이어받았을 것이다(50% 가까이 부풀어오른 것이 이상해 보이지만).어떤 경우든, 위는 효과가 있었다.

html2pdf는 리소스 호그입니다.제 70k 파일은 35페이지 분량의 PDF 파일을 만드는 데 약 5분 정도 소요되며 최소 500~600M의 RAM이 필요합니다.안타깝게도 실시간 다운로드에는 (아직까지는) 빠르지 않고 메모리 사용률로 인해 메모리 사용률이 1,000:1(70k 파일의 경우 RAM 600M)에 달합니다.이것은 매우 어처구니없는 일입니다.

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

mPDF 버전 2.0을 사용해 보는 것은 어떨까요?PDF 문서 작성에 사용했습니다.잘 되고 있어요.

한편 mPDF는 버전 5.7로 HTML2PS/HTML2PDF와 달리 액티브하게 유지되고 있습니다.

그러나 이 문서는 다루기가 매우 어려울 수 있습니다.예를 들어, https://mpdf.github.io/ 페이지를 참조해 주세요.

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

  1. MPDF 사용! ==

a) 추출물yourfolder

b) 파일을 만듭니다.php 입력yourfolder다음 코드를 삽입합니다.

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

c) 브라우저에서 file.filename을 엽니다.




2) pdfToHtml 사용!

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

  2. 모든 파일에 포함시킬 수 있습니다.php 파일, 다음 코드를 입력합니다(source example.pdf도 있습니다).

  3. FinalFolder를 입력하면 변환된 파일이 나타납니다(소스 PDF의 페이지 수만큼).

TCPDF를 체크합니다.HTML에서 PDF로 필요한 기능을 갖추고 있습니다.무료입니다!

나는 DOMPDF를 시도해 보았지만 완벽하게 작동했다.사용한 적이 있다DIV그리고 모든 것을 포지셔닝하기 위한 블록 레벨 요소들을 엄밀하게 CSS 2.1로 유지했고 매우 잘 작동했습니다.

DocRaptor(이것들은PrinceXML'엔진'으로서)

좋은 소식이야!재빠르다!!

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

즐겨라! ^_^

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

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

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

완벽한 XHTML+CSS/PDF 변환 라이브러리를 찾으려면 이 기능을 사용하지 마십시오.그건 불가능해요.완벽한 브라우저(XHTML+CSS 렌더링 엔진)를 찾는 것과 같기 때문입니다.있어요?IE 또는 FF?

나는 DOMPDF로 어느 정도 성공을 거두었다.중요한 것은 라이브러리의 동작 방식에 맞게 HTML+CSS 코드를 수정해야 한다는 것입니다.그 외에는 꽤 좋은 결과를 얻었어요.

아래를 참조해 주세요.

오리지널 HTML

HTML에서 PDF로 변환

처음에 오프닝 투고에서 언급되었던HTML2PDFHTML2PS 는 이 링크가 있는 2009 패키지에 대해 말하고 있었습니다.

하지만 더 나은 HTML2PDF가 있습니다.

이것은 부분적으로 프랑스어로 되어 있지만 TCPDF에 기초하고 있습니다.

페이지에 반복되는 표 머리글 또는 바닥글이 있고 페이지 번호와 총 페이지가 있을 수 있습니다.를 참조해 주세요.3년 이상 사용하고 있는데 추천하고 있습니다.

PHP를 사용하여 PDF 파일을 작성하기 위해 fpdf를 사용하고 있습니다.지금까지는 간단한 결과물을 내는 게 잘 되고 있어요.

외부 라이브러리 없이 php(파트 1, 파트 2)에서 pdf를 생성하는 Zend의 devzone에 대한 튜토리얼이 있습니다.저는 이런 종류의 솔루션을 구현한 적이 없지만 모두 php이기 때문에 구현과 디버깅이 더 유연할 수 있습니다.

Darryl Hein이 TCPDF에 대해 언급한 것은 좋은 생각일 것이다.니콜라 아수니의 암호는 꽤 편리하고 강력해유일한 문제는 PDF 파일을 생성한 PDF 파일과 병합할 계획이 있는 경우 이러한 기능이 없다는 것입니다.PDF를 작성한 후 Sid Stuard(www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)의 PDFTK와 같은 것을 사용하여 병합해야 합니다.

최신 dompdf 빌드를 사용해 보십시오.저는 오래된 버전을 사용하고 있었습니다.리소스는 형편없고 PDF를 렌더링하는 데 오랜 시간이 걸렸습니다.여기서 하룻밤 자고 나면.

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

비용 측면에서는 웹 서비스(API)를 사용하는 것이 많은 경우 보다 합리적인 접근법이 될 수 있습니다.또한 이 프로세스를 아웃소싱함으로써 인프라스트럭처/백엔드에 대한 부담을 해소하고 신뢰할 수 있는 서비스를 사용하는 경우 웹 표준 조정, 가동 시간, 짧은 처리 시간 및 신속한 콘텐츠 전송과의 호환성을 확보할 수 있습니다.

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

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

품질:

고품질 엔진 탑재PrinceXML백본으로서 DocRaptor는 확실히 최고의 PDF 품질을 제공하며, 고도로 다듬어진 변환된 PDF 문서를 반환합니다.단, pdflayer API 서비스는 여기서 상당히 가까워졌습니다.Pdfcrowd는 반드시 품질에 따라 점수를 매기는 것이 아니라 처리 속도에 따라 점수를 매깁니다.

비용:

pdflayer.com - 위에서 설명한 바와 같이 가장 비용 효율이 높은 옵션은 pdflayer.com입니다.월간 PDF 100장 및 프리미엄 구독료는 모두 무료입니다.PDF 문서 10,000장 가격은 $39.99입니다.

docraptor.com - 7일간의 무료 평가판 기간을 제공합니다.프리미엄 서비스 플랜의 범위는 15~2250달러입니다.PDF 문서 10,000장 가격은 약 300달러입니다.

pdfcrowd.com - PDF 100장 무료 제공프리미엄 서비스 플랜의 범위는 9달러에서 89달러입니다.PDF 문서 10,000장 가격은 49.00달러입니다.

세 개 다 써봤는데 이 문자는 돈 안 들이고 누구나 결정할 수 있게 돼 있어요.이 텍스트는 어떤 제품도 보증하기 위해 작성된 것이 아니며, 저는 어떤 제품과도 관련이 없습니다.

명령줄에 액세스할 수 있는 경우 팬텀을 사용할 수 있습니다.JS를 생성하여PDF에서URL(리모트 또는 로컬).

이 솔루션은 매우 잘 작동하며 무료 솔루션입니다.

이 문제를 해결하기 위해 작성된 이 스크립트의 예를 참조하십시오.

이 질문은 이미 오래되었지만 CutyCap에 대해 언급한 적이 없기 때문에 다음과 같이 하겠습니다.

CutyCap

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

그 순서로, TCPDF 또는 DOMPDF 를 추천합니다.

php 클래스는 css를 사용하여 xHtml 페이지를 렌더링하는 데 최적이라고 생각하지 않습니다.

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

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

어쨌든, pdf 변환기로서 파이어폭스를 실행하는 프로블렘은 여전히 많습니다.

현시점에서는 wkhtmltopdf가 최고(사파리 브라우저에서 사용하는 것), 빠르고, 빠르고, 멋집니다.네, 오픈 소스도...한번 봐주세요

저는 웹페이지에서 PDF 파일을 빌드하기 위한 공개 API를 개발했습니다.매우 사용하기 쉬운 PHP 클라이언트 클래스가 있습니다.클라우드에서 PDF를 렌더링하려면 wkhtmltopdf를 사용합니다.

HTML에는 특별한 것이 필요 없습니다.이미지/css/js 링크에는 절대 URL이 필요 없습니다.localhost(dev 머신)에서도 동작합니다.

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

자체 프로토콜을 사용하여 웹 페이지 내용을 API로 전송하여 PDF로 변환하기 때문에 속도가 빠릅니다.

모든 엔드포인트가 로드밸런싱 되어 있기 때문에 신뢰성이 높습니다.

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

https://rotativahq.com

파일을 변환기에 전달하기 전에 Tidy를 사용해 보십시오.렌더러 중 하나가 HTML 문제(닫히지 않은 태그 등)에 대해 체크하는 경우 도움이 될 수 있습니다.

정교한 렌더링은 아무 의미가 없습니다.유효성이 확인됩니까?

모든 브라우저는 입력 불량 여부에 관계없이 화면에 표시하기 위해 최선을 다합니다.물론 그들은 같은 일을 하지 않습니다.FireFox와 같은 렌더링을 원하는 경우 렌더링 엔진을 사용할 수 있습니다.pdf 생성기가 있습니다.하지만 그것은 엄청나게 많은 일이다.

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

  1. HTM2PDF - HTML을 PDF로 변환하기 위한 API를 제공하고 PHP SDK도 갖추고 있어 PHP에서 구현이 매우 용이합니다.유럽, 아시아 및 미국에서 서버 위치를 선택할 수 있습니다.
  2. PDFmyURL - URL 및 HTML에서 PDF로 기능하는 API를 제공합니다.HTM2PDF와 거의 동일한 기능을 갖추고 있지만 부하 분산 환경에서 동작하며 사용 기간이 길어졌습니다.

앞서 설명한 솔루션과 다른 점은 CSS와 JavaScript를 사용하여 HTML을 PDF로 변환하는 것 외에 PDF 권한 관리, 워터마크 및 암호화를 제공한다는 것입니다.이 때문에, 이 솔루션은, 기동하고 싶은 유저에게 있어서, 올인원 솔루션입니다.

면책사항:저는 이 두 사이트를 모두 운영하는 회사 카이오미에서 일하고 있습니다.

HTML에서 PDF로의 변환은 PHP를 사용하여 서버 측에서 이루어져야 합니까?

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

TCPDF는 정상적으로 동작하며 종속성이 없으며 항상 버그가 수정됩니다.제공된 HTML/CSS 콘텐츠가 잘 형성되어 있으면 적절한 속도를 얻을 수 있습니다.저는 보통 50~300kB의 HTML 입력(CSS 포함)을 생성하고 PDF 페이지 10~15장으로 1~3초 이내에 PDF 출력을 받습니다.

TCPDF 에 송신하기 전에, 깔끔한 라이브러리를 HTML 프리 포메터로 사용하는 것을 강하게 추천합니다.

나는 PHP를 위해 많은 다른 라이브러리를 시도했다.내가 시도했던 모든 목록들. 생각에는 TCPDF 라이브러리가 성능/사용성을 가장 절충한 것 같습니다.설치와 사용이 매우 간단하며, 중소규모 애플리케이션에서도 뛰어난 성능을 발휘합니다.고성능 대용량 PDF 문서가 필요한 경우 Zend_PDF 모듈을 사용하십시오. 단, 하드 코딩에 대비하십시오.

웹 API

항상 이런 것을 찾는 사람이 있다면 HTML 코드와 페이지를 pdf로 변환할 수 있는 무료 웹사이트가 있습니다.url에서 PDF 파일을 가져올 수 있는 (매우 작은) API도 있습니다.

이쪽에서 확인

PHP가 아닌 Java 라이브러리를 통해 다음과 같은 작업을 수행합니다.

Flying Saucer는 XML 또는 XHTML을 사용하여 CSS 2.1 준거 스타일시트를 적용하여 PDF로 렌더링합니다.

PHP에서 사용할 수 있습니다.system()또는 유사한 콜입니다.단, XML의 적절한 포맷이 필요합니다.input.

언급URL : https://stackoverflow.com/questions/391005/how-can-i-add-html-and-css-into-pdf

반응형