2017-11-15 3 views
0

Ich benutze PhantomJS, um Webseite in PDF zu konvertieren. Wenn ich den Code in meiner Entwicklungsumgebung ausführe, ist die Größe der Ausgabedatei ungefähr ein paar KB, aber wenn ich denselben Code auf AWS-Lambda ausführe, ist die Ausgabedateigröße um einige MB.PhantomJS, generierte PDF-Datei Größe ist anders auf lokaler im Vergleich zu AWS-Lambda

Ich möchte eine PDF-Datei mit der gleichen Größe der Entwicklungsumgebung erstellen. Hier

ist der Code verwende ich für die Umwandlung

var system = require('system'); 
var page = require('webpage').create(); 

page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'; 

var url = system.args[1]; 
var file_name = system.args[2] 
var margin = system.args[3]; 

page.paperSize = { 
    format: 'A2', 
    orientation: 'portrait', 
    margin: JSON.parse(margin) 
}; 

page.evaluate(function() { 
    var style = document.createElement('style'); 
    style.innerHTML = '.card-padding{padding-top: 0;padding-bottom: 0;}'; 
    document.body.appendChild(style); 
}) 

page.open(url, function start(status) { 
    window.setTimeout(function() { 
     page.render(file_name, {format: 'pdf'}); 
     system.stdout.write(file_name) 
     phantom.exit(); 
    }, 5000); 
}); 

Ich habe auch versucht die Seite dpi einstellen

page.open(url, function start(status) { 
    window.setTimeout(function() { 
     page.dpi=72 
     page.render(file_name, {format: 'pdf'}); 
     system.stdout.write(file_name) 
     phantom.exit(); 
    }, 5000); 
}) 

aber es half nicht. Sie können das Projekt finden here

+0

Ich würde beginnen, indem Sie hier suchen, um festzustellen, was die genauen Dateiunterschiede sind: https://superuser.com/questions/46123/how-to-compare-the-differences-between-two-pdf-files-on- Windows –

+0

Ich benutzte Diffpdf in Ubuntu, aber es gibt mir und umsetzbare Informationen nicht. es sieht aus wie in der Datei mit größerer Größe, die Schriftart ist ein kleines bisschen kleiner. – Fartash

Antwort

0

Lösung ist;

  • erstellen .fonts Ordner
  • die Schriften setzen Sie in PDF in .fonts Ordner
  • hinzufügen Umgebungsvariable Lambda HOME = /var/task

es reduziert die Dateigröße verwenden.

Was war das Problem;

PhantomJs v2.1.x auf debian und ubuntu behandelt zumindest lokale Schriftarten korrekt, dh sie sind in die PDF eingebettet und daher in hoher Qualität auf dem Bildschirm gerendert, der Text ist such- und auswählbar und die Dateigröße wird beibehalten niedrig. Bei Remote-Webfonts wird der Text in Konturen konvertiert, Schriftarten sind nicht eingebettet und Text kann nicht gesucht und ausgewählt werden. Dadurch wird die Dateigröße für längere Dokumente enorm.

Verwandte Themen