แปลง HTML + CSS เป็น PDF [ปิด]


1628

ฉันมีเอกสาร HTML (ไม่ใช่ XHTML) ที่แสดงผลได้ดีใน Firefox 3 และ IE 7 มันใช้ CSS พื้นฐานที่ค่อนข้างเป็นธรรมในการจัดวางและปรับใน HTML

ตอนนี้ฉันแปลงไฟล์เป็น PDF ฉันเหนื่อย:

  • DOMPDF : มันมีปัญหาใหญ่กับตาราง ฉันแยกตารางที่ซ้อนกันขนาดใหญ่ออกมาและมันช่วย (ก่อนที่มันจะใช้หน่วยความจำสูงสุด 128M ก่อนจะตาย - นั่นเป็นข้อ จำกัด ของฉันในหน่วยความจำใน php.ini) แต่มันทำให้โต๊ะยุ่งเหยิงและดูเหมือนจะไม่ได้ ภาพ ตารางเป็นเพียงสิ่งพื้นฐานที่มีรูปแบบเส้นขอบเพื่อเพิ่มบางบรรทัดที่จุดต่าง ๆ ;
  • HTML2PDF และ HTML2PS : จริงๆแล้วฉันโชคดีกว่านี้ มันแสดงผลภาพบางภาพ (ภาพทั้งหมดเป็น Google แผนภูมิ URL) และการจัดรูปแบบตารางดีกว่ามาก แต่ดูเหมือนว่าจะมีปัญหาความซับซ้อนบางอย่างที่ฉันยังไม่ได้คิดออกและยังคงตายด้วยข้อผิดพลาด node_type () ที่ไม่รู้จัก ไม่แน่ใจว่าจะไปจากที่นี่; และ
  • Htmldoc : ดูเหมือนว่าจะทำงานได้ดีบน HTML พื้นฐาน แต่แทบจะไม่รองรับ CSS เลยดังนั้นคุณต้องทำทุกอย่างใน HTML (ฉันไม่รู้ว่ามันยังคงเป็นปี 2001 ใน Htmldoc-land ... ) ดังนั้นมันจึงไร้ประโยชน์กับฉัน

ฉันลองใช้แอป Windows ชื่อ Html2Pdf Pilot ซึ่งทำงานได้ค่อนข้างดี แต่ฉันต้องการบางอย่างที่รันบนลีนุกซ์น้อยและทำงานตามความต้องการผ่าน PHP บนเว็บเซิร์ฟเวอร์

ฉันพลาดอะไรไปหรือฉันจะแก้ไขปัญหานี้ได้อย่างไร


9
Html2Pdf ใช้อินสแตนซ์ฝังตัวของ IE เพื่อแสดงผลหน้าเว็บแล้วแปลงเป็น PDF - อาจผ่านกลไกการพิมพ์ของ IE
Joel Mueller

55
เนื่องจากมันเป็นคำถามปี 2008, dompdf นั้นมีความเป็นผู้ใหญ่มากกว่าในตอนนี้ ;-)
Hendra Uzia

5
dompdf ขณะนี้สนับสนุน CSS 2.1 และสามารถจัดการกับ@import, @mediaและ@screenกฎและจะโหลดสไตล์ชีตภายนอก มันมาพร้อมกับทุกอย่างที่จำเป็นสำหรับการทำงานแม้ว่าจะมีสิ่งที่คุณสามารถติดตั้งเพื่อรับประสิทธิภาพที่ดีกว่า libs เริ่มต้น code.google.com/p/dompdf
totalNotLizards

6
ปรับปรุง 2015: หลังจากค้นคว้าตัวเลือกมากมายเราตัดสินใจที่จะใช้ wkhtmltopdf ยูทิลิตี้ที่ดีที่เราต่อสู้กับ CSS เพราะเรามีไฟล์ CSS ภายนอก แต่จากนั้นเราใช้เคล็ดลับในการวางลิงค์จำลองของ CSS ในองค์ประกอบ HTML ของเราซึ่งเราต้องการ แปลงและตั้งค่าเส้นทางที่ถูกต้องทำงานเหมือน MAGIC !!!
Anshul Nigam

10
ฉันเชื่อว่าในไม่ช้าทุกคนจะพบว่าหัวของ Chrome / Chromium นั้นchrome --headless --print-to-pdf="path/to/pdf" https://your_url รวยที่สุดเร็วที่สุดและง่ายที่สุดสำหรับ html to pdf generation tool crbug.com/603559เนื่องจากรองรับคุณสมบัติส่วนใหญ่ของ html ที่นักพัฒนาใช้ในการพัฒนาเว็บและไม่ดูดซับสคริปต์ที่ซับซ้อน ห้องสมุดและเครื่องมือทำ
Ebrahim Byagowi

คำตอบ:


551

สำคัญ: โปรดทราบว่าคำตอบนี้เขียนขึ้นในปี 2009 และอาจไม่ใช่วิธีแก้ปัญหาที่คุ้มค่าที่สุดในปี 2562 ทางเลือกออนไลน์จะดีกว่าในปัจจุบันมากกว่าที่เคยเป็นมา

นี่คือบริการออนไลน์บางอย่างที่คุณสามารถใช้:


มีลักษณะที่PrinceXML

แน่นอนว่ามันเป็นตัวแปลง HTML / CSS ที่ดีที่สุดถึงแม้ว่าจะไม่ฟรี (แต่เฮ้การเขียนโปรแกรมของคุณอาจไม่ฟรีเช่นกันดังนั้นหากช่วยให้คุณประหยัดเวลาในการทำงาน 10 ชั่วโมงคุณกลับบ้านฟรี (เนื่องจากคุณต้อง พิจารณาว่าทางเลือกอื่นจะทำให้คุณต้องติดตั้งเซิร์ฟเวอร์เฉพาะด้วยซอฟต์แวร์ที่เหมาะสม)

โอ้ใช่ฉันไม่ได้พูดถึงว่านี่เป็นโซลูชั่น HTML2PDF แรก (และอาจเท่านั้น) ที่เต็มไปด้วยACID2 ?

ตัวอย่าง PrinceXML


16
บริษัท ของฉันเขียนเว็บเซอร์วิสรอบ ๆ Prince ราคาถูกกว่าอย่างเห็นได้ชัดและใช้งานได้โดยไม่ต้องติดตั้งอะไร: docraptor.com
Joel Meador

6
ฉันใช้ DocRaptor ด้วย วิธีที่ยอดเยี่ยมในการรับผลประโยชน์ของ Prince โดยไม่ต้องจ่ายค่าลิขสิทธิ์แพง ๆ ขอแสดงความยินดีกับผลิตภัณฑ์ที่ยอดเยี่ยม Joel
Nate365

22
วิธีแพงเกินไป WKHTMLTOPDF (ดูคำตอบอื่น ๆ ) ฟรีทำงานและใช้ webkit ที่ยอดเยี่ยม
thomallen

1
มีบริการ Saas ที่มีคุณภาพเท่าเทียมกันหรือดีกว่าสำหรับเศษส่วนของราคา - ดู htm2pdf.co.uk
user1914292

5
หากคุณมี commandline access และไม่ต้องการจ่าย $ 3,500 PhantomJS พร้อมสคริปต์นี้: github.com/ariya/phantomjs/blob/master/examples/rasterize.jsอาจเป็นวิธีแก้ปัญหาที่ง่ายและฟรี!
chjortlund

666

wkhtmltopdfมีลักษณะที่ มันเป็นโอเพ่นซอร์สบนพื้นฐานของ webkit และฟรี

เราเขียนกวดวิชาเล็ก ๆที่นี่

แก้ไข (2017):

ถ้าเป็นการสร้างบางสิ่งบางอย่างในวันนี้ฉันจะไม่ไปทางนั้นอีกต่อไป
แต่จะใช้http://pdfkit.org/แทน
อาจเป็นการดึงการขึ้นต่อกันของ nodejs ทั้งหมดเพื่อรันในเบราว์เซอร์


10
อันนี้ทำงานบน IMO หลักฐานที่ดีที่สุด เพิ่มการแปลง Boostrap ปิดโหมดแสดงภาพที่มีอยู่แทนการเขียนใหม่ตั้งแต่เริ่มต้น - ไม่ใช่งานที่ไม่สำคัญ นอกจากนี้ Webkit เขียนด้วยภาษา C ++ ดังนั้นจึงรวดเร็วกว่าและใช้ทรัพยากรน้อยกว่าการติดตั้งด้วย PHP
Koobz

3
เราประสบปัญหามากมายในการพยายามทำให้เรื่องนี้แสดงผลฟอนต์เซิร์ฟเวอร์อย่างถูกต้อง CentOS หลังจากผ่านไปหลายสัปดาห์ของการเลอะเทอะดูเหมือนว่าทางเลือกเดียวคือไม่ใช้ CentOS
Abhi Beckert

1
คำเตือน! หากคุณใช้ wkhtmltopdf (อย่างน้อยในระบบของฉัน XAMPP บน Windows 7 64 บิต) ในทุกกรณีที่ฉันลองภาพ. gif จะไม่ปรากฏในไฟล์ PDF ฉันลองวิธีแก้ปัญหาที่แนะนำในสถานที่ต่าง ๆ เช่นรวมถึง "ความกว้าง" และ "ความสูง" และเขียน URI ให้เป็นไปตามอนุสัญญาที่แตกต่างกัน ไม่มีสิ่งใดที่ฉันพยายามทำให้. gif ปรากฏ (โดยเฉพาะอย่างยิ่งไม่ใช่แม้แต่คำแนะนำ "ความกว้าง" และ "ความสูง" ซึ่งฉันลองทั้งใช้รูปแบบอินไลน์และใช้แอตทริบิวต์ HTML แบบเก่า ๆ "ความกว้าง" และ "ความสูง") อย่างไรก็ตามการสลับรูปภาพเป็น. jpg สามารถทำได้ในการลองครั้งแรก
Dan Nissenbaum

6
นามธรรมนี้เป็นสิ่งที่ดีสวย แต่mikehaertl.github.io/phpwkhtmltopdf
saada

1
บริการเชิงพาณิชย์มีราคาแพงเกินไปสำหรับเราดังนั้นเราจึงใช้ WKHTMLTOPDF เป็นบริการคลาวด์ฟรีhtml2pdfrocket.comให้ทุกคนใช้แล้วใช้มันเพื่อลูกค้าของเรา เราทำอย่างนั้นเพื่อให้ลูกค้าของเราไม่ต้องติดตั้ง exe บนเซิร์ฟเวอร์ของพวกเขาและทำงานข้ามแพลตฟอร์ม ฉันให้คะแนน WKHTMLTOPDF แน่นอนถ้าคุณสร้างบริการของคุณเอง
eagle779

150

หลังจากการตรวจสอบบางอย่างและผมดึงการแก้ปัญหาทั่วไปดูเหมือนว่าจะhtml2pdf DOMPDFทำงานได้อย่างยอดเยี่ยมด้วยโต๊ะเส้นขอบและแม้แต่รูปแบบที่ซับซ้อนในระดับปานกลางและhtmldoc นั้นดูมีความแข็งแกร่งพอสมควร แต่เกือบจะไม่รู้เรื่อง CSS อย่างสมบูรณ์และฉันไม่ต้องการกลับไปใช้เค้าโครง HTML โดยไม่ต้องใช้ CSS สำหรับโปรแกรมนั้น

HTML2PDF ดูมีแนวโน้มมากที่สุด แต่ฉันยังคงมีข้อผิดพลาดแปลก ๆ เกี่ยวกับข้อโต้แย้งอ้างอิงโมฆะเพื่อ node_type ในที่สุดฉันก็พบวิธีแก้ปัญหานี้ โดยทั่วไป PHP 5.1.x ทำงานได้ดีกับการแทนที่ regex (preg_replace_ *) ในสตริงที่มีขนาดใดก็ได้ PHP 5.2.1 แนะนำการตั้งค่า php.ini สั่งเรียกpcre.backtrack_limit พารามิเตอร์ config นี้ทำอะไรบ้างที่จำกัดความยาวของสตริงที่การจับคู่เสร็จสิ้น ทำไมสิ่งนี้ถูกนำมาใช้ฉันไม่รู้ ค่าเริ่มต้นถูกเลือกเป็น 100,000 ทำไมถึงมีค่าต่ำ ไม่มีความคิดอีกแล้ว

ข้อผิดพลาดถูกยกขึ้นกับ PHP 5.2.1 สำหรับการนี้ซึ่งยังคงเปิดอยู่เกือบสองปีต่อมา

สิ่งที่น่ากลัวเกี่ยวกับเรื่องนี้ก็คือว่าเมื่อวงเงินเกินแทนที่เพียงเงียบล้มเหลว อย่างน้อยถ้ามีข้อผิดพลาดเกิดขึ้นและเข้าสู่ระบบคุณจะมีข้อบ่งชี้ว่าเกิดอะไรขึ้นสาเหตุและสิ่งที่ต้องเปลี่ยนแปลงเพื่อแก้ไข แต่ไม่มี.

ดังนั้นฉันจึงมีไฟล์ HTML ขนาด 70k เพื่อเปลี่ยนเป็น PDF ต้องการการตั้งค่า php.ini ต่อไปนี้:

  • pcre.backtrack_limit = 2000000; # อาจมากกว่าที่ฉันต้องการ แต่ก็ไม่เป็นไร
  • memory_limit = 1024M; # ใช่หนึ่งกิกะไบต์ ; และ
  • max_execution_time = 600; # ใช่10 นาที

ตอนนี้ผู้อ่านที่ชาญฉลาดอาจสังเกตเห็นว่าไฟล์ HTML ของฉันมีขนาดเล็กกว่า 100k เหตุผลเดียวที่ฉันสามารถคาดเดาได้ว่าทำไมฉันถึงมีปัญหานี้คือ html2pdf ทำการแปลงเป็น xhtml ซึ่งเป็นส่วนหนึ่งของกระบวนการ บางทีอาจจะพาฉันไป (แม้ว่าเกือบ 50% จะดูแปลก ๆ ) ไม่ว่ากรณีใดข้างต้นก็ใช้ได้ผล

ตอนนี้ html2pdf เป็น hog ทรัพยากร ไฟล์ 70k ของฉันใช้เวลาประมาณ 5 นาทีและ RAM อย่างน้อย 500-600M เพื่อสร้างไฟล์ PDF ขนาด 35 หน้า ไม่เร็วพอสำหรับการดาวน์โหลดแบบเรียลไทม์ แต่น่าเสียดายและการใช้หน่วยความจำทำให้อัตราส่วนการใช้หน่วยความจำอยู่ในลำดับ 1,000 ต่อ 1 (600M RAM สำหรับไฟล์ 70k) ซึ่งไร้สาระที่สุด

น่าเสียดายที่นั่นเป็นสิ่งที่ดีที่สุดที่ฉันเคยได้รับมา


1
@cletus โปรดบอกฉันเกี่ยวกับ HTML2PDF เวอร์ชันเสถียร ตัวอย่างลิงค์ด้านบนเลิกใช้แล้ว
Ripa Saha

สำหรับรุ่นล่าสุดดูgithub.com/spipu/html2pdf
Luke Wenke

1
พิมพ์ผิดกลายเป็นน่ากลัวมากขึ้น: อัตราส่วนการใช้หน่วยความจำอยู่ในคำสั่งของ 10,000 ต่อ 1 lol
MickLH

ทำงานได้ไม่ดีเท่า mPDF ... เร็วขึ้น แต่ไม่แม่นยำ ... และการแปลงฟอนต์ TTF นั้นเจ็บปวดอย่างไม่น่าเชื่อ ... พวกเขายังมีห้องสมุดที่เป็นอิสระ "tc-lib-pdf-font" เพียงเพื่อสร้างฟอนต์
Martin Zvarík

125

ทำไมคุณไม่ลองmPDF เวอร์ชั่น 2.0 ? ฉันใช้เพื่อสร้างเอกสาร PDF มันใช้งานได้ดี

ในขณะที่ mPDF เป็นรุ่น 5.7 และได้รับการบำรุงรักษาอย่างแข็งขันตรงกันข้ามกับ HTML2PS / HTML2PDF

แต่โปรดจำไว้ว่าเอกสารนั้นยากที่จะจัดการจริงๆ ยกตัวอย่างให้ดูที่หน้าเว็บนี้: https://mpdf.github.io/

งานพื้นฐานมาก ๆ เกี่ยวกับ html ถึง pdf สามารถทำได้กับไลบรารีนี้ แต่งานที่ซับซ้อนมากขึ้นจะใช้เวลาอ่านและ "ทำความเข้าใจ" เอกสารประกอบ


1
ฉันลองของที่แนะนำมาที่นี่ จนถึงตอนนี้สิ่งนี้ถูกอัปโหลดและทำงานนอกกรอบโดยไม่ต้องยุ่งยากใด ๆ และเอกสารนั้นยอดเยี่ยมมากเมื่อเทียบกับที่เหลือ เขียนคำแนะนำการใช้อย่างชัดเจน
Smith Smithy

mPDF ให้ฉันยุ่งยากบางอย่างเมื่อโพสต์แท็กที่มีภาพพื้นหลังหรือแท็กจากฐานข้อมูล:mPDF error: IMAGE Error (http://www.example.com/folder/image.jpg): Error parsing image file - image type not recognised, and not supported by GD imagecreate
สเตฟาน

เวอร์ชัน 6.0 ใช้งานได้ตามที่คาดไว้: รวมไว้ (หรือในกรอบโหลด) ตัวอย่างการเติมสิ่งที่คุณทำออกมาไม่ทางใดก็ทางหนึ่ง ... นั่นแหล่ะ!
toesslab

MPDF ก็ใช้งานได้ดีจริง! แต่รหัสและเอกสารไม่สอดคล้องกัน - มันยากจริงๆที่จะทำงานที่ซับซ้อนมากขึ้นเช่นการสร้างจดหมายเกี่ยวกับกฎเกณฑ์ปกติ
Qullbrune

อ้างว่าช้ากว่า html2fpdf มาก แต่สำหรับเนื้อหาพื้นฐานฉันคิดว่ามันเร็วมาก (ใบแจ้งหนี้รายงาน ฯลฯ ) ข้อดีอย่างมากสำหรับ mPDF คือแทบจะไม่มีข้อกำหนดการขยาย PHP ใด ๆ (ทำงานนอกกรอบบนโฮสติ้งที่ใช้ร่วมกัน)
Joao

70

1) ใช้MPDF !

ก) สารสกัดจาก yourfolder

ข) การสร้างfile.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) เปิดไฟล์. phpจากเบราว์เซอร์ของคุณ




2) ใช้pdfToHtml !

1) แยกpdftohtml.exeไปยังโฟลเดอร์รูทของคุณ:

2) ภายในโฟลเดอร์นั้นในไฟล์anyfile.phpให้ใส่รหัสนี้ (สมมติว่ามีแหล่งตัวอย่างเช่น. 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 ต้นฉบับ .. )


ฉันจะลอง GrabzIt API ของพวกเขารองรับ CSS, JavaScript และทรัพยากรประเภทอื่น ๆ มันเพียงแค่ต้องมีการอ้างอิงกับ URL แบบสัมบูรณ์ของหรือทำแบบอินไลน์และรวมอยู่ใน HTML ที่ถูกส่งไปยังบริการ ลองที่นี่: grabz.it/html-to-pdf-image-api.aspx

GrabzIt ไม่ฟรี
Chatoxz

56

กร้าTCPDF มันมีฟังก์ชั่น HTML เป็น PDF ที่อาจเพียงพอสำหรับสิ่งที่คุณต้องการ ฟรี!


1
มันรองรับการแสดงผล html ค่อนข้าง จำกัด คุณอาจต้องการอ่านสิ่งนี้: tcpdf.org/doc/classTCPDF.html#ac3fdf25fcd36f1dce04f92187c621407
Hendra Uzia

1
แต่สไตล์ CSS ไม่ทำงาน
KBK

32

เพียงเพื่อชนเธรดฉันได้ลอง DOMPDF และทำงานได้อย่างสมบูรณ์ ฉันใช้DIVและองค์ประกอบระดับบล็อกอื่น ๆ เพื่อวางตำแหน่งทุกอย่างฉันเก็บไว้อย่างเคร่งครัด CSS 2.1 และมันเล่นได้ดีมาก


31

ฉันแนะนำDocRaptor (ซึ่งใช้PrinceXMLเป็น "เครื่องมือ")


น่าเสียดายที่ใช้ไม่ได้หากคุณต้องการสร้างไฟล์ PDF ขนาดใหญ่ที่มีรูปภาพจำนวนมาก ฉันคิดว่ามันมี timelimit 60 วินาทีในการร้องขอและหาก Docraptor จำเป็นต้องดาวน์โหลดไฟล์จำนวนมากสิ่งนี้จะเกินและไม่มีไฟล์ใดที่จะทำ
Vilhelm

1
ปัญหานี้ Vilhelm กล่าวถึงได้รับการแก้ไขแล้ว
illbzo1

30

มีการพูดถึงแล้ว แต่ฉันต้องการยืนยันว่า mpdf เป็นตัวแปลง HTML ที่ง่ายที่สุดและทรงพลังที่สุดและฟรีที่สุดในรูปแบบ pdf ท้องฟ้ามีขีด จำกัด จริงๆ คุณสามารถสร้างไฟล์ PDF ของข้อมูลแบบไดนามิกที่สร้างโดยผู้ใช้

ตัวอย่างเช่นลูกค้าต้องการระบบ CMS เพื่อให้เขาสามารถอัปเดตรายการเพลงที่เขาเล่นที่สโมสรของเขา นั่นไม่ใช่ปัญหา แต่เขาก็ต้องการให้ผู้ใช้สามารถดาวน์โหลด. pdf ของเพลย์ลิสต์ได้ด้วยดังนั้นไฟล์ PDF ที่ดาวน์โหลดได้นี้ต้องได้รับการอัปเดตโดย cms ด้วย ขอบคุณ mpdf ด้วยลูปเรียบง่ายและตัวแปรแบบกระจายฉันสามารถทำเช่นนั้นได้ สิ่งที่ฉันคิดว่าจะใช้เวลาหลายสัปดาห์ฉันใช้เวลาไม่กี่นาที

ที่ดีบทความที่ช่วยให้ฉันเริ่มต้น


7
PDF ของเพลย์ลิสต์ พระเจ้าช่วยฉัน.
Henrik Erlandsson

29

ข่าวดี! เร็ว !!

Snappy เป็นไลบรารี PHP5 แบบโอเพ่นซอร์สที่ใช้ง่ายมากซึ่งอนุญาตให้สร้างภาพขนาดย่อสแน็ปช็อตหรือ PDF จาก URL หรือหน้า html และ ... มันใช้wkhtmltopdf ซึ่งเป็นเว็บเบสที่ยอดเยี่ยม

สนุก! ^ _ ^


1
ฉันสร้าง HTTP API ที่ใช้ Snappy (อิงจาก wkhtmltopdf) คุณสามารถส่งผ่าน URL และแปลงหน้าเว็บจาก HTML เป็น PDF: github.com/Dellos7/dhtml2pdf
David López

26

ถ้าคุณต้องการค้นหาไลบรารีตัวแปลง XHTML + CSS ที่สมบูรณ์แบบให้ลืม มันไกลจากที่เป็นไปได้ เพราะมันเหมือนกับการค้นหาเบราว์เซอร์ที่สมบูรณ์แบบ (เครื่องมือแสดงผล XHTML + CSS) เรามีหรือไม่ IE หรือ FF

ฉันประสบความสำเร็จกับ DOMPDF สิ่งสำคัญคือคุณต้องแก้ไขโค้ด HTML + CSS ของคุณเพื่อให้สอดคล้องกับวิธีการทำงานของไลบรารี่ นอกจากนั้นฉันได้ผลค่อนข้างดี

ดูด้านล่าง:

HTML ดั้งเดิม

แปลง HTML เป็น PDF


25

html2pdf และ html2psที่ถูกกล่าวถึงครั้งแรกในการโพสต์เปิดได้พูดคุยเกี่ยวกับแพคเกจปี 2009 นี้การเชื่อมโยง

แต่มีHTML2PDF ที่ดีกว่า

มันขึ้นอยู่กับ TCPDF แม้ว่ามันจะเป็นส่วนหนึ่งในฝรั่งเศส

คุณสามารถมีส่วนหัวของตารางหรือท้ายกระดาษที่ทำซ้ำบนหน้าและมีหมายเลขหน้าและหน้าทั้งหมด ดูตัวอย่างของ ฉันใช้มันมานานกว่าสามปีแล้วและแนะนำ


1
ทำไมนี่ไม่ถึงด้านบน? มันทำงานได้โดยไม่ต้องพึ่งพาใด ๆ เพิ่มเติมและดีพอสำหรับการใช้งานของคนส่วนใหญ่โดยไม่ต้องใช้จ่าย $ 3800!
เลว

22

ฉันใช้fpdfเพื่อสร้างไฟล์ PDF โดยใช้ PHP มันใช้งานได้ดีสำหรับฉันจนถึงตอนนี้เพื่อสร้างผลลัพธ์ที่ง่าย


21

มีการสอนเกี่ยวกับ devzone Zend ในการสร้าง PDF จาก PHP (เป็นส่วน 1 , ตอนที่ 2 ) โดยห้องสมุดภายนอกใด ๆ ฉันไม่เคยใช้วิธีแก้ปัญหาแบบนี้มาก่อน แต่เนื่องจากมันเป็น php ทั้งหมดคุณอาจพบว่ามันมีความยืดหยุ่นมากกว่าในการใช้งานและการดีบัก



ใช่ แต่นั่นไม่ได้แปลง HTML ... นั่นคือการสร้าง PDF แบบดิบ
Martin Zvarík

16

ลองคว้าdompdf build ล่าสุดทุกคืน- ฉันใช้รุ่นเก่ากว่าซึ่งเป็นทรัพยากรที่แย่มากและใช้เวลาตลอดไปเพื่อสร้าง PDF ของฉัน หลังจากคว้าคืนจากที่นี่

มันใช้เวลาเพียงไม่กี่วินาทีในการสร้างรูปแบบไฟล์ PDF - และมันก็กลายเป็นเพียงแค่เป็นอย่างดีเช่นเดียวกับPrinceXML / Docraptor ดูเหมือนว่าพวกเขาปรับรหัสdompdfอย่างจริงจังตั้งแต่ฉันใช้มันครั้งสุดท้าย!


dompdf เป็นตัวเลือกที่ยอดเยี่ยมจริงๆ ฉันใช้สองครั้งและมันง่ายมาก ฉันจะแนะนำให้ลอง dompdf นี่คือลิงค์สำหรับ repo github อย่างเป็นทางการ: github.com/dompdf/dompdf
Rituparna sonowal

16

Darryl Hein กล่าวถึงTCPDFเป็นความคิดที่ดี โค้ดของ Nicola Asuni ค่อนข้างมีประโยชน์และทรงพลัง นักฆ่าคนเดียวคือถ้าคุณวางแผนที่จะรวมไฟล์ PDF เข้ากับ PDF ที่คุณสร้างขึ้นมันจะไม่มีคุณสมบัติเหล่านั้น คุณจะต้องสร้าง PDF แล้วรวมเข้าด้วยกันโดยใช้ PDFTK ของ Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)


13

ในแง่ของต้นทุนการใช้บริการทางเว็บ (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 รายการและการสมัครสมาชิกพรีเมียมระหว่าง $ 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

ฉันใช้ทั้งสามคนแล้วและข้อความนี้ควรจะช่วยทุกคนตัดสินใจโดยไม่ต้องจ่ายเงินสำหรับพวกเขาทั้งหมด ข้อความนี้ไม่ได้ถูกเขียนขึ้นเพื่อรับรองผลิตภัณฑ์ใดผลิตภัณฑ์หนึ่งและฉันไม่มีส่วนเกี่ยวข้องกับผลิตภัณฑ์ใด ๆ


ขอบคุณสำหรับการแชร์ ฉันกำลังตรวจสอบตัวเลือกทั้งหมดทั้งวันและจดจ่อกับ libs ฟรีมากขึ้นหรือซื้อ lib คำตอบของคุณช่วยฉันทีนิกอีกครั้ง ฉัน thnik สำหรับธุรกิจขนาดเล็กมันเป็นวิธีที่ประหยัดต้นทุนและวิธีที่ง่ายที่สุดในการไปกับบริการเว็บ สำหรับ pdflayer.com; น้อยกว่า $ 100 / ปีจะใช้เวลา 20 หรือ 30 ปีจะทำลายแม้กระทั่งยัง i dont thnik เราจะปล่อยให้อยู่ในโลกเดียวกัน 20 ปีต่อมา :)
ด้วยใจสมัคร

12

หากคุณมีสิทธิ์เข้าถึงบรรทัดคำสั่งคุณสามารถใช้PhantomJSเพื่อสร้างPDFจากURL(ระยะไกลหรือท้องถิ่น)

มันใช้งานได้ดีจริง ๆ และเป็นโซลูชันฟรี

ลองดูตัวอย่างสคริปต์ที่สร้างขึ้นสำหรับปัญหาที่แน่นอนนี้


แต่คุณอาจมีปัญหากับแบบอักษร (webfonts)
Mihai Crăiță

11

คำถามนี้ค่อนข้างเก่าอยู่แล้ว แต่ยังไม่เคยเห็นใครพูดถึงCutyCapt มาก่อนเลย :)

CutyCapt

CutyCaptเป็นยูทิลิตี้บรรทัดคำสั่งข้ามแพลตฟอร์มขนาดเล็กเพื่อจับภาพการเรนเดอร์หน้าเว็บของ WebKit ในรูปแบบเวกเตอร์และบิตแมปที่หลากหลายรวมถึง SVG, PDF, PS, PNG, JPEG, TIFF, GIF และ BMP



9

ฉันไม่คิดว่าคลาส php จะดีที่สุดสำหรับการแสดงหน้า xHtml ด้วย css

จะเกิดอะไรขึ้นเมื่อกฎ css ใหม่ออกมา (เร็ว ๆ นี้ CSS 3.0 ... )

วิธีที่ดีที่สุดในการแสดงหน้า html คือเบราว์เซอร์ obvisiuly Firefox 3.0 สามารถ 'พิมพ์' ในรูปแบบ pdf โดยปกติแล้ว torisugary พัฒนาส่วนขยาย (การพิมพ์บรรทัดคำสั่ง) เพื่อใช้งาน ที่นี่คุณจะพบว่า

อย่างไรก็ตามมี problmes จำนวนมากที่ยังคงทำงานอยู่ Firefox เป็นเพียงตัวแปลง PDF ...

ในขณะนี้ฉันคิดว่า wkhtmltopdf นั้นดีที่สุด (นั่นคืออันที่ใช้โดยเบราว์เซอร์ซาฟารี) เร็วเร็วน่ากลัว ใช่ opensource เช่นกัน ... ลองดูสิ


PHP มีประโยชน์ถ้าคุณต้องการส่งออกเอกสารทางการบางประเภทเช่นใบเสร็จรับเงินสำหรับผู้ใช้และคุณสามารถใช้ CSS เพื่อทำให้มันดูดี
Luke Wenke

9

ฉันพัฒนา API สาธารณะเพื่อสร้างไฟล์ PDF จากหน้าเว็บ มีคลาสไคลเอนต์ PHP ที่ดีซึ่งทำให้ใช้งานง่ายสุด ๆ มันใช้ wkhtmltopdf เพื่อแสดง PDF ในคลาวด์

ไม่จำเป็นต้องมีอะไรพิเศษใน HTML ไม่จำเป็นต้องใช้ URL แบบสัมบูรณ์ในลิงก์รูปภาพ / css / js ทำงานบน localhost (เครื่อง dev) ด้วย

ปัจจุบันบริการนี้มีจุดสิ้นสุดใน 4 ภูมิภาคของ Azure ได้แก่ US East, US West, EU North, Asia Southeast

มันรวดเร็วเนื่องจากใช้โปรโตคอลที่เป็นกรรมสิทธิ์ในการส่งเนื้อหาของหน้าเว็บไปยัง API สำหรับการแปลงเป็น PDF

เป็นที่เชื่อถือได้เพราะจุดสิ้นสุดทั้งหมดมีการโหลดที่สมดุล

บัญชีฟรีสำหรับการทดสอบหรือการใช้งานต่ำ รายละเอียดบนเว็บไซต์:

https://rotativahq.com


8

บางทีคุณอาจลองใช้ Tidy ก่อนส่งไฟล์ให้กับตัวแปลง หากหนึ่งในโหมดแสดงภาพสำลักปัญหา HTML บางอย่าง (เช่นแท็กที่ไม่มีการปิดบัง) มันอาจช่วยได้


ใช่เป็นจุดที่ถูกต้อง แต่ฉันคิดเรื่องนี้แล้ว ไม่มีแท็กที่ไม่ตรงกันหรือไม่เป็นมาตรฐานใน HTML ของฉัน
cletus

7

การแสดงผลที่ดีไม่ได้มีความหมายอะไรเลย มันตรวจสอบ?

เบราว์เซอร์ทั้งหมดทำสิ่งที่ดีที่สุดเท่าที่จะทำได้เพียงแสดงบางอย่างบนหน้าจอไม่ว่าอินพุตนั้นจะแย่แค่ไหน และแน่นอนพวกเขาไม่ได้ทำสิ่งเดียวกัน หากคุณต้องการการเรนเดอร์แบบเดียวกันกับ FireFox คุณสามารถใช้เอ็นจิ้นการเรนเดอร์ได้ มีตัวกำเนิด pdf สำหรับมัน แม้ว่ามันจะเป็นงานที่แย่มาก


7

แม้ว่าจะมีวิธีแก้ไขปัญหามากมายที่นำเสนออยู่แล้ว แต่ฉันขอแนะนำสองข้อต่อไปนี้:

  1. HTM2PDF - ให้บริการ API เพื่อแปลง HTML เป็น PDF และยังมี PHP SDK ซึ่งทำให้ง่ายต่อการนำไปใช้ใน PHP มีตัวเลือกตำแหน่งที่ตั้งเซิร์ฟเวอร์ในยุโรปเอเชียและสหรัฐอเมริกา
  2. PDFmyURL - เสนอ API ที่ทำ URL และ HTML เป็น PDF ด้วยโดยมีฟังก์ชั่นการทำงานเหมือนกับ HTM2PDF แต่ทำงานในแนวนอนที่สมดุลและมีระยะเวลานานกว่าเล็กน้อย

สิ่งที่แตกต่างเกี่ยวกับ API ทั้งสองนี้จากโซลูชันที่กล่าวถึงก่อนหน้านี้คือนอกเหนือจากการแปลง HTML เป็น PDF ด้วย CSS และ JavaScript แล้วยังมีการจัดการสิทธิ์ PDF การทำลายน้ำและการเข้ารหัส ดังนั้นจึงเป็นคำตอบแบบครบวงจรสำหรับผู้ที่ต้องการทำงานหนัก

คำเตือน: ฉันทำงานให้กับ Kaiomi บริษัท ที่ดำเนินการทั้งสองเว็บไซต์เหล่านี้


ฉันจะไม่ต้องการที่จะพึ่งพาบริการเมื่อมันขึ้นสำหรับขาย จากข้อเท็จจริงที่ว่ามันยังขายไม่ออกในการประมูลครั้งนั้นฉันสามารถเดาได้ว่าจะมีการขายในอนาคตอันใกล้นี้หรือไม่
Robin van Baalen

ที่จริง บริษัท ของฉันซื้อมันมาหลังจากการประมูล ....
user1914292

ในกรณีนี้ฉันคิดว่าไม่มีอะไรต้องกังวล
Robin van Baalen

5

การแปลง HTML เป็น PDF จำเป็นต้องเกิดขึ้นกับฝั่งเซิร์ฟเวอร์โดยใช้ PHP หรือไม่

ฉันเพิ่งเจอjsPDFซึ่งเป็นโซลูชันฝั่งไคลเอ็นต์โดยใช้ HTML5 / JavaScript รหัสลิขสิทธิ์ของ MIT อยู่ใน GitHubเช่นกัน


สำหรับฉันห้องสมุดมี จำกัด มาก
YXN

5

TCPDF ทำงานได้ดีไม่มีการพึ่งพาเป็นอิสระและบั๊กอย่างต่อเนื่อง มีความเร็วที่เหมาะสมหากเนื้อหา HTML / CSS ที่ให้มามีรูปแบบที่ดี ปกติฉันสร้างจาก 50 - 300 kB ของอินพุต HTML (รวมถึง CSS) และรับเอาท์พุท PDF ภายใน 1-3 วินาทีด้วย 10 - 15 หน้า PDF

ฉันขอแนะนำอย่างยิ่งให้ใช้ไลบรารีที่เป็นระเบียบในรูปแบบ HTML ก่อนที่จะส่งอะไรไปยัง TCPDF


4

ฉันลองไลบรารี่ที่แตกต่างกันสำหรับ PHP รายการทั้งหมดที่ฉันได้ลอง ในความคิดของฉันห้องสมุดTCPDFคือประสิทธิภาพที่ดีที่สุดประนีประนอม / การใช้งาน มันง่ายมากในการติดตั้งและใช้งานนอกจากนี้ยังมีประสิทธิภาพที่ดีในแอปพลิเคชันขนาดกลางขนาดเล็ก หากคุณต้องการประสิทธิภาพสูงและเอกสาร PDF ที่มีขนาดใหญ่มากให้ใช้โมดูลZend_PDFแต่เตรียมพร้อมที่จะเข้ารหัสยาก!


Zend PDF ไม่สามารถแปลงจาก HTML ได้
Martin Zvarík

3

เว็บ API

หากมีคนที่ค้นหาสิ่งนี้อยู่ตลอดเวลามีเว็บไซต์ฟรีที่ให้คุณแปลงโค้ด html และหน้าเป็น pdf นอกจากนี้ยังมี api (เล็กมาก) ซึ่งอนุญาตให้คุณรับไฟล์ pdf จาก url

ตรวจสอบที่นี่


2

ไม่ใช่PHPแต่เป็นไลบรารีJavaซึ่งทำสิ่งนี้:

Flying Saucer ใช้ XML หรือ XHTML และใช้สไตล์ชีทที่สอดคล้องกับ CSS 2.1 เพื่อแสดงผลเป็น PDF

มันสามารถใช้งานได้จากPHPผ่านทางsystem()หรือโทรคล้ายกัน แม้ว่ามันจะต้องใช้XMLinputรูปแบบที่ดีของ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.