Pdf.js: الطباعة مشوشة / ضبابية

تم إنشاؤها على ٢٠ فبراير ٢٠١٣  ·  38تعليقات  ·  مصدر: mozilla/pdf.js

إذا قمت بطباعة ملف pdf باستخدام FF19 ووظيفة pdf الجديدة ، فستكون الطباعة ضبابية.

إذا قمت بالطباعة باستخدام أكروبات ، يكون الخط واضحًا.

يسار = بهلوان
يمين = ff pdf

عندك فكرة

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

3-upstream 4-printing

التعليق الأكثر فائدة

منذ https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 هناك الآن وظيفة renderPage في web/viewer.js ودقة الطباعة مشفرة بشكل ثابت هناك مثل 150 نقطة لكل بوصة.

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

لتغيير دقة الطباعة إلى 300 نقطة في البوصة ، ما عليك سوى تغيير السطر أدناه.

var PRINT_RESOLUTION = 300;

وفقًا لعلامات الإصدار ، يجب أن تتمتع جميع إصدارات PDF.js من 1.7.x إلى 1.10.x بهذه الإمكانية الآن. أنا مندهش من أن هذا لم يتم توثيقه في أي مكان.

من الناحية المثالية ، يجب أن تكون هناك إمكانية لتغيير دقة الطباعة من معلمات الاستعلام بدلاً من تعديل web/viewer.js .

راجع كيفية زيادة جودة طباعة ملف PDF باستخدام عارض PDF.js لمزيد من التفاصيل.

ال 38 كومينتر

أعتقد أن السبب هو أن إخراج pdf.js عبارة عن لوحة قماشية (لوحة واحدة لكل صفحة ، على وجه الدقة) ، والتي ربما لا تتطابق مع دقة الطابعة بنسبة 100٪.

هذا يحدث لي أيضا.

DSCF8966

  • أعلى = Firefox مدمج في PDF.js
  • أسفل = Adobe Acrobat

جودة الطباعة غير مقبولة بكل بساطة.
بالإضافة إلى ذلك ، يُنشئ ملف PDF.js المدمج حدًا أسود على الجانبين الأيمن والسفلي ، تمامًا كما لو كان ناتجًا عن نسخ ورقة بحجم أصغر.

اي حل؟ أنا على خط ساخن ولدي 200 مستخدم بهذه المشكلة.

BadFriend ، musiphil ، ما هو نظام التشغيل الذي تستخدمه أنت أو المستخدمون لديك؟

نفس المشكلة هنا على FFox 19 على WinXP إلى طابعة PostScript. الخطوط الأفقية الدقيقة مذبذبة ، بينما الخطوط العمودية جيدة. الرؤوس والتذييلات جيدة أيضًا.

أنا أقوم بتشغيل Firefox 19.0 على Windows 7 ، وقمت بطباعة هذه المستندات على طابعة HP Color LaserJet CP4525 مع PCL6.

FF19 + Win7 64bit + OKI561 عبر PCL6 على منفذ WSD أو Adobe PDF (Adobe Acrobat 9.2.0)

IMG_20130222_074757

اليسار: Chrome Plugin
الوسط: برنامج Adobe Reader
يمينًا: Firefox pdf.js

تنزيل ملف PDF -> http://www.file-upload.net/download-7241349/offers-36.pdf.html

أنظر أيضا # 2771. نقلا عن brendandahl :

يتم تتبع الجودة المنخفضة في https://bugzilla.mozilla.org/show_bug.cgi؟id=811002 .

تم إصلاح الخلل في المنبع. هل ما زالت هذه مشكلة في أحدث إصدارات Firefox و PDF.js؟

تم إصلاح الخلل في المنبع. هل ما زالت هذه مشكلة في أحدث إصدارات Firefox و PDF.js؟

أعتقد أنه تم إصلاحه لنظام Windows فقط. هناك خطأ جديد مملوء بـ OSX (الخطأ 932313) لكنني لست مقتنعًا بأنه صالح (انظر تعليقي على https://bugzilla.mozilla.org/show_bug.cgi؟id=932313#c2).

حتى يتم إصلاح المشكلة على Linux ، أصوت لإبقاء هذا الخطأ مفتوحًا.

هل تم إصلاحه؟
هذه الصفحة التجريبية تطبع جيدًا من 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

نتيجة طباعة Chrome و Chromium ضبابية جدًا ، ولا يمكنني العثور على كلمات لوصفها
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16٪2011.29.58.jpg
حاولت تعيين نقطة في البوصة للطابعة و PRINT_SCALE RATIO إلى 1 ، 3 ، 4 ، 8 - بلا تأثير
جربت أحدث إصدار من جيثب (8614c17) - نفس الشيء
(البيئة: Chrome و Chromium و windows 7)

هل فاتني شيء؟
هل يمكنك مراجعة هذا وربما اقتراح حل سريع؟

@ jonny64 شكرا للإبلاغ عن هذا! لسوء الحظ ، أعتقد أنه لا يوجد الكثير الذي يمكن القيام به لمتصفح Chrome / Chromium هنا. ينتج عن جودة الطباعة الأفضل في Firefox نتائج باستخدام واجهة برمجة تطبيقات خاصة للطباعة متوفرة في Firefox ولكن ليس في Chrome. مرة أخرى في الأيام التي اقترحت فيها API كمعيار ولكن لم يكن هناك الكثير من الاهتمام ، وبالتالي فهي لا تزال متاحة فقط في Firefox.

:) jviereck ، حسنًا ، حسنًا ، يجب أن أعيش معه
حاولت عارض Chrome الداخلي
يطبع بشكل جيد ، لكنه وضع الكشك "حفظ"
(نحتاج إلى الطباعة مع المعاينة من Chrome في وضع ملء الشاشة في Kiosk)

لحسن الحظ ، لدي بعض العودة إلى الوراء مع C منذ بعض الوقت
https://pdfium.googlesource.com/pdfium.git
هل هو المصدر الصحيح لعارض Chrome الداخلي؟
هل من الأفضل إخفاء "حفظ" من إعدادات Chrome أم عند تعيين سطر أوامر --kiosk؟
هل لديك أي أفكار عالية المستوى أين وكيف يمكنني تنفيذها؟

لا يزال هذا خطأ في OS X وأحدث إصدار من Firefox Dev ، على حد علمي ، على الأقل في بعض الظروف.

كيفية التكاثر بدون طابعة:

  • انقر فوق "طباعة" في عارض PDF.js.
  • انقر فوق الزر "PDF".
  • اختر "حفظ باسم PostScript ..." ( وليس "حفظ كملف PDF ...")
  • افتح الملف المحفوظ .ps في تطبيق Preview.app.

النص غير قابل للتحديد ، وعند التكبير ، يكون النص منقسمًا تمامًا. يبدو النص رائعًا إذا اخترت "حفظ كملف PDF ..."

حاولت زيادة الدقة الافتراضية بتنسيق
web / app.js :: beforePrint
<< var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (1) ؛

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

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

var viewport = pdfPage.getViewport (2) ،

الطباعة أبطأ ولكن الجودة تحسنت

بعض التحسينات بعد # 7677

هل كانت هناك أي تحديثات لهذه المشكلة في الأشهر الأربعة الماضية؟ لا يزال هذا ملحوظًا في أحدث إصدار من pdf.js. لقد بدأت مؤخرًا عملية نشر باستخدام pdf.js ولدي الآن مستندات تطبع بأحرف غامضة لم تكن مشكلة في قارئ PDF الأصلي في Chrome.

يمكنك إعادة إنتاج هذه المشكلة عن طريق الطباعة من صفحة العرض التوضيحي الخاصة بـ Mozilla. أعلم أنها ليست مشكلة في برنامج التشغيل لأنها تحدث عند الطباعة إلى ملف PDF أيضًا.

يبدو أن بعض الأشخاص الذين يستخدمون pdf.js في الإنتاج قد اضطروا إلى تجاوز pdf.js بالكامل للتغلب على هذه المشكلة ( مثال ).

في الوقت الحالي ، لا يمكن إجراء طباعة بجودة أعلى بدون زيادة استخدام الذاكرة بشكل كبير ، وهو ما لن تتحمله معظم المتصفحات. لا يمكن أن توفر الواجهة الخلفية للقماش مثل هذه الوظيفة. هناك مشروع مفتوح (https://github.com/mozilla/pdf.js/projects) للبحث باستخدام النموذج الأولي SVG الخلفي للطباعة عالية الجودة.

لقد وجدت أن ملف PDF.js يتمتع بجودة طباعة مقبولة وجودة طباعة غير واضحة اعتمادًا على إصدار Firefox المثبت ، لذا أود إلقاء نظرة على ما تغير بين الإصدارات التي تمكنت من الطباعة منها. لدي https://imgur.com/7Beh7MO ، وهو ناتج من طباعة مباشرة من اليسار إلى اليمين من Firefox 52 و 47.0.2 و 42 ، مع التحديثين الأولين على الأقل. كما هو موضح ، تم تغيير شيء ما في PDF.js بين إصدارات FF 47.0.2 و FF 52 التي يبدو أنها قد ألغت الجودة ، لذلك إذا كان لدى أي شخص معلومات حول الإشارات المرجعية التي يجب أن ينظر إليها لتبدأ مع تلك الإصدارات من Firefox ، فلن أفعل ذلك. ر نلقي نظرة للبدء.

بالنظر إلى إصدارات مستودع Firefox من PDF.js ، أرى أن 47.0.2 كان الإصدار 1.4.121 ، والذي يتوافق مع الالتزام 51f6aba (قد يكون الالتزام بعد ذلك ، وهو be1e12d) وأن Firefox 52 تم شحنه مع PDF.js 1.6. 315 ، والتي تلتزم تقريبًا c23f124. أنا أبحث حاليًا في اختلاف هذه الالتزامات ، لكن الفرق بينهما ربما يكون 400 التزام وأي معلومات حول مكان تكمن الطباعة ستكون مفيدة للغاية.

كما هو موضح ، تغير شيء ما في PDF.js بين إصدارات FF 47.0.2 و FF 52 التي يبدو أنها قد ألغت الجودة ،

على الرغم من أنه من الممكن بالتأكيد أن يكون التغيير في PDF.js مسؤولاً ، إلا أنني (على الأقل في البداية) لن أستبعد تمامًا احتمال أن تكون المشكلة مرتبطة ، على سبيل المثال ، برمز الرسومات / الطباعة في أجزاء أخرى من Firefox.
قد يكون من المفيد ، وربما الأسرع ، استخدام http://mozilla.github.io/mozregression/ لمحاولة إيجاد نطاق انحدار.

هل يستخدم زر الطباعة داخل PDF.js متصفح Firefox للطباعة؟ لي
افتراض يعتمد على حقيقة أن البرنامج المساعد متاح في متصفحات أخرى
هو أنه لن تكون هناك أية مشكلات تتعلق بكيفية المتصفح الأساسي
مقابض الطباعة. هذا مدعوم أيضًا من خلال حوار معالجة الطباعة
سرد عرض PDF.js كمهمة لإرسال البيانات إلى الطابعة. انا سوف
قم ببعض الاختبارات الإضافية وحاول تشغيل PDF.js كمكوِّن إضافي واختبار
إصدارات مختلفة من الممكن معرفة ما إذا كان ذلك يغير أي شيء.

في 14 آذار (مارس) 2017 ، الساعة 9:58 صباحًا ، كتب "Jonas Jenwald" [email protected] :

كما هو موضح ، تغير شيء ما في PDF.js بين إصدارات FF 47.0.2 و FF 52
التي يبدو أنها قد اختفت الجودة ،

في حين أنه من المحتمل بالتأكيد أن يكون التغيير في PDF.js مسؤولاً ، إلا أنني
لن يستبعد (على الأقل في البداية) احتمال أن يكون
يمكن أن تكون المشكلة متعلقة بالرسومات / رمز الطباعة في أجزاء أخرى من
ثعلب النار.
قد يكون مفيدًا ، وربما أسرع ، في الاستخدام
http://mozilla.github.io/mozregression/ لمحاولة إيجاد الانحدار
نطاق.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/mozilla/pdf.js/issues/2750#issuecomment-286428765 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AOZHcyFJnLjI8MhAXspe-SIikmMA7YWOks5rlpzwgaJpZM4AcblL
.

-
الرجاء النقر لقراءة الإشعارات:
http://www.mediweightlossclinics.com/sig/ الاتصال السري
http://www.mediweightlossclinics.com/sig/ إخلاء المسؤولية عن الأغراض التعليمية
http://www.mediweightlossclinics.com/sig/ بيان الإفصاح عن الامتياز

في السابق ، استخدمنا mozPrintCallback الخاص بـ Mozilla حيثما أمكننا ذلك إذا كان مدعومًا ، على سبيل المثال ، في الإصدارات الإضافية وغير الإضافية في متصفح Firefox ، حيث من المفترض أنه سمح لنا بالطباعة بذاكرة أقل استهلاك وجودة أعلى. ومع ذلك ، حاولنا تقليل استخدام ذلك لأنه خاص بـ Firefox وأحيانًا عربات التي تجرها الدواب ، لذلك نستخدمها الآن فقط في وظيفة Firefox الإضافية (https://github.com/mozilla/pdf.js/blob/master/ web / firefox_print_service.js).

بشكل عام ، نقوم الآن بعرض اللوحات القماشية وطباعتها باستخدام منطق الطباعة العادي المحدد بالمتصفح ، لذلك أعتقد أن المشكلة قد تكون إما في تغيير حجم اللوحة القماشية / رمز عرض الخط أو خطأ في المتصفح.

راجع https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 لغالبية هذا التغيير. قد ترغب في التحقق مما إذا كان هناك اختلاف في جودة الطباعة من Firefox مع الوظيفة الإضافية وبدونها.

منذ https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 هناك الآن وظيفة renderPage في web/viewer.js ودقة الطباعة مشفرة بشكل ثابت هناك مثل 150 نقطة لكل بوصة.

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

لتغيير دقة الطباعة إلى 300 نقطة في البوصة ، ما عليك سوى تغيير السطر أدناه.

var PRINT_RESOLUTION = 300;

وفقًا لعلامات الإصدار ، يجب أن تتمتع جميع إصدارات PDF.js من 1.7.x إلى 1.10.x بهذه الإمكانية الآن. أنا مندهش من أن هذا لم يتم توثيقه في أي مكان.

من الناحية المثالية ، يجب أن تكون هناك إمكانية لتغيير دقة الطباعة من معلمات الاستعلام بدلاً من تعديل web/viewer.js .

راجع كيفية زيادة جودة طباعة ملف PDF باستخدام عارض PDF.js لمزيد من التفاصيل.

إذا كان إصلاح mpryvkin شرعيًا ، فيجب بالتأكيد كشفه كخيار في about: config.

يمكن أن يكون هذا معلمات؟

حاولت زيادة الدقة الافتراضية بتنسيق
web / app.js :: beforePrint
<< var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (1) ؛

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

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

var viewport = pdfPage.getViewport (2) ،

الطباعة أبطأ ولكن الجودة تحسنت

إنها تعمل!

يعرض العارض العام الآن خيار التطبيق printResolution بفضل # 10854 لذلك لا يلزم تعديل العارض المبني مسبقًا لهذا الغرض بعد الآن. لاحظ أن زيادة دقة الطباعة ، مع تحسين جودة الطباعة ، قد تجعل الطباعة أبطأ و / أو المستعرض أقل استجابة ، ولكن هذه هي المقايضة الآن التي يمكن للمستخدمين العارضين القيام بها بأنفسهم.

timvandermeij شكرا لك على التحديث! للتوضيح ، هل تتحدث عن "المستخدمين" كما في "مستخدمي مكتبة pdf.js" أم كما في "مستخدمي Firefox"؟ أقع في الفئة الأخيرة (وأعتقد أن هذا الخطأ معني بمستخدمي Firefox) ، وأحاول معرفة ما إذا كانت خيارات AppOptions هذه مكشوفة في Firefox بأي شكل من الأشكال.

تحديث: أعتقد أن timvandermeij يشير إلى "مستخدمي مكتبة pdf.js". أعتقد أيضًا أن AppOptions يتم عرضها في Firefox من خلال : config ، ولكن ليس تلقائيًا (أي ، ربما يتعين على شخص ما تعديل كود Firefox لتمكينه) ، حيث أن معظم خيارات AppOptions وليس كلها موجودة هناك. pdfjs.cursorToolOnLoad موجود في حوالي: config ، ولكن ليس defaultUrl ولا disableHistory ، على الأرجح لأن هذه لا معنى لها في سياق Firefox.

raztus نعم ، أعني مستخدمي المكتبة. تم ترك إصدارات Firefox خارج هذا النطاق (https://github.com/mozilla/pdf.js/pull/10854#discussion_r287325125) لأنه ليس من السهل معرفة ما يحدث على سبيل المثال ، استجابة المتصفح واستخدام الذاكرة إذا قمت بزيادة هذه القيمة . إذا حصلنا على مزيد من التعليقات حول ذلك ، فأنا لست ضد التفكير في جعل التفضيل متاحًا لبنية Firefox (mozcentral) أيضًا.

timvandermeij شكرا لك و @ kleins05 على هذا التحسين. لقد قمت بتحديث منشوري فيما يتعلق بهذه الميزة.

هل أنا محق في افتراض أنه باستخدام هذا التحديث ، يمكن ضبط دقة الطباعة باستخدام الكود أدناه؟

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

نعم ، أعتقد أنك على صواب. الحدث webviewerloaded هو بالفعل الحدث المناسب للاستماع إليه لإعداد خيارات التطبيق ؛ ارى:
https://github.com/mozilla/pdf.js/blob/c91f437eaaff79b660805e020f4fa9d4a2a7fe65/web/viewer.js#L208 -L210
بعد هذه النقطة ، يجب أن يكون PDFViewerApplicationOptions متاحًا دائمًا. لم أجرب هذا المقتطف بالذات ، ولكن من الفحص يبدو جيدًا ويمكنك تجربته عن طريق التحقق من أحدث كود فرع master ، إضافة هذا المقتطف والتحقق مما إذا كانت جودة الطباعة تتحسن.

raztus نعم ، أعني مستخدمي المكتبة. تم ترك إصدارات Firefox خارج هذا النطاق (

timvandermeij أود المساعدة في تقديم بعض من تلك التعليقات. بعد كل شيء ، حول: التكوين هو بالفعل منطقة إبطال الضمان ؛) كيف يمكنني المساهمة؟ هل سأحتاج إلى إنشاء Firefox من البداية لتغيير printResolution ؟

يمكنك تجربة ذلك عن طريق فتح العارض الافتراضي (إما https://mozilla.github.io/pdf.js/web/viewer.html والذي يقوم دائمًا بتشغيل أحدث كود فرع master أو تسجيل خروج مخصص) ، بفتح وحدة تحكم الويب وإدخال PDFViewerApplicationOptions.set('printResolution', 300); . سيؤدي ذلك إلى تعيين دقة الطباعة على 300 نقطة في البوصة بدلاً من 150 نقطة في البوصة الافتراضية. إذا نقرت بعد ذلك على زر الطباعة ، فستلاحظ اختلافًا في جودة الطباعة ، ولكن أيضًا في الوقت الذي يستغرقه عرض الصفحات واستهلاك الذاكرة (لقد جربت هذا بنفسي للتأكد من نجاح هذه الخطوات). السؤال الرئيسي هو كيف ترتبط دقة الطباعة في DPI باستخدام / وقت العرض لأنواع مختلفة من ملفات PDF ، مثل الحجم الصغير / المتوسط ​​/ الكبير ولكن أيضًا المستندات النصية فقط أو المستندات الثقيلة. إذا عرفنا المزيد حول كيفية تصرفه في سيناريوهات مختلفة من الحياة الواقعية ، فقد نتمكن من تقديم الإعداد الخاص ببنيات Firefox أيضًا و / أو تحديث القيمة الافتراضية.

لقد جربت الطريقة المذكورة أعلاه ، لكني أصبحت غير محدد.
هذا مع إصدار Chrome Canary 77.0.3818.0 (الإصدار الرسمي) كناري (64 بت)

نعم ، سيعطي تشغيل ذلك undefined لأن تعيين خيار ليس له قيمة مرتجعة ، ولكن إذا قمت بالطباعة مرة أخرى ، فستزيد جودة مخرجات الطباعة.

شكرا.
لماذا لا يتوفر هذا كخيار قابل للتعيين بواسطة المستخدم ولكن كخيار قابل للتعيين برمجيًا فقط؟

هذا موضح في التعليقات أعلاه ، ولا سيما https://github.com/mozilla/pdf.js/issues/2750#issuecomment -496697032. نريد أولاً أن نجربها قبل أن نجعلها أكثر سهولة. لاحظ أنه منذ يوم واحد فقط تم دمج PR # 10879 مع يجب أن يساعد قليلاً في مشكلة استخدام الذاكرة ، والآن بعد أن أصبح هذا على الأقل قابلاً للتعيين برمجيًا ، يمكننا تجربة ذلك بسهولة وتضمين التحسينات.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات