Pdf.js: Druck ist unscharf/unscharf

Erstellt am 20. Feb. 2013  ·  38Kommentare  ·  Quelle: mozilla/pdf.js

Wenn ich ein PDF mit FF19 und der neuen PDF-Funktion drucke, ist der Druck verschwommen.

Wenn ich mit Acrobat drucke, ist die Schriftart klar.

links = akrobat
rechts = ff pdf

hast du eine idee?

https://plus.google.com/105533044232180103026/posts/dYL855pBkSM

3-upstream 4-printing

Hilfreichster Kommentar

Seit https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 gibt es jetzt die Funktion renderPage in web/viewer.js und die Druckauflösung ist dort fest mit 150 DPI codiert.

function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
  var scratchCanvas = activeService.scratchCanvas;
  var PRINT_RESOLUTION = 150;
  var PRINT_UNITS = PRINT_RESOLUTION / 72.0;

Um die Druckauflösung auf 300 DPI zu ändern, ändern Sie einfach die Zeile darunter.

var PRINT_RESOLUTION = 300;

Laut Release-Tags sollten jetzt alle PDF.js-Versionen von 1.7.x bis 1.10.x diese Fähigkeit haben. Ich bin überrascht, dass dies nirgendwo dokumentiert ist.

Im Idealfall sollte es möglich sein, die Druckauflösung über Abfrageparameter zu ändern, anstatt web/viewer.js zu ändern.

Weitere Informationen finden Sie unter So erhöhen Sie die Druckqualität einer PDF-Datei mit dem PDF.js-Viewer .

Alle 38 Kommentare

Ich vermute, es liegt daran, dass die Ausgabe von pdf.js eine Leinwand ist (eine Leinwand pro Seite, um genau zu sein), die wahrscheinlich nicht zu 100% der Druckerauflösung entspricht.

Das passiert mir auch.

DSCF8966

  • top = Firefox eingebaute PDF.js
  • unten = Adobe Acrobat

Die Druckqualität ist einfach nicht akzeptabel.
Darüber hinaus erzeugt das eingebaute PDF.js einen schwarzen Rand auf der rechten und unteren Seite, als ob es beim Fotokopieren eines kleineren Blattes wäre.

Irgendeine Lösungsmöglichkeit? Ich bin in einer Hotline und habe 200 Benutzer mit diesem Problem.

@BadFriend , @musiphil , welches Betriebssystem verwenden Sie oder Ihre Benutzer?

Gleiches Problem hier bei FFox 19 auf WinXP zu PostScript-Druckern. Die feinen horizontalen Linien werden gedithert, während die vertikalen Linien fein sind. Kopf- und Fußzeilen sind auch in Ordnung.

Ich verwende Firefox 19.0 unter Windows 7 und habe diese Dokumente auf einem HP Color LaserJet CP4525-Drucker mit PCL6 gedruckt.

FF19 + Win7 64bit + OKI561 über PCL6 auf WSD-Port oder Adobe PDF (Adobe Acrobat 9.2.0)

IMG_20130222_074757

links: Chrome-Plug-in
Mitte: Adobe Reader
rechts: Firefox pdf.js

PDF herunterladen -> http://www.file-upload.net/download-7241349/offers-36.pdf.html

Siehe auch #2771. Zitat von @brendandahl :

Die geringe Qualität wird in https://bugzilla.mozilla.org/show_bug.cgi?id=811002 verfolgt .

Der Upstream-Fehler wurde behoben. Ist dies immer noch ein Problem mit den neuesten Versionen von Firefox und PDF.js?

Der Upstream-Fehler wurde behoben. Ist dies immer noch ein Problem mit den neuesten Versionen von Firefox und PDF.js?

Ich denke, es wurde nur für Windows behoben. Es gibt einen neuen Fehler für OSX (Fehler 932313), aber ich bin nicht überzeugt, dass er gültig ist (siehe meinen Kommentar unter https://bugzilla.mozilla.org/show_bug.cgi?id=932313#c2).

Bis das Problem unter Linux nicht behoben ist, stimme ich dafür, diesen Fehler offen zu halten.

Ist es behoben?
Diese Demoseite druckt ok von Firefox
http://mozilla.github.io/pdf.js/web/viewer.html
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16%2011.29.52.jpg

Das Druckergebnis von Chrome und Chromium ist SO verschwommen, ich kann keine Worte finden, um es zu beschreiben
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16%2011.29.58.jpg
Ich habe versucht, dpi für Drucker und PRINT_SCALE RATIO auf 1, 3, 4, 8 einzustellen - kein Effekt
Ich habe die neueste Version von github (8614c17) ausprobiert - dasselbe
(Umgebung: Chrome, Chromium, Windows 7)

Verpasse ich etwas?
Könnten Sie dies bitte überprüfen und möglicherweise eine schnelle Problemumgehung vorschlagen?

@jonny64 danke, dass hast ! Leider kann man hier nicht viel für Chrome/Chromium tun. Die bessere Druckqualität in Firefox ergibt sich durch die Verwendung einer speziellen API zum Drucken, die in Firefox, aber nicht in Chrome verfügbar ist. Früher habe ich die API als Standard vorgeschlagen, aber es gab nicht viel Interesse und daher ist sie immer noch nur in Firefox verfügbar.

:) @jviereck ,
Ich habe den internen Chrome-Viewer ausprobiert
Es druckt in Ordnung, aber es ist 'Speichern', das den Kiosk-Modus bricht
(wir müssen mit Vorschau von Chrome im Kiosk-Vollbildmodus drucken)

Zum Glück habe ich vor einiger Zeit etwas Hintergrund mit C
https://pdfium.googlesource.com/pdfium.git
Ist es die richtige Quelle für den internen Chrome-Viewer?
Ist es besser, "Speichern" in den Chrome-Einstellungen auszublenden oder wenn die Befehlszeile --kiosk eingestellt ist?
Haben Sie Ideen auf hohem Niveau, wo und wie ich das umsetzen kann?

Dies ist immer noch ein Fehler unter OS X und der neuesten Firefox Dev Edition, soweit ich das beurteilen kann, zumindest unter bestimmten Umständen.

So reproduzieren Sie ohne Drucker:

  • Klicken Sie im PDF.js-Viewer auf "Drucken".
  • Klicken Sie auf die Schaltfläche "PDF".
  • Wählen Sie „Als PostScript speichern…“ ( nicht „Als PDF speichern…“)
  • Öffnen Sie die gespeicherte .ps Datei in Preview.app.

Text ist nicht auswählbar und beim Heranzoomen ist der Text ziemlich pixelig. Der Text sieht gut aus, wenn Sie "Als PDF speichern..." auswählen.

Ich habe versucht, die Standardauflösung in zu erhöhen
web/app.js::beforePrint
<< var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(1);

var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(2);

und web/pdf_page_view.js::beforePrint
<< var viewport = pdfPage.getViewport(1);

var viewport = pdfPage.getViewport(2);

Der Druck ist langsamer, aber die Qualität hat sich verbessert

Einige Verbesserungen nach #7677

Gab es in den letzten 4 Monaten Updates zu diesem Problem? Dies ist in der neuesten Version von pdf.js noch erkennbar. Ich habe kürzlich eine Bereitstellung mit pdf.js eingeführt und habe jetzt Dokumente mit verschwommenen Buchstaben gedruckt, die mit dem nativen PDF-Reader von Chrome kein Problem waren.

Sie können dieses Problem reproduzieren, indem Sie die Demoseite von Mozilla ausdrucken . Ich weiß, dass es sich nicht um ein Treiberproblem handelt, da es auch beim Drucken in eine PDF-Datei auftritt.

Es sieht so aus, als ob einige Leute, die pdf.js in der Produktion verwenden, pdf.js vollständig umgehen mussten, um dieses Problem zu umgehen ( Beispiel ).

Derzeit ist ein Drucken in höherer Qualität nicht möglich, ohne den Speicherverbrauch stark zu erhöhen, was die meisten Browser nicht gut vertragen. Das Canvas-Back-End kann diese Funktionalität nicht bereitstellen. Es ist ein Projekt geöffnet (https://github.com/mozilla/pdf.js/projects), um mit dem Prototyp-SVG-Back-End für qualitativ hochwertigen Druck zu recherchieren.

Ich habe festgestellt, dass PDF.js je nach installierter Firefox-Version eine akzeptable Druckqualität und eine unscharfe Druckqualität aufweist. Ich habe https://imgur.com/7Beh7MO , die von einem Direktdruck von links nach rechts von Firefox 52, 47.0.2 und 42 ausgegeben wird, wobei die ersten beiden zumindest frische Updates sind. Wie gezeigt, hat sich in PDF.js zwischen FF 47.0.2 und FF 52 etwas geändert, was die Qualität anscheinend beschissen hat. Es macht mir nichts aus, einen Blick zu werfen, um zu beginnen.

Wenn ich mir die Firefox-Repository-Versionen von PDF.js ansehe, sehe ich, dass 47.0.2 Version 1.4.121 war, was dem Commit 51f6aba entspricht (möglicherweise der Commit danach, der be1e12d ist) und dass Firefox 52 mit PDF.js 1.6 ausgeliefert wurde. 315, was ungefähr dem Commit c23f124 entspricht. Ich überlege derzeit, diese Commits zu unterscheiden, aber der Unterschied zwischen ihnen beträgt wahrscheinlich 400 Commits und jede Information darüber, wo das Drucken liegt, wäre sehr hilfreich.

Wie gezeigt, hat sich in PDF.js zwischen den Veröffentlichungen FF 47.0.2 und FF 52 etwas geändert, was die Qualität beeinträchtigt zu haben scheint.

Obwohl es sicherlich möglich ist, dass eine Änderung in PDF.js dafür verantwortlich ist, würde ich (zumindest anfangs) die Möglichkeit nicht ganz ausschließen, dass das Problem zB mit Grafiken/Druckcode in anderen Teilen von Firefox zusammenhängt.
Es kann hilfreich und vielleicht sogar schneller sein, http://mozilla.github.io/mozregression/ zu verwenden, um einen Regressionsbereich zu finden.

Verwendet die Druckschaltfläche in PDF.js sogar Firefox zum Drucken? Mein
Annahme aufgrund der Tatsache, dass das Plugin in anderen Browsern verfügbar ist
ist, dass es keine Probleme im Zusammenhang mit dem zugrunde liegenden Browser geben würde
übernimmt das Drucken. Dies wird auch durch den Druckverarbeitungsdialog unterstützt
Auflisten von PDF.js-Rendering als Aufgabe zum Senden der Daten an den Drucker. ich werde
Führen Sie einige zusätzliche Tests durch und versuchen Sie, PDF.js als Plugin auszuführen und zu testen
verschiedene Versionen möglich, um zu sehen, ob das etwas ändert.

Am 14. März 2017 um 9:58 Uhr schrieb "Jonas Jenwald" [email protected] :

Wie gezeigt, hat sich in PDF.js zwischen FF 47.0.2 und FF 52 etwas geändert
das scheint die qualität beschissen zu haben,

Es ist zwar durchaus möglich, dass eine Änderung in PDF.js dafür verantwortlich ist, aber ich
würde (zumindest anfangs) die Möglichkeit nicht ganz ausschließen, dass die
Das Problem könnte beispielsweise mit Grafiken/Druckcode in anderen Teilen von zusammenhängen
Feuerfuchs.
Es kann hilfreich und vielleicht sogar schneller sein, zu verwenden
http://mozilla.github.io/mozregression/ um eine Regression zu finden
Bereich.


Sie erhalten dies, weil Sie einen Kommentar abgegeben haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/mozilla/pdf.js/issues/2750#issuecomment-286428765 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AOZHcyFJnLjI8MhAXspe-SIikmMA7YWOks5rlpzwgaJpZM4AcblL
.

--
Bitte klicken, um Hinweise zu lesen:
http://www.mediweightlossclinics.com/sig/ Vertrauliche Kommunikation
http://www.mediweightlossclinics.com/sig/ Haftungsausschluss für Bildungszwecke
http://www.mediweightlossclinics.com/sig/ Franchise-Offenlegungserklärung

Bisher haben wir das Mozilla-spezifische mozPrintCallback überall dort verwendet, wo es möglich war, wenn es unterstützt wurde, dh in Add-On- und Nicht-Add-On-Versionen im Firefox-Browser, da es uns vermutlich ermöglichte, mit weniger Speicher zu drucken Verbrauch und höhere Qualität. Wir haben jedoch versucht, die Verwendung davon zu reduzieren, da es Firefox-spezifisch und manchmal fehlerhaft ist. Daher verwenden wir es jetzt nur im Firefox-Add-on (https://github.com/mozilla/pdf.js/blob/master/ web/firefox_print_service.js).

Im Allgemeinen rendern wir die Leinwände jetzt und drucken sie mit der regulären browserdefinierten Drucklogik, daher denke ich, dass das Problem entweder in einer geänderten Leinwandskalierung / Schriftart-Rendering-Code oder einem Browserfehler liegt.

Den Großteil dieser Änderung finden Sie unter https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 . Vielleicht möchten Sie überprüfen, ob es einen Unterschied in der Druckqualität von Firefox mit und ohne Add-On gibt.

Seit https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 gibt es jetzt die Funktion renderPage in web/viewer.js und die Druckauflösung ist dort fest mit 150 DPI codiert.

function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
  var scratchCanvas = activeService.scratchCanvas;
  var PRINT_RESOLUTION = 150;
  var PRINT_UNITS = PRINT_RESOLUTION / 72.0;

Um die Druckauflösung auf 300 DPI zu ändern, ändern Sie einfach die Zeile darunter.

var PRINT_RESOLUTION = 300;

Laut Release-Tags sollten jetzt alle PDF.js-Versionen von 1.7.x bis 1.10.x diese Fähigkeit haben. Ich bin überrascht, dass dies nirgendwo dokumentiert ist.

Im Idealfall sollte es möglich sein, die Druckauflösung über Abfrageparameter zu ändern, anstatt web/viewer.js zu ändern.

Weitere Informationen finden Sie unter So erhöhen Sie die Druckqualität einer PDF-Datei mit dem PDF.js-Viewer .

Wenn der Fix von @mpryvkin legitim ist, sollte dies definitiv als Option in about:config verfügbar gemacht werden.

Könnte man das parametrieren?

Ich habe versucht, die Standardauflösung in zu erhöhen
web/app.js::beforePrint
<< var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(1);

var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(2);

und web/pdf_page_view.js::beforePrint
<< var viewport = pdfPage.getViewport(1);

var viewport = pdfPage.getViewport(2);

Der Druck ist langsamer, aber die Qualität hat sich verbessert

Es klappt!

Der generische Viewer stellt jetzt dank #10854 die App-Option printResolution zur Verfügung, sodass der vorgefertigte Viewer dafür nicht mehr modifiziert werden muss. Beachten Sie, dass eine Erhöhung der Druckauflösung bei gleichzeitiger Verbesserung der Druckqualität den Druck verlangsamen und/oder den Browser weniger reaktionsschnell machen kann. Dies ist jedoch jetzt ein Kompromiss, den die Benutzer des Betrachters selbst eingehen können.

@timvandermeij Danke für das Update! Sprechen Sie zur Verdeutlichung von "Benutzern" wie in "Benutzer der pdf.js-Bibliothek" oder wie in "Benutzer von Firefox"? Ich falle in die letztere Kategorie (und ich glaube, dieser Fehler betrifft Benutzer von Firefox) und versuche herauszufinden, ob diese AppOptions in Firefox in irgendeiner Weise offengelegt werden.

Update: Ich glaube, @timvandermeij bezieht sich auf "Benutzer der pdf.js-Bibliothek". Ich glaube auch, dass die AppOptions in Firefox durch about:config verfügbar gemacht werden, aber nicht automatisch (dh jemand muss wahrscheinlich den Firefox-Code ändern, um ihn zu aktivieren), da die meisten, aber nicht alle AppOptions dort existieren. pdfjs.cursorToolOnLoad ist in about:config , aber nicht in defaultUrl oder disableHistory , vermutlich weil diese im Firefox-Kontext keinen Sinn ergeben.

@raztus Ja, ich meinte Benutzer der Bibliothek. Firefox-Builds wurden aus diesem Bereich ausgenommen (https://github.com/mozilla/pdf.js/pull/10854#discussion_r287325125), da es nicht leicht zu sagen ist, was beispielsweise mit der Reaktionsfähigkeit des Browsers und der Speichernutzung passiert, wenn Sie diesen Wert erhöhen . Wenn wir mehr Feedback dazu erhalten, bin ich nicht dagegen, die Präferenz auch für Firefox-Builds (mozcentral) verfügbar zu machen.

@timvandermeij Danke und @kleins05 für diese Verbesserung. Ich habe meinen Beitrag zu dieser Funktion aktualisiert.

Gehe ich richtig in der Annahme, dass mit diesem Update die Druckauflösung mit dem folgenden Code eingestellt werden kann?

document.addEventListener('webviewerloaded', function() { PDFViewerApplicationOptions.set('printResolution', 300); });

Ja, ich denke du hast recht. Das webviewerloaded Ereignis ist in der Tat das richtige Ereignis zum Anhören, um App-Optionen festzulegen; sehen:
https://github.com/mozilla/pdf.js/blob/c91f437eaaff79b660805e020f4fa9d4a2a7fe65/web/viewer.js#L208 -L210
Danach sollte PDFViewerApplicationOptions immer verfügbar sein. Ich habe dieses spezielle Snippet noch nicht ausprobiert, aber von der Inspektion her sieht es gut aus und Sie können es ausprobieren, indem Sie den neuesten master -Zweigcode überprüfen, dieses Snippet hinzufügen und prüfen, ob sich die Druckqualität verbessert.

@raztus Ja, ich meinte Benutzer der Bibliothek. Firefox-Builds wurden aus diesem Bereich herausgelassen ( #10854 (Kommentar) ), weil es nicht leicht zu sagen ist, was zB mit der Reaktionsfähigkeit des Browsers und der Speichernutzung passiert, wenn Sie diesen Wert erhöhen. Wenn wir mehr Feedback dazu erhalten, bin ich nicht dagegen, die Präferenz auch für Firefox-Builds (mozcentral) verfügbar zu machen.

@timvandermeij Ich würde gerne dazu beitragen, etwas von diesem Feedback zu geben. Immerhin ist about:config bereits ein Bereich, in dem die Garantie verfällt ;) Wie kann ich dazu beitragen? Muss ich Firefox von Grund auf neu erstellen, um das printResolution zu ändern?

Sie können damit experimentieren, indem Sie den Standard-Viewer öffnen (entweder https://mozilla.github.io/pdf.js/web/viewer.html, der immer den neuesten master Zweigcode oder einen benutzerdefinierten Checkout ausführt). , öffnen Sie die Webkonsole und geben Sie PDFViewerApplicationOptions.set('printResolution', 300); . Dadurch wird die Druckauflösung auf 300 DPI anstelle der standardmäßigen 150 DPI eingestellt. Wenn Sie dann auf die Schaltfläche Drucken klicken, werden Sie einen Unterschied in der Druckqualität feststellen, aber auch in der Zeit, die zum Rendern der Seiten und zum Speicherverbrauch benötigt wird (ich habe dies gerade selbst ausprobiert, um sicherzustellen, dass diese Schritte funktionieren). Die Hauptfrage ist, wie sich die Druckauflösung in DPI auf die Speichernutzung/Renderzeit für verschiedene Arten von PDF-Dateien bezieht, z. B. kleine/mittlere/große, aber auch reine Text- oder bildlastige Dokumente. Wenn wir mehr darüber wissen, wie es sich in verschiedenen realen Szenarien verhält, können wir möglicherweise auch die Einstellung für Firefox-Builds einführen und / oder den Standardwert aktualisieren.

Ich habe die obige Methode ausprobiert, aber ich werde undefiniert.
Dies ist mit Chrome Canary Version 77.0.3818.0 (Offizieller Build) Canary (64-Bit)

Ja, wenn Sie das ausführen, erhalten Sie undefined da das Setzen einer Option keinen Rückgabewert hat, aber wenn Sie dann erneut drucken, haben Sie eine bessere Druckausgabequalität.

Danke.
Warum ist dies nicht als vom Benutzer einstellbare Option verfügbar, sondern nur als programmgesteuert einstellbare?

Dies wird in den obigen Kommentaren erläutert, insbesondere https://github.com/mozilla/pdf.js/issues/2750#issuecomment -496697032. Wir wollen zuerst damit experimentieren, bevor wir es leichter zugänglich machen. Beachten Sie, dass PR #10879 erst vor einem Tag mit zusammengeführt wurde, sollte ein wenig bei dem Problem der Speichernutzung helfen, und jetzt, da dies zumindest programmgesteuert einstellbar ist, können wir einfacher damit experimentieren und Verbesserungen vornehmen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

timvandermeij picture timvandermeij  ·  4Kommentare

SehyunPark picture SehyunPark  ·  3Kommentare

sujit-baniya picture sujit-baniya  ·  3Kommentare

AlexP3 picture AlexP3  ·  3Kommentare

BrennanDuffey picture BrennanDuffey  ·  3Kommentare