2014-08-29 31 views
19

html/css/js dosyaları pdf oluşturmak güzel proje bulunmaktadırPDF oluşturmak için tarayıcının (chrome/firefox) HTML/CSS/JS oluşturma motoru nasıl kullanılır?

  1. http://wkhtmltopdf.org/ (açık kaynak)
  2. https://code.google.com/p/flying-saucer/ (açık kaynak)
  3. http://cssbox.sourceforge.net/ (şart değil düz pdf nesil)
  4. http://phantomjs.org/ (açık kaynak pdf çıkışı için izin verir)
  5. http://www.princexml.com/
  6. (comercial ama orada en iyi biri eller aşağı)

Bir web sayfası yüklemek, komut dosyalarını çalıştırmak ve sayfayı biçimlendirmek ve yazdırma için bir pdf dosyası oluşturmak için krom veya firefox tarayıcısını (ikisi de çapraz platform olduğundan) programlı olarak denetlemek istiyorum.

Ama nasıl ben

gibi bir şey, böylece otomatik bir şekilde tarayıcıyı kontrol ederek başlarım kılmak-to-pdf Kolayca can dosya to-render.html out.pdf

Sayfayı tarayarak ve sonra pdf'ye yazdırarak bu işi el ile yapın ve bir pdf dosyasında,% 100 spesifikasyona sahip html/css/js sayfasının doğruluğunu görüyorum. Hatta tarayıcıdaki konfigürasyon seçenekleri ile pdf'de url başlıkları ihmal edilebilir. Fakat yine de, bu süreci otomatikleştirmeye nasıl başlarım?

Bir sayfasına giderek ve tarayıcı render sayfasını kullanarak pdf üreten, sunucu tarafında tarayıcının açılmasını otomatik hale getirmek istiyoruz.

Ben sadece doğru soruyu nasıl bilmiyorum çok araştırma yapmış. Tarayıcıyı programlı olarak kontrol etmek istiyorum, belki selenyum gibi ama bir web sayfasını PDF olarak ihraç ettiğim noktaya kadar (iyi pdfs üretmek için tarayıcının işleme özelliklerini kullanarak)

+1

sen [ChromeDriver] baktınız mı (https://code.google.com/p/selenium/wiki/ChromeDriver)? –

+0

Seni [Krom komut satırı args] bir arada kullanmak mümkün olabilir pdf –

+1

olarak geçerli sayfayı (http://peter.sh/experiments/chromium ihracat tarayıcı anlatmak için selenyum nasıl kullanılacağını göremiyorum -command-line-keys /) '--kiosk --kiosk-print' ile birlikte varsayılan PDF yazıcınızı [' prefs' özelliği] 'nde geçirebilirsiniz (https://sites.google.com/a/chromium.org/ chromedriver/yetenekleri # TOK-List-of-the tanınan-yetenekleri). Bunu hiç denemedim ama başlayacağım yer burası. –

cevap

5

Uzman değilim ama PhamtomJS gibi görünüyor iş için doğru araç olmak. Ben başsız hangi tarayıcıyı hakkında o (sanırım o krom/krom)

var page = require('webpage').create(); 
page.open('http://github.com/', function() { 
    var s = page.evaluate(function() { 
     var body = document.body, 
      html = document.documentElement; 

     var height = Math.max(body.scrollHeight, body.offsetHeight, 
      html.clientHeight, html.scrollHeight, html.offsetHeight); 
     var width = Math.max(body.scrollWidth, body.offsetWidth, 
      html.clientWidth, html.scrollWidth, html.offsetWidth); 
     return {width: width, height: height} 
    }); 

    console.log(JSON.stringify(s)); 

    // so it fit ins a single page 
    page.paperSize = { 
     width: "1980px", 
     height: s.height + "px", 
     margin: { 
      top: '50px', 
      left: '20px' 
     } 
    }; 

    page.render('github.pdf'); 
    phantom.exit(); 
}); 

Umarım yardımcı olur altına kullanır olsa emin değilim.

+3

CSS, yazdırırken sayfa boyutlandırmaya izin veriyor. Öyleyse, kağıdın kod örneğinde olmaması yardımcı olmaz. Ayrıca, css baskısında da sayfa sonu var. Görülüyor ki, PhantomJS'nin webkit oluşturma motorunu kullandığını görüyorum, bunun yerine desteklenen bir tarayıcı kullanmıyor, bunun yerine webkit'in bir çatalı (bu görev için zaten tamam olan). Ama yine de prensxml gibi çalışmasını sağlamak için çok fazla çalışma gerektirir. Sanırım şimdi ucuz olmalarının nedeni bu değil. –

İlgili konular