วิธีแปลงไฟล์ HTML เป็น PDF (มีสี)


30

ฉันมีไฟล์ HTML ที่ใช้ style.css และมีสีเช่น:

<font style=BACKGROUND-COLOR:red; color=white>FOO</font>

ฉันจะ "ส่งออก" ไฟล์ภายในเครื่องนี้บน Ubuntu 12.04 ไปเป็น PDF ได้อย่างไร (รูปลักษณ์และสีควรเหมือนกัน) ฉันลองใช้ตัวอย่าง: Ctrl+ P-> พิมพ์เป็น PDF แต่มันก็ไม่ได้รักษาสีเอาไว้ ฉันพยายามhtmldocกับ--colorตัวเลือก .. แต่มันเป็นปัญหาเดียวกัน ..

มันจะเป็นการดีถ้าคุณทำสิ่งนี้ผ่านทางบรรทัดคำสั่ง


ที่เกี่ยวข้อง: เว็บเพจเพื่อแปลง PDF
kenorb

คำตอบ:


36

เปิดไฟล์ html ของคุณใน LibreOffice Writer จากนั้นภายใต้ในเมนูให้เลือกFile export to PDFแค่นั้นแหละ.

หากคุณต้องการบรรทัดคำสั่งที่จะดูที่แปลงเพจ HTML เพื่อ PDF โดยใช้เครื่องมือเปิดที่มา - Linux / OS X / Windows

sudo apt-get install wkhtmltopdfซอฟต์แวร์ที่สามารถติดตั้งโดยใช้


ฉันคิดว่านี่เป็นไปโดยอัตโนมัติในบรรทัดคำสั่งด้วยความพยายามบางอย่าง :)
gertvdijk

@ gertvdijk นั่นคือสิ่งที่เกินความสามารถของฉัน ฉันไม่เคยใช้ LibO ผ่าน CLI

มีนี้ wkhtmltopdf เช่นเดียว แต่ผมมีประสบการณ์มันไม่มีcyberciti.biz/open-source/...

กรุณาโพสต์ wkhtmltopdf เป็นคำตอบมันแก้ปัญหาได้
gasko peter

@gaskopeter ทำตามที่ร้องขอโดยแก้ไขคำตอบ

16

Webkit HTML เป็น PDF:

sudo apt-get install wkhtmltopdf

http://wkhtmltopdf.org/

http://www.cyberciti.biz/open-source/html-to-pdf-freeware-linux-osx-windows-software/

เวอร์ชันล่าสุดไม่มีส่วนหัว (ไม่ต้องใช้เซิร์ฟเวอร์ X)

ความเป็นไปได้อีกประการหนึ่ง: phantomjs คือเว็บเบราว์เซอร์ที่ไม่มีหัวเวทย์ที่มีพื้นฐานมาจาก webkit html มันสามารถส่งออกหน้าเป็น PDF เหนือสิ่งอื่นใด

http://phantomjs.org


4
บน OS brew install Caskroom/cask/wkhtmltopdfX:
kenorb

10

WeasyPrintดูเหมือนจะมีแนวโน้ม ฉันพยายามwkhtmltopdfและถึงแม้ว่ามันจะแสดงผลในลักษณะที่ยอมรับได้ แต่ก็ไม่ได้ทำให้ทุกอย่างถูกต้องและสร้างไฟล์ PDF ที่ใช้เวลาเปิดไม่กี่วินาที!

ติดตั้ง

pip install weasyprint

วิ่ง

weasyprint mypage.html out.pdf

อาจมีประโยชน์ในการเปลี่ยน CSS หากคุณต้องการให้มุมมองเบราว์เซอร์และ PDF มีลักษณะเหมือนกัน

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}

ฉันเพิ่งลองติดตั้งweasypeaseyแต่ไม่ได้ผล .. คุณอาจช่วยได้ไหม :) ครั้งแรกที่ฉันทำสิ่งนี้apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-infoแล้วติดตั้ง pip ด้วยpip install weasypeasyแต่ได้รับข้อผิดพลาดนี้: Could not find any downloads that satisfy the requirement weasypeasy
clarkk

1
@ คลาร์กฉันไม่ดี weasyprintมันเป็นเรื่องจริง ดังนั้นpip install weasyprint
Pithikos

3
weasyprintดี แต่ช้ากว่าwkhtmltopdfที่ฉันจำได้ประมาณ 15 เท่าดังนั้นจึงไม่เหมาะที่เราจะสร้างรายงานตามความต้องการสำหรับลูกค้าของเรา wkhtmltopdfสามารถโน้มน้าวให้ทำงานได้ดีแม้จะมีรายงานที่ซับซ้อน ... ด้วยความพยายามอย่างมาก!
Sam Watkins

ยอดเยี่ยมมันเก็บ CSS และมันยอดเยี่ยม ..
Aditya ultra

3

ส่วนขยาย Web2PDFConverterสำหรับ Chromium หรือ Chrome แปลงหน้าเว็บเป็น PDF

หรือคุณสามารถเพียงใช้เว็บไซต์นี้: http://pdfcrowd.com/ สำหรับไฟล์ในเครื่อง: http://pdfcrowd.com/#convert_by_upload


การใช้ Firefox + cmd line น่าจะดีกว่า: P
gasko peter

@gaskopeter pdfcrowd.com/#convert_by_upload - เปิดใน Firefox
Radu Rădeanu

สมการทางคณิตศาสตร์ไม่ได้รับการแปลงเราต้องใช้รุ่นที่พิมพ์ได้
Adam

2

คุณอาจลองใช้PhantomJSและรหัสบางตัวอย่างโดยใช้rasterize.js :

phantomjs rasterize.js http://example.com/

หรือใช้html-pdfแพ็คเกจ NodeJS npm (ดูGitHubติดตั้งผ่าน:)npm install -g html-pdfตามที่แนะนำในความคิดเห็น การใช้งาน:

html-pdf http://example.com/ example.pdf

มีแพ็คเกจ NodeJS npm ที่พร้อมใช้งาน: html-pdf - ตัวแปลง HTML เป็น PDF ที่ใช้ phantomjs
ruvim

ฉันไม่สามารถติดตั้งด้วย npm ได้เนื่องจาก phantomjs-prebuild หายไป (ซึ่งไม่สามารถติดตั้ง propperly เนื่องจากสิทธิ์การเข้าถึงแม้มีรูท)
Martin Thoma

2

ฉันได้ลองWeasyPrintตามที่คนอื่นแนะนำ มันไม่ได้แปลงได้ดีในหลาย ๆ หน้าและในบางหน้ามันก็ล้มเหลวด้วยข้อผิดพลาด

addon Firefox ต่อไปนี้ใช้งานได้สำหรับฉัน Firefox 55. มันบอกว่า Windows เท่านั้น แต่ทำงานบน Ubuntu ได้

Fireshot


1

ลองDompdf (ตรวจสอบซอร์สโค้ดที่ GitHub ) ซึ่งเป็นโปรแกรมแปลง HTML เป็น PDF ห้องสมุดนี้ใช้งานง่ายมากและติดตั้งง่ายมาก ใช้แต่งเพลงคุณสามารถตั้งค่าได้อย่างรวดเร็ว

ข้อกำหนด: PHP 5.0+ (แนะนำ 5.3+), ส่วนขยาย DOM, ส่วนขยาย GD

ตัวอย่างรหัส PHP:

<?php
// somewhere early in your project's loading, require the Composer autoloader
// see: http://getcomposer.org/doc/00-intro.md
require 'vendor/autoload.php';

// disable DOMPDF's internal autoloader if you are using Composer
define('DOMPDF_ENABLE_AUTOLOAD', false);

// include DOMPDF's default configuration
require_once 'vendor/dompdf/dompdf/dompdf_config.inc.php';


$htmlString = '';
ob_start();
include('html_to_dpf.html');
$htmlString .= ob_get_clean();


$dompdf = new DOMPDF();
$dompdf->load_html($htmlString);
$dompdf->render();
$dompdf->stream("sample.pdf");
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.