Pdfkit wkhtmltopdf ไบนารี ตัวเลือก
พื้นหลังหลังจากอ่านรอบดูเหมือนกับฉันว่ากุ้งจะออกและ wkhtmltopdf เป็นมาก็ดูเหมือนว่าอัญมณี PDFKit และ wickedpdf สำหรับ Rails เป็นใหม่เย็น ดังนั้นฉันจึงพบ screencast โดย Ryan เกี่ยวกับวิธีการใช้ PDFKit ฉันติดตั้งทุกอย่าง test wkhtmltopdf บน CLI ไม่มีปัญหา fiddled รอบกับ Rails settingsto เรียกใช้กระบวนการหลายดังนั้นท่อสินทรัพย์ทำงานและทั้งหมดประจักษ์ยกเว้น Im ยังคงติดอยู่ที่ส่วนท้ายสุดของกระบวนการ (จริงได้รับการตอบสนอง PDF จาก. เซิฟเวอร์). (ฉันใช้ตัวเลือก PDFKit Middleware) เบราเซอร์ของฉันเพียงแค่นั่งรอการตอบสนอง แต่ทันทีที่ฉันฆ่า Rails กระบวนการ PDF ฉันคาดว่าจะได้รับเท่านั้นแล้วปรากฏขึ้นในเบราว์เซอร์ของฉัน หน้าต่าง. สิ่งที่ทำให้สิ่งที่ใช้ระบบปฏิบัติการ: OSX 10.8.1 Rails: 3.2.8 Ruby: 1.9.3 wkhtmltopdf: 0.11.0rc1 (แม้ว่าเมื่อฉันใช้ wkhtmltopdf - V กล่าวว่า 0.10.0rc2) qt: 4.8.2 สิ่งที่ Ive Done ใช้ PDFKit middleware โดยโหลดไฟล์ config. middleware. use PDFKit :: Middleware ในไฟล์ application. rb ของฉัน รวมอัญมณี pdfkit ใน Gemfile ของฉันและติดตั้งด้วย Bundler ตั้ง. mpg-mime ชนิดใน mimetypes. rb initializer ของฉันกับ Mime :: Type. registeralias applicationpdf pdf เพิ่ม config. threadsafe เพื่อ configenvironmentsdevelopment. rb สำหรับหลายเธรดดังนั้นท่อส่งสินทรัพย์ไม่ขัดแย้งกับเครื่องยนต์ PDF ที่ผ่านการทดสอบ wkhtmltopdf google google. pdf และสร้าง PDF ของหน้าแรกของ Google ตามที่คาดไว้พยายามแลกเปลี่ยนไฟล์ PDFKit สำหรับ wickedpdf และประสบปัญหาเดียวกัน (แขวน, แต่เมื่อกระบวนการ Rails ถูกฆ่าตายการแสดงผล PDF ตามที่คาดไว้) สิ่งที่ดูเหมือนว่านี่คือหน้า HTML ปกติที่สร้างโดย Rails (Ive ทำให้รายละเอียดของไคลเอ็นต์เบลอ): นี่คือผลลัพธ์ CLI ทาง Rails เมื่อฉันพยายามนำทางไปยัง localhost: 3000somepath รูปแบบไฟล์ PDF (app ค้างในขณะที่รอการตอบสนอง): เมื่อฉันสุดท้ายฆ่ากระบวนการ Rails ด้วย ctrl-c PDF สุดท้ายปรากฏในเบราว์เซอร์ที่ฉันคาดว่าจะเห็น (CSS และ HTML แสดงผลอย่างถูกต้องดังนั้นสินทรัพย์ดูเหมือนจะโหลดดี) : สรุปจนถึงเปลี่ยน PDFKit สำหรับ wickedpdf และได้รับผลเดียวกันดูเหมือนจะทำให้ฉันคิดว่าปัญหาไม่ได้กับห้องสมุดเหล่านั้น แต่สิ่งที่จะทำอย่างไรกับสภาพแวดล้อมการพัฒนาของฉัน แต่ wkhtmltopdf รันดีบรรทัดคำสั่งเพื่อที่ทำให้ฉันคิดว่ามันและ QT กำลังทำงานของพวกเขา ปัญหาต้องอยู่ใน Rails บางทีฉันไม่ได้กำหนดค่าอย่างถูกต้องขอโทษสำหรับความช่วยเหลือฉันจะกำหนดสิ่งที่แน่นอนปัญหาคือและฉันจะแก้ไขได้อย่างไรฉันรักคุณถ้าคุณสามารถช่วยฉัน ltve Ive ยังพยายามใช้วิธีอื่นในการแสดงผล PDF (with. topdf) โดยไม่ต้อง (ทำเช่นนี้ฉันแสดงความคิดเห็นออก config. middleware. use PDFKit :: Middleware จากไฟล์ application. rb ของฉัน): อาการเดียวกันแน่นอน แต่ใช้ WickedPdf ในขณะนี้ ณ จุดนี้ผมเชื่อว่าปัญหานี้อยู่กับ wkhtmltopdf เช่นกัน แต่น่าเสียดายที่ไม่มีคำแนะนำใดที่ Ive สามารถค้นพบได้ใน StackGoogle ก็ทำงานให้ฉัน แต่ฉันต้องการรวมคำแนะนำหลายอย่างรวมถึงบางส่วนที่พบในโพสต์นี้ ถอนการติดตั้ง wkhtmltopdf ค้นหาและลบสำเนาใด ๆ ของ wkhtmltopdf ในความคิดเห็น usrbin บรรทัด WickedPdf. config ใน configinitializers เพิ่ม config. threadsafe เพื่อ development. rb ลบมิดเดิลแวร์และอนุญาตให้แสดงการทำงานของคอนโทรลเลอร์หลักเพื่อจัดการกับคำขอไฟล์ PDF (อาจไม่จำเป็น) เพิ่ม wkhtmltopdf-binary ไปที่ gemfile bundle restart server คุณอาจต้องเพิ่ม Mime :: Type. registeralias applicationpdf pdf to configinitializersmimetypes. rb (สำหรับฉันนี่เป็นสาเหตุเตือน: เริ่มต้นแล้วคงที่ PDF) การตั้งค่าของฉันคือ: Mac OSX Mountain Lion with Rails 3.2.1 Webrick, Postgres และ wkhtmltopdf-binary (0.9.9.1) #: 3159 c # configuration exchange-2010 User: n / a Comments for #: 33597 ลองแก้ไข configinitializerpdfkit. rb ในลักษณะดังต่อไปนี้ อัลกอริทึมการแบ่งหน้าเว็บที่ใช้โดย webkit (WK ใน WKhtmltopdf) ไม่ได้ทำงานได้ดีสำหรับตารางขนาดใหญ่ ฉันขอแนะนำให้แบ่งตารางออกเป็นชิ้นเล็ก ๆ ที่แบ่งหน้าเว็บได้ง่ายขึ้นและใช้ css มาก: ยังได้ดูประเด็นเกี่ยวกับ wkhtmltopdf ต่อไปนี้พวกเขามีความคิดเห็นที่น่าสนใจซึ่งกล่าวถึงตัวอย่างเช่นปัญหาการแยกตาราง มีวิธีแก้ปัญหา JS ที่แยกตารางใน 168 โดยทางโปรแกรมซึ่งอาจช่วยให้คุณ (ฉันไม่ใช้มันแม้ว่า) อัปเดต 08.11.2013 มีการพูดถึงเรื่องนี้ในประเด็น 168 ที่เชื่อมโยงอยู่ด้านบน มีคนจัดการคอมไพล์เวอร์ชัน wkhtmltopdf ที่สนับสนุนการทำลายตารางที่ดีขึ้น แต่น่าเสียดายที่ดูเหมือนว่าจะไม่ได้ออกอย่างเป็นทางการและอาจมีข้อผิดพลาดอื่น ๆ ฉันไม่ทราบวิธีการได้รับมันและฉัน dont รู้วิธีการรวบรวมใน Windows แต่ทุกคนที่สนใจสามารถตรวจสอบเช่นความคิดเห็นที่นี่ (ดูปรับปรุงใหม่ด้านล่าง) Update 24.02.2014 คุณจะยินดีที่ทราบว่าใน wkhtmltopdf 0.12 คุณลักษณะนี้มีการปรับปรุงอย่างมาก อย่างไรก็ตามรอสักครู่ 0.12.1 และทดสอบให้ละเอียดก่อนที่จะเริ่มใช้เวอร์ชันใหม่ ๆ ยังไม่เสถียรเล็กน้อยแม้ว่าคนใหม่ที่ทำงานกับ antialize กำลังทำงานที่ยอดเยี่ยม (ashkulz rocks) เก็บข้อมูลอัปเดตที่ wkhtmltopdf. org และ github ไซต์โค้ด Google ล้าสมัยและกำลังโยกย้ายอย่างช้าๆ ตอบ 23 พ. ย. ที่ 9:01 ขอบคุณที่ฉันมีปัญหานี้ แต่ทางแยกที่คุณกล่าวถึงทำงานให้ฉัน ndash fey 27 ม. ค. 14 เวลา 14:08 ขอขอบคุณสำหรับข้อมูล เวอร์ชัน 0.12.1 แก้ปัญหาการแบ่งหน้าเว็บ ndash Nidhi Sarvaiya Feb 25 14 at 19:16 หมายเหตุการแก้ไขปัญหานี้ใช้ได้กับรุ่นล่าสุด 0.12.1 เท่านั้น สิ่งใดก็ตามก่อนหน้านี้ยังไม่ทำงาน ndash Cerin พ. ย. 3 14 ตอน 23:14 ดิฉันดิ้นรนกับเรื่องนี้สองสามวัน เปิดโต๊ะของฉันอยู่ใน div ด้วยสไตล์การแสดงผล: inline-block เปลี่ยนมันเพื่อป้องกันและมีการเปลี่ยนแปลงเหนือมันทั้งหมดเริ่มทำงาน ndash Hugh 29 มกราคม 16 at 10:55 เป็นโพสต์เก่า แต่เนื่องจากฉันได้สูญเสียมากเวลาพยายามหาทางออกที่เหมาะสมฉันจะวางไว้ที่นี่อาจจะ เป็นประโยชน์กับใครบางคน ดังนั้นจากสิ่งที่ฉันอ่านปัญหาคือว่ามันไม่ทำงาน แต่จริงถ้าคุณตั้งค่าในองค์ประกอบที่มีการแสดงผล: บล็อกทำงานตามที่คาดไว้ (ตามที่ระบุไว้ในที่อื่น) ดังนั้นสำหรับโครงสร้างแบบง่ายๆของ css ตารางที่มีโครงสร้างตารางและจะทำงานได้ตามที่คาดไว้ ฉันมีกรณีซับซ้อนมากขึ้นเล็กน้อยกับ rowspans ดังนั้นการแก้ปัญหาจากด้านบนถูกทำลายไป peaces ซึ่งไม่ได้ต้องการผล ฉันแก้ไขได้โดยใช้ divs สำหรับแต่ละชุด rowspaned ของสาย ฉัน jquery js ทำทุกงาน: I dont รู้ว่าทุกอย่างเป็นสิ่งจำเป็นและฉันไม่คิดว่ามันสมบูรณ์แบบ แต่ไม่งาน. ได้รับการทดสอบเกี่ยวกับโครเมี่ยมเท่านั้นตอบเมื่อ 31 สิงหาคมที่ผ่านมา 18:43 ในกรณีพิเศษของฉันด้วยเหตุผลบางอย่างที่ไม่มีคำตอบก่อนหน้านี้ทำงานให้ฉัน สิ่งที่จบลงด้วยการทำงานคือการรวมกันของหลายสิ่ง ฉันติดตั้ง (ใน Ubuntu 16.04) เสื้อคลุม WTP แบบ WTP แบบ WTP ที่เรียกว่า pdfkit ใช้ pip3 จากนั้นแทนที่จะติดตั้ง Wkhtmltopdf ผ่าน apt-get ฉันติดตั้งไบนารีแบบคงที่ (เวอร์ชัน 0.12.3) โดยทำตามสคริปต์นี้ที่นี่เพิ่ม CSS นี้ (ตามที่แนะนำไว้ในที่เดียว ของคำตอบที่นี่): จากนั้นให้เพิ่มแท็ก lttheadgt และ lttbodygt ตามที่แนะนำไว้ที่นี่ด้วย (โดยที่ตารางเหล่านี้ยังไม่เป็นที่น่าพอใจ): ด้วยการแก้ไขเหล่านี้ฉันสามารถใช้แม่แบบ Mako เพื่อสร้าง HTML และฟีดได้แล้ว ที่ Wkhtmltopdf และได้รับ paginated PDF อย่างสวยงาม # ตอบเมื่อกุมภาพันธ์ 8 เวลา 21:36 คำตอบของคุณ 2017 Stack Exchange, Inc หากคุณต้องการสร้างไฟล์ PDF ต่อไปคุณสามารถอ่านตัวแปรนี้ได้: คุณสามารถระบุตัวเลือก wkhtmltopdf ทั้งหมด คุณสามารถเลือกชื่อตัวเลือกได้ ถ้าตัวเลือกไม่มีค่าใช้ None ค่าเท็จหรือค่า dict สำหรับตัวเลือกที่ทำซ้ำได้ (รวมถึงอนุญาตคุกกี้ส่วนหัวที่กำหนดเองโพสต์ไฟล์ postfile เรียกใช้สคริปต์แทนที่) คุณอาจใช้รายการหรือ tuple ด้วยตัวเลือกที่ต้องการค่าหลายค่า (เช่น - ความลับด้านการให้สิทธิ์ส่วนหัวของลูกค้าเอง) เราอาจใช้ 2-tuple (ดูตัวอย่างด้านล่าง) ตามค่าเริ่มต้น PDFKit จะแสดงเอาต์พุต wkhtmltopdf ทั้งหมด ถ้าคุณไม่ต้องการคุณจะต้องผ่านตัวเลือกที่เงียบ: เนื่องจากไวยากรณ์คำสั่ง wkhtmltopdf ต้องระบุ TOC และ Cover อย่างแยกกัน หากต้องการ cover before TOC ให้ใช้ coverfirst option: คุณสามารถระบุไฟล์ CSS ภายนอกเมื่อแปลงไฟล์หรือสตริงด้วยตัว css คำเตือนนี่คือวิธีแก้ปัญหาสำหรับข้อบกพร่องนี้ใน wqtmltopdf คุณควรลอง - ผู้ใช้สไตล์แผ่นตัวเลือกแรก นอกจากนี้คุณยังสามารถผ่านตัวเลือกใด ๆ ผ่านแท็ก meta ใน HTML ของคุณได้อีกด้วย: การเรียก API แต่ละครั้งจะใช้ paramater การกำหนดค่าตัวเลือก นี่ควรเป็นอินสแตนซ์ของการเรียก API ของ pdfkit. configuration () ใช้ตัวเลือกการกำหนดค่าเป็น paramaters เริ่มต้น ตัวเลือกที่ใช้ได้คือ: wkhtmltopdf - ตำแหน่งของไบนารี wkhtmltopdf โดยค่าเริ่มต้น pdfkit จะพยายามค้นหาตำแหน่งนี้โดยใช้ (ระบบยูนิกซ์) หรือตำแหน่ง (ใน Windows) metatagprefix - คำนำหน้าสำหรับ pdfkit แท็ก meta ที่เฉพาะเจาะจง - โดยค่าเริ่มต้นนี่คือ pdfkit - ตัวอย่าง - เมื่อ wkhtmltopdf ไม่อยู่บนเส้นทาง: IOError: ไม่พบ wkhtmltopdf executable: ตรวจสอบว่าคุณมี wkhtmltopdf ในเส้นทางของคุณหรือตั้งค่าผ่านการกำหนดค่าที่กำหนดเอง (ดูก่อนหน้านี้ มาตรา). ที่ wkhtmltopdf ใน Windows หรือที่ wkhtmltopdf บน Linux ควรกลับเส้นทางจริงไป binary IOError: คำสั่งล้มเหลวข้อผิดพลาดนี้หมายความว่า PDFKit ไม่สามารถประมวลผลการป้อนข้อมูลได้ คุณสามารถลองเรียกใช้คำสั่งจากข้อความแสดงข้อผิดพลาดโดยตรงและดูว่าข้อผิดพลาดใดทำให้เกิดความล้มเหลว (ในบางเวอร์ชัน wkhtmltopdf อาจเป็นสาเหตุโดยความผิดพลาดในการแบ่งส่วน)
Comments
Post a Comment