Pdf.js: Hasil cetak kabur/buram

Dibuat pada 20 Feb 2013  ·  38Komentar  ·  Sumber: mozilla/pdf.js

jika saya mencetak pdf dengan FF19 dan fungsi pdf baru, hasil cetaknya buram.

kalau saya print dengan acrobat fontnya jelas.

kiri = akrobat
kanan = ff pdf

punya ide?

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

3-upstream 4-printing

Komentar yang paling membantu

Sejak https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 sekarang ada fungsi renderPage di web/viewer.js dan resolusi cetak dikodekan di sana sebagai 150 DPI.

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

Untuk mengubah resolusi cetak menjadi 300 DPI, cukup ubah baris di bawah ini.

var PRINT_RESOLUTION = 300;

Menurut tag rilis, semua versi PDF.js dari 1.7.x hingga 1.10.x seharusnya memiliki kemampuan itu sekarang. Saya terkejut ini tidak didokumentasikan di mana pun.

Idealnya harus ada kemampuan untuk mengubah resolusi cetak dari parameter kueri alih-alih memodifikasi web/viewer.js .

Lihat Cara meningkatkan kualitas cetak file PDF dengan penampil PDF.js untuk detail selengkapnya.

Semua 38 komentar

Saya kira itu karena output pdf.js adalah kanvas (tepatnya satu kanvas per halaman), yang mungkin tidak cocok 100% dengan resolusi printer.

Ini terjadi pada saya juga.

DSCF8966

  • top = Firefox bawaan PDF.js
  • bawah = Adobe Acrobat

Kualitas cetak benar-benar tidak dapat diterima.
Selain itu, PDF.js bawaan menghasilkan batas hitam di sisi kanan dan bawah, seolah-olah dari memfotokopi lembar ukuran yang lebih kecil.

Ada solusi? saya di hotline dan saya memiliki 200 pengguna dengan masalah ini.

@BadFriend , @musiphil , sistem operasi apa yang Anda atau pengguna Anda gunakan?

Masalah yang sama di sini di FFox 19 pada WinXP ke printer PostScript. Garis horizontal halus tidak jelas, sedangkan garis vertikal halus. Header dan footer juga bagus.

Saya menjalankan Firefox 19.0 pada Windows 7, dan saya mencetak dokumen tersebut ke printer HP Color LaserJet CP4525 dengan PCL6.

FF19 + Win7 64bit + OKI561 melalui PCL6 pada Port WSD atau Adobe PDF (Adobe Acrobat 9.2.0)

IMG_20130222_074757

kiri: Plugin Chrome
tengah: Adobe Reader
kanan: Firefox pdf.js

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

Lihat juga #2771. Mengutip @brendandahl :

Kualitas rendah sedang dilacak di https://bugzilla.mozilla.org/show_bug.cgi?id=811002 .

Bug hulu telah diperbaiki. Apakah ini masih menjadi masalah dengan versi terbaru Firefox dan PDF.js?

Bug hulu telah diperbaiki. Apakah ini masih menjadi masalah dengan versi terbaru Firefox dan PDF.js?

Saya pikir itu hanya diperbaiki untuk Windows. Ada bug baru yang diisi untuk OSX (bug 932313) tetapi saya tidak yakin itu valid (lihat komentar saya di https://bugzilla.mozilla.org/show_bug.cgi?id=932313#c2).

Sampai masalah ini tidak diperbaiki di Linux, saya memilih untuk membiarkan bug ini tetap terbuka.

Apakah sudah diperbaiki?
Halaman demo ini dicetak ok dari 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

dari hasil cetak Chrome dan Chromium SANGAT buram, saya tidak dapat menemukan kata-kata untuk menggambarkannya
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16%2011.29.58.jpg
Saya mencoba mengatur dpi untuk printer dan PRINT_SCALE RATIO ke 1, 3, 4, 8 - tidak berpengaruh
Saya mencoba versi terbaru dari github (8614c17) - sama
(lingkungan: Chrome, Chromium, windows 7)

Apakah saya melewatkan sesuatu?
Bisakah Anda meninjau ini dan mungkin menyarankan solusi cepat?

@jonny64 terima kasih telah melaporkan ini! Sayangnya, saya kira tidak banyak yang bisa dilakukan untuk Chrome/Chromium di sini. Kualitas cetak yang lebih baik di Firefox dihasilkan dengan menggunakan API khusus untuk pencetakan yang tersedia di Firefox tetapi tidak di Chrome. Kembali pada hari-hari saya mengusulkan API sebagai standar tetapi tidak ada banyak minat dan oleh karena itu masih hanya tersedia di Firefox.

:) @jviereck , baiklah, saya harus hidup dengan itu
Saya mencoba penampil internal Chrome
Ini mencetak ok, tapi 'Simpan' merusak mode kios
(kita perlu mencetak dengan pratinjau dari Chrome dalam mode layar penuh kios)

Untungnya, saya memiliki beberapa latar belakang dengan C beberapa waktu lalu
https://pdfium.googlesource.com/pdfium.git
Apakah ini sumber yang benar untuk penampil internal Chrome?
Apakah lebih baik menyembunyikan 'Simpan' dari pengaturan Chrome atau ketika baris perintah --kiosk disetel?
Apakah Anda memiliki ide tingkat tinggi di mana dan bagaimana saya bisa menerapkannya?

Ini masih merupakan bug pada OS X dan Firefox Dev Edition terbaru, sejauh yang saya tahu, setidaknya dalam beberapa keadaan.

Cara memperbanyak tanpa printer:

  • Klik "Cetak" di penampil PDF.js.
  • Klik tombol "PDF".
  • Pilih "Simpan sebagai PostScript..." ( bukan "Simpan sebagai PDF...")
  • Buka file .ps disimpan di Preview.app.

Teks tidak dapat dipilih dan, saat diperbesar, teks cukup berpiksel. Teks terlihat bagus jika Anda memilih "Simpan sebagai PDF..."

Saya mencoba meningkatkan resolusi default di
web/app.js::beforePrint
<< var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(1);

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

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

var viewport = pdfPage.getViewport(2);

Pencetakan lebih lambat tetapi kualitasnya meningkat

Beberapa perbaikan setelah #7677

Apakah ada pembaruan untuk masalah ini dalam 4 bulan terakhir? Ini masih terlihat pada pdf.js versi terbaru. Saya baru-baru ini meluncurkan penerapan menggunakan pdf.js dan sekarang memiliki pencetakan dokumen dengan huruf kabur yang tidak menjadi masalah dengan pembaca PDF asli Chrome.

Anda dapat mereproduksi masalah ini dengan mencetak dari halaman demo Mozilla

Sepertinya beberapa orang yang menggunakan pdf.js dalam produksi harus melewati pdf.js sepenuhnya untuk mengatasi masalah ini ( contoh ).

Saat ini, pencetakan berkualitas lebih tinggi tidak mungkin dilakukan tanpa meningkatkan penggunaan memori secara signifikan, yang sebagian besar browser tidak akan melakukannya dengan baik. Bagian belakang kanvas tidak dapat menyediakan fungsionalitas seperti itu. Ada proyek terbuka (https://github.com/mozilla/pdf.js/projects) untuk meneliti menggunakan prototipe SVG back-end untuk pencetakan berkualitas tinggi.

Saya telah menemukan PDF.js memiliki kualitas cetak yang dapat diterima dan kualitas cetak kabur tergantung pada versi Firefox yang diinstal, jadi saya ingin melihat apa yang telah berubah di antara versi yang dapat saya cetak. Saya memiliki https://imgur.com/7Beh7MO , yang merupakan keluaran dari cetakan langsung dari kiri ke kanan Firefox 52, 47.0.2, dan 42, dengan dua yang pertama setidaknya merupakan pembaruan baru. Seperti yang ditunjukkan, sesuatu berubah dalam PDF.js antara rilis FF 47.0.2 dan FF 52 yang tampaknya telah menurunkan kualitasnya, jadi jika ada yang memiliki info tentang bookmark apa yang harus dilihat untuk memulai dengan versi Firefox tersebut, saya tidak akan ' t keberatan mengambil melihat untuk memulai.

Melihat versi repositori Firefox PDF.js, saya melihat bahwa 47.0.2 adalah versi 1.4.121, yang sesuai dengan commit 51f6aba (mungkin merupakan commit setelahnya, yaitu be1e12d) dan bahwa Firefox 52 dikirimkan dengan PDF.js 1.6. 315, yang kira-kira komit c23f124. Saat ini saya sedang mencari perbedaan komit ini, tetapi perbedaan di antara mereka mungkin 400 komit dan informasi apa pun tentang di mana letak pencetakan akan sangat membantu.

Seperti yang ditunjukkan, sesuatu berubah dalam PDF.js antara rilis FF 47.0.2 dan FF 52 yang tampaknya telah menurunkan kualitasnya,

Meskipun ada kemungkinan bahwa perubahan dalam PDF.js bertanggung jawab, saya tidak akan (setidaknya pada awalnya) sepenuhnya mengabaikan kemungkinan bahwa masalah tersebut dapat terkait dengan misalnya kode grafis/pencetakan di bagian lain Firefox.
Mungkin membantu, dan mungkin bahkan lebih cepat, menggunakan http://mozilla.github.io/mozregression/ untuk mencoba dan menemukan rentang regresi.

Apakah tombol cetak di dalam PDF.js bahkan menggunakan Firefox untuk mencetak? Ku
asumsi berdasarkan fakta bahwa plugin tersedia di browser lain
adalah bahwa tidak akan ada masalah yang terkait dengan cara browser yang mendasarinya
menangani pencetakan. Ini juga didukung oleh dialog pemrosesan cetak
daftar rendering PDF.js sebagai tugas untuk mengirim data ke printer. saya akan
lakukan beberapa pengujian tambahan dan coba jalankan PDF.js sebagai plugin dan uji
versi berbeda dari kemungkinan untuk melihat apakah itu mengubah apa pun.

Pada 14 Maret 2017 09:58, "Jonas Jenwald" [email protected] menulis:

Seperti yang ditunjukkan, sesuatu berubah di PDF.js antara rilis FF 47.0.2 dan FF 52
yang tampaknya telah merusak kualitas,

Meskipun ada kemungkinan bahwa perubahan dalam PDF.js bertanggung jawab, saya
tidak akan (setidaknya pada awalnya) sepenuhnya mengabaikan kemungkinan bahwa
masalah dapat terkait dengan misalnya grafik/kode pencetakan di bagian lain
Firefox.
Mungkin membantu, dan mungkin bahkan lebih cepat, untuk digunakan
http://mozilla.github.io/mozregression/ untuk mencoba dan menemukan regresi
jangkauan.


Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/mozilla/pdf.js/issues/2750#issuecomment-286428765 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AOZHcyFJnLjI8MhAXspe-SIikmMA7YWOks5rlpzwgaJpZM4AcblL
.

--
Silakan klik untuk membaca Pemberitahuan:
http://www.mediweightlossclinics.com/sig/ Komunikasi Rahasia
http://www.mediweightlossclinics.com/sig/ Tujuan Pendidikan Penafian
http://www.mediweightlossclinics.com/sig/ Pernyataan Pengungkapan Waralaba

Sebelumnya, kami menggunakan mozPrintCallback khusus Mozilla di mana pun kami dapat jika didukung, yaitu, dalam versi add-on dan non-add-on di browser Firefox, karena mungkin memungkinkan kami untuk mencetak dengan lebih sedikit memori konsumsi dan kualitas yang lebih tinggi. Namun, kami mencoba untuk mengurangi penggunaannya karena khusus untuk Firefox dan terkadang bermasalah, jadi sekarang kami hanya menggunakannya di add-on Firefox (https://github.com/mozilla/pdf.js/blob/master/ web/firefox_print_service.js).

Secara umum, kami sekarang merender kanvas dan mencetaknya menggunakan logika pencetakan yang ditentukan browser biasa, jadi saya pikir masalahnya mungkin dalam perubahan penskalaan kanvas/kode rendering font atau bug browser.

Lihat https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 untuk sebagian besar perubahan itu. Anda mungkin ingin memeriksa apakah ada perbedaan kualitas pencetakan dari Firefox dengan dan tanpa add-on.

Sejak https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 sekarang ada fungsi renderPage di web/viewer.js dan resolusi cetak dikodekan di sana sebagai 150 DPI.

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

Untuk mengubah resolusi cetak menjadi 300 DPI, cukup ubah baris di bawah ini.

var PRINT_RESOLUTION = 300;

Menurut tag rilis, semua versi PDF.js dari 1.7.x hingga 1.10.x seharusnya memiliki kemampuan itu sekarang. Saya terkejut ini tidak didokumentasikan di mana pun.

Idealnya harus ada kemampuan untuk mengubah resolusi cetak dari parameter kueri alih-alih memodifikasi web/viewer.js .

Lihat Cara meningkatkan kualitas cetak file PDF dengan penampil PDF.js untuk detail selengkapnya.

Jika perbaikan @mpryvkin sah, ini pasti harus diekspos sebagai opsi di about:config.

Bisakah ini diparameterisasi?

Saya mencoba meningkatkan resolusi default di
web/app.js::beforePrint
<< var pageSize = this.pdfViewer.getPageView(0).pdfPage.getViewport(1);

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

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

var viewport = pdfPage.getViewport(2);

Pencetakan lebih lambat tetapi kualitasnya meningkat

berhasil!

Penampil generik sekarang menampilkan opsi aplikasi printResolution berkat #10854 sehingga penampil yang dibuat sebelumnya tidak perlu dimodifikasi lagi untuk ini. Perhatikan bahwa meningkatkan resolusi cetak, sambil meningkatkan kualitas cetak, mungkin membuat pencetakan lebih lambat dan/atau browser kurang responsif, tetapi ini sekarang merupakan trade-off yang dapat dilakukan sendiri oleh pengguna penampil.

@timvandermeij Terima kasih atas pembaruannya! Untuk memperjelas, apakah Anda berbicara tentang "pengguna" seperti dalam "pengguna perpustakaan pdf.js", atau seperti dalam "pengguna Firefox"? Saya termasuk dalam kategori yang terakhir (dan saya percaya bug ini berkaitan dengan pengguna Firefox), dan saya mencoba mencari tahu apakah AppOptions tersebut terbuka di Firefox dengan cara apa pun.

Pembaruan: Saya percaya @timvandermeij mengacu pada "pengguna perpustakaan pdf.js". Saya juga percaya AppOptions diekspos di Firefox melalui about:config , tetapi tidak secara otomatis (yaitu, seseorang mungkin harus memodifikasi kode firefox untuk mengaktifkannya), karena sebagian besar tetapi tidak semua AppOptions ada di sana. pdfjs.cursorToolOnLoad ada di about:config , tetapi bukan defaultUrl atau disableHistory , mungkin karena ini tidak masuk akal dalam konteks Firefox.

@raztus Ya, maksud saya pengguna perpustakaan. Firefox build tidak termasuk dalam cakupan tersebut (https://github.com/mozilla/pdf.js/pull/10854#discussion_r287325125) karena tidak mudah untuk mengetahui apa yang terjadi dengan misalnya, respons browser dan penggunaan memori jika Anda meningkatkan nilai ini . Jika kami mendapatkan lebih banyak umpan balik tentang itu, saya tidak menentang mempertimbangkan untuk membuat preferensi tersedia untuk Firefox (mozcentral) build juga.

@timvandermeij Terima kasih dan @kleins05 untuk peningkatan ini. Saya telah memperbarui posting saya tentang fitur ini.

Apakah saya benar dengan asumsi bahwa dengan pembaruan ini, resolusi cetak dapat diatur menggunakan kode di bawah ini?

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

Ya, saya pikir Anda benar. Acara webviewerloaded memang acara yang tepat untuk didengarkan untuk mengatur opsi aplikasi; Lihat:
https://github.com/mozilla/pdf.js/blob/c91f437eaaff79b660805e020f4fa9d4a2a7fe65/web/viewer.js#L208 -L210
Setelah itu PDFViewerApplicationOptions harus selalu tersedia. Saya belum mencoba cuplikan khusus ini, tetapi dari pemeriksaan terlihat bagus dan Anda dapat mencobanya dengan memeriksa kode cabang master , menambahkan cuplikan itu dan memeriksa apakah kualitas cetak meningkat.

@raztus Ya, maksud saya pengguna perpustakaan. Firefox build tidak termasuk dalam cakupan tersebut ( #10854 (komentar) ) karena tidak mudah untuk mengetahui apa yang terjadi dengan misalnya, respons browser dan penggunaan memori jika Anda meningkatkan nilai ini. Jika kami mendapatkan lebih banyak umpan balik tentang itu, saya tidak menentang mempertimbangkan untuk membuat preferensi tersedia untuk Firefox (mozcentral) build juga.

@timvandermeij Saya ingin membantu memberikan beberapa umpan balik itu. Lagi pula, about:config sudah menjadi area yang membatalkan garansi ;) Bagaimana saya bisa berkontribusi? Apakah saya perlu membuat Firefox dari awal untuk mengubah printResolution ?

Anda dapat bereksperimen dengan ini dengan membuka penampil default (baik https://mozilla.github.io/pdf.js/web/viewer.html yang selalu menjalankan kode cabang master atau checkout khusus) , membuka konsol web dan memasukkan PDFViewerApplicationOptions.set('printResolution', 300); . Itu akan mengatur resolusi cetak ke 300 DPI, bukan 150 DPI default. Jika Anda kemudian mengklik tombol cetak, Anda akan melihat perbedaan dalam kualitas cetak, tetapi juga dalam waktu yang diperlukan untuk merender halaman dan konsumsi memori (saya baru saja mencobanya sendiri untuk memastikan langkah-langkah ini berhasil). Pertanyaan utamanya adalah bagaimana resolusi cetak dalam DPI berhubungan dengan penggunaan memori/waktu rendering untuk berbagai jenis file PDF, seperti ukuran kecil/sedang/besar tetapi juga dokumen teks saja atau banyak gambar. Jika kami tahu lebih banyak tentang bagaimana perilakunya dalam berbagai skenario kehidupan nyata, kami mungkin dapat memperkenalkan pengaturan untuk Firefox build juga dan/atau memperbarui nilai default.

Saya mencoba metode di atas, tetapi saya tidak terdefinisi.
Ini dengan Chrome Canary Versi 77.0.3818.0 (Build Resmi) canary (64-bit)

Ya, menjalankan itu akan memberikan undefined karena menyetel opsi tidak memiliki nilai kembalian, tetapi jika Anda kemudian mencetak lagi, Anda akan meningkatkan kualitas hasil cetak.

Terima kasih.
Mengapa ini tidak tersedia sebagai opsi yang dapat diatur pengguna tetapi hanya sebagai opsi yang dapat diatur secara terprogram?

Ini dijelaskan dalam komentar di atas, khususnya https://github.com/mozilla/pdf.js/issues/2750#issuecomment -496697032. Kami ingin bereksperimen terlebih dahulu sebelum membuatnya lebih mudah diakses. Perhatikan bahwa hanya sehari yang lalu PR #10879 digabungkan dengan akan sedikit membantu masalah penggunaan memori, dan sekarang ini setidaknya dapat diatur secara terprogram, kita dapat lebih mudah bereksperimen dengannya dan menyertakan peningkatan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

hp011235 picture hp011235  ·  4Komentar

jigskpatel picture jigskpatel  ·  3Komentar

brandonros picture brandonros  ·  3Komentar

SehyunPark picture SehyunPark  ·  3Komentar

AlexP3 picture AlexP3  ·  3Komentar