| name = PDF.js
| logo = Pdf-js logo.svg
| screenshot = Firefox 19.0b4.PDF Viewer.ru.tolstoyjs Screenshot in Firefox nazb.clearlooksclassic100.png
| caption = The PDF Viewer.js in Firefox 19.0b4100, with a table of contents displayed on the sidebar
| collapsible =
| author = [[Andreas Gal]]
| developer = [[Mozilla]]
| released = {{Start date|2011|07|02|df=yes}}<ref name="PDF.js repo">{{cite web |title = Releases · mozilla/pdf.js |url = https://github.com/mozilla/pdf.js/releases |access-date = 12 March 2021 |website = [[GitHub]]}}</ref>
| latest release version = 2.10.377{{wikidata|property|edit|reference|P348}}
| latest release date = {{Startstart date and age|df=yes{{wikidata|2021qualifier|07mdy|25P348|P577}}}}<ref name="PDF.js repo" />
| latest preview version = 2.11.338
| latest preview date = {{Start date and age|df=yes|2021|01|24}}<ref name="PDF.js repo" />
| programming language = [[JavaScript]], [[CSS]], [[HTML]]
| size = 3.94 MB<ref name="PDF.js repo" />
| platform = [[JavaScript engine]], [[web browser]]
| genre = [[PDF viewer]]
| license = [[Apache License]] 2.0<ref>{{cite web |url = https://github.com/mozilla/pdf.js/blob/master/LICENSE |title = pdf.js/LICENSE at master · mozilla/pdf.js |website = [[GitHub]]|date = 17 February 2022 }}</ref>
| website = {{URL|https://mozilla.github.io/pdf.js/}}
}}
'''PDF.js''' or '''pdf.js''' is a [[JavaScript library]] that renders [[Portable Document Format]] (PDF) files using the [[web standard]]s-compliant [[HTML5 Canvas]]. The project is led by the [[Mozilla FoundationCorporation]] after [[Andreas Gal]] launched it (initially as an experiment) in 2011.
== History and Applicationapplication ==
PDF.js canwas work as a part of a website or of a browser. Originallyoriginally created as aan [[FirefoxBrowser extension|extension]], for [[Firefox]]<ref name=":0">{{cite web|title = PDF Viewer(discontinued) |url = https://addons.mozilla.org/en-US/firefox/addon/pdfjs/|website = addons.mozilla.org |access-date = 2015-12-02 |url-status = dead |archive-url = https://web.archive.org/web/20151205121858/https://addons.mozilla.org/en-US/firefox/addon/pdfjs/|archive-date = 5 December 2015}}</ref> itand is [[List_of_Firefox_extensions#Included_in_Firefox|included in Firefox]] since 2012 (version 15),<ref>{{cite web |title=PDF.JS and Download Manager Panel Pushed to Firefox 15 |first=Lucian |last=Parfeni |url=https://news.softpedia.com/news/PDF-JS-and-Download-Manager-Panel-Pushed-to-Firefox-15-267154.shtml |website=[[Softpedia]] |publisher=SoftNews |date=2012-04-30}}</ref><ref>{{cite web |title = Вышла новая версия браузера Firefox 15 | first = Anton | last = Blagoveschenskiy | url = https://www.rg.ru/2012/08/29/firefox-site-anons.html | newspaper = [[Rossiyskaya Gazeta]] | date = 2012-08-29 | access-date = 2012-09-09 | language = ru |trans-title = New version 15 of the Firefox browser released }}</ref> and is enabled by default since 2013 (version 19).<ref>{{cite web|url=https://bugzilla.mozilla.org/show_bug.cgi?id=773397|title=Bug 773397 – Disable pdf.js prior to FF15 beta 5|website=bugzilla.mozilla.org}}</ref><ref name="Firefox Notes - Desktop">{{cite web|title=Firefox 19.0 Release Notes|url=https://www.mozilla.org/en-US/firefox/19.0/releasenotes/|access-date=30 April 2013|website=mozilla.org}}</ref> It iswas alsoadded included into [[ownCloud]],<ref>{{Citation|title=owncloud/files_pdfviewer|date=2020-02-08|url=https://github.com/owncloud/files_pdfviewer|publisher=ownCloud|access-date=2020-03-28}}</ref> [[Nextcloud]],<ref>{{Citation|title=nextcloud/files_pdfviewer|date=2020-03-18|url=https://github.com/nextcloud/files_pdfviewer|publisher=Nextcloud|access-date=2020-03-28}}</ref><ref>{{Cite web|url=https://apps.nextcloud.com/apps/files_pdfviewer|title=PDF viewer - Apps - App Store - Nextcloud|website=apps.nextcloud.com|access-date=2020-03-28}}</ref> and as a browser extensionFirefox for [[Google ChromeAndroid]], [[Chromiumin 2023 (webversion browser111)|Chromium]],<ref>{{cite web|url=https://chrome.google.com/webstore/detail/pdf-viewer/oemmndcbldboiebfnladdacbdfmadadm|title=PDF Viewer|website=Chrome Web Store}}</ref> [[Firefox for Android]],<ref>{{citeCite web|title=Android PDF.js|url=https://addonswww.mozilla.org/androiden-US/addonfirefox/android-pdf-js|website=addons/111.mozilla.org}}<0/releasenotes/ref> [[Pale Moon (web browser)|Pale Moon]]<ref>{{cite web|title=Add-onsFirefox -for MoonAndroid PDF Viewer|url=https://addons111.palemoon.org/addon/moon-pdf-viewer|url-status=dead|archive-url=https://web.archive.org/web/20200103222159/https://addons.palemoon.org/addon/moon-pdf-viewer/|archive-date=January 30, 2020|access-date=MaySee 4,All 2021|website=PaleNew MoonFeatures, -Updates Add-ons}}</ref><refand name=":1">{{CiteFixes web|titlewebsite=IsaacSchemm/pdfwww.js-seamonkey: SeaMonkey fork of pdf.js|url=https://github.com/IsaacSchemm/pdf.js-seamonkey|url-status=live|archive-url=https://web.archivemozilla.org/web/20201206160734/https://github.com/IsaacSchemm/pdf.js-seamonkey|archive-date=December 6, 2020|access-date=May19 4, 2021|website=[[GitHub]]}}</ref> and [[SeaMonkey]].<ref name=":1" /><ref>{{cite web|title=PDF Viewer for SeaMonkey|url=https://addons.thunderbird.net/seamonkey/addon/pdf-js-for-seamonkey|website=Add-ons forApril SeaMonkey2024}}</ref>
The project was created to provide a way for viewing PDF documents natively in the web browser, which prevents potential security risks when opening PDF documents outside a browser, as the code for displaying the document is [[sandboxed]] in a browser.<ref name=":2">{{Cite web |last=Shankland |first=Stephen |date=2011-06-24 |title=Mozilla eyes hassle-free PDFs on the Web |url=https://www.cnet.com/culture/mozilla-eyes-hassle-free-pdfs-on-the-web/ |access-date=2022-05-24 |website=CNET |language=en}}</ref> Its implementation uses the [[Canvas element]] from [[HTML5]], which allows for fast rendering speeds.<ref name=":2" />
Developers will also embed PDF.js in their software to enable PDF rendering and viewing in a web or native application or rendering on a server. Examples of PDF.js integrations include [[Dropbox (service)]] for PDF document previews,<ref>{{Cite web|last=Lauraharrisneal|title=Annotations on Document Previews|url=https://dropbox.tech/application/annotations-on-document-previews|access-date=2021-08-05|website=dropbox.tech|language=en}}</ref> [[Slack (software)]],<ref>{{Cite news|date=2016-11-16|title=What matters to you, matters to us. - Slack Engineering|language=en-US|work=Slack Engineering|url=https://slack.engineering/what-matters-to-you-matters-to-us-10ff49650a5d|access-date=2021-08-05}}</ref> and Linkedin for viewing accessible course materials online.<ref>{{Cite web|title=Under the hood: Learning with documents|url=https://engineering.linkedin.com/blog/2019/04/under-the-hood--learning-with-documents|access-date=2021-08-05|website=engineering.linkedin.com|language=en}}</ref> Some software development products are also making it easier to extend PDF.js.<ref>{{Cite web|title=Show HN: Pdf.js Express – PDF annotation, e-signatures, and form filling | Hacker News|url=https://news.ycombinator.com/item?id=22763656|access-date=2021-08-05|website=news.ycombinator.com}}</ref><ref>{{Cite web|title=Introducing PDF.js Express|url=https://pdfjs.express/_markdown_template/MarkdownTemplate|access-date=2021-08-05|website=pdfjs.express|language=en}}</ref> ▼
PDF.js is also used in [[Mozilla Thunderbird|Thunderbird]],<ref>{{Cite web|title=810815 - Integrate pdf.js to Thunderbird|url=https://bugzilla.mozilla.org/show_bug.cgi?id=810815|access-date=2022-01-28|website=bugzilla.mozilla.org|language=en}}</ref> [[ownCloud]],<ref>{{Citation|title=owncloud/files_pdfviewer|date=2020-02-08|url=https://github.com/owncloud/files_pdfviewer|publisher=ownCloud|access-date=2020-03-28}}</ref> [[Nextcloud]],<ref>{{Citation|title=nextcloud/files_pdfviewer|date=2020-03-18|url=https://github.com/nextcloud/files_pdfviewer|publisher=Nextcloud|access-date=2020-03-28}}</ref><ref>{{Cite web|url=https://apps.nextcloud.com/apps/files_pdfviewer|title=PDF viewer - Apps - App Store - Nextcloud|website=apps.nextcloud.com|access-date=2020-03-28}}</ref> and is available as a browser extension for [[Google Chrome]]/[[Chromium (web browser)|Chromium]],<ref>{{cite web|url=https://chrome.google.com/webstore/detail/pdf-viewer/oemmndcbldboiebfnladdacbdfmadadm|title=PDF Viewer|website=Chrome Web Store}}</ref> [[Pale Moon (web browser)|Pale Moon]]<ref>{{cite web|title=Add-ons - Moon PDF Viewer|url=https://addons.palemoon.org/addon/moon-pdf-viewer|archive-url=https://web.archive.org/web/20200103222159/https://addons.palemoon.org/addon/moon-pdf-viewer/|archive-date=January 3, 2020|access-date=May 4, 2021|website=Pale Moon - Add-ons}}</ref><ref name=":1">{{Cite web|title=IsaacSchemm/pdf.js-seamonkey: SeaMonkey fork of pdf.js|url=https://github.com/IsaacSchemm/pdf.js-seamonkey|url-status=live|archive-url=https://web.archive.org/web/20201206160734/https://github.com/IsaacSchemm/pdf.js-seamonkey|archive-date=December 6, 2020|access-date=May 4, 2021|website=[[GitHub]]}}</ref> and [[SeaMonkey]].<ref name=":1" /><ref>{{cite web|title=PDF Viewer for SeaMonkey|url=https://addons.thunderbird.net/seamonkey/addon/pdf-js-for-seamonkey|website=Add-ons for SeaMonkey|date=25 April 2020|access-date=13 January 2020|archive-date=13 January 2020|archive-url=https://web.archive.org/web/20200113054940/https://addons.thunderbird.net/seamonkey/addon/pdf-js-for-seamonkey|url-status=dead}}</ref>
It can be integrated or embedded in a web or native application to enable PDF rendering and viewing, and allows advanced usages such as [[Server-side rendering]].
▲Developers will also embed PDF.js in their software to enable PDF rendering and viewing in aMany web orapplications, native application or rendering on a server. Examples of PDF.js integrations includeincluding [[Dropbox (service)]] for PDF document previews,<ref>{{Cite web|last=Lauraharrisneal|title=Annotations on Document Previews|url=https://dropbox.tech/application/annotations-on-document-previews|access-date=2021-08-05|website=dropbox.tech|language=en}}</ref> [[Slack (software) |Slack]],<ref>{{Cite news|date=2016-11-16|title=What matters to you, matters to us. - Slack Engineering|language=en-US|work=Slack Engineering|url=https://slack.engineering/what-matters-to-you-matters-to-us-10ff49650a5d|access-date=2021-08-05}}</ref> and Linkedin[[LinkedIn for viewing accessible course materials online.Learning]]<ref>{{Cite web|title=Under the hood: Learning with documents|url=https://engineering.linkedin.com/blog/2019/04/under-the-hood--learning-with-documents|access-date=2021-08-05|website=engineering.linkedin.com|language=en}}</ref> Some software development products are also making it easier to extendintegrate PDF.js .<ref>{{Cite web|title=Showto HN:enable Pdf.js Express –previewing PDF annotation, e-signatures, and form filling | Hacker News|url=https://newsdocuments. ycombinator.com/item?id=22763656|access-date=2021-08-05|website=news.ycombinator.com}}</ref><ref>{{Cite web|title=Introducing PDF.js Express|url=https://pdfjs.express/_markdown_template/MarkdownTemplate|access-date=2021-08-05|website=pdfjs.express|language=en}}</ref>
==Behavior==
According to onea benchmark by [[Mozilla]], PDF.js is performant for viewing most common PDF files, while it may have some issues with large or 'graphics-heavy' documents.<ref>{{Cite web|url=https://hacks.mozilla.org/2014/05/how-fast-is-pdf-js/|title=How fast is PDF.js? – Mozilla Hacks - the Web developer blog}}</ref>
</ref>
AnotherPDF.js analysissupports foundmost thatof betweenthe 1-3%PDF ofspecifications PDFs(including inform certainsupport documentor subsets[[XFA]]<ref>{{Cite wouldweb|title=1706133 crash- or(pdf-xfa) freeze[meta] theXFA PDFsupport|url=https://bugzilla.jsmozilla.org/show_bug.cgi?id=1706133|access-date=2022-01-28|website=bugzilla.mozilla.org|language=en}}</ref>), viewerbut some features have not been implemented yet, eitherwhich duemay toimpact arendering corruptedbehavior filedepending oron athe complexfeatures the document fileuses.<ref>{{Cite web|title=Benchmark:Guide Howto Reliable isEvaluating PDF.js? Rendering|url=https://pdftron.com/blog/pdf-js/guide-to-pdf-js-reliability-benchmarkrendering/|access-date=2021-08-05|website=PDFTron}}</ref>
Several [[PDF/X]] or optional PDF features that are not supported in PDF.js include:
PDF.js supports most of the PDF specifications, but some features have not been implemented yet, which may impact rendering behavior depending on the features the document uses.<ref>{{Cite web|title=Guide to Evaluating PDF.js Rendering|url=https://pdftron.com/blog/pdf-js/guide-to-pdf-js-rendering/|access-date=2021-08-05|website=PDFTron}}</ref>
* [[ICC color profiles|ICC Color Profiles]]<ref>{{Cite web |title=ICC profiles support for images · Issue #2856 · mozilla/pdf.js |url=https://github.com/mozilla/pdf.js/issues/2856 |access-date=2022-05-24 |website=GitHub |language=en}}</ref>
PDF features not yet added to PDF.js or incomplete:
*Optional Content Groups (OCGs)
*Overprint simulation<ref>{{Cite web |title=Overprint Support · Issue #7360 · mozilla/pdf.js |url=https://github.com/mozilla/pdf.js/issues/7360 |access-date=2022-05-24 |website=GitHub |language=en}}</ref>
*ICC Color Profiles
*Transparency groups (knockout/isolation)<ref>{{Cite web |title=Issue about knockout groups. · Issue #3136 · mozilla/pdf.js |url=https://github.com/mozilla/pdf.js/issues/3136 |access-date=2022-05-24 |website=GitHub |language=en}}</ref>
*Overprint simulation
*Transparency groups (knockout/isolation)
*Some patterns & shadings
*High-fidelity printing
| url = https://andreasgal.com/2011/06/15/pdf-js/
| title = pdf.js: Rendering PDF with HTML5 and JavaScript
| authors author= Chris Jones and |author2=[[Andreas Gal]] (and the pdf.js team)|display-authors=etal
| work = [[Andreas Gal]]'s blog
| date = 2011-06-15}}
* {{cite web
| url = https://webscripts.softpedia.com/blog/Script-of-the-Day-pdf-js-266909.shtml
| title = Script of the Day: pdf.js
| author = Catalin Cimpanu
| work = Softpedia
| date = 2012-05-03}}
|access-date = 3 January 2020
|archive-date = 13 January 2015
|archive-url = https://web.archive.org/web/20150113184320/https://webscripts.softpedia.com/blog/Script-of-the-Day-pdf-js-266909.shtml
}}
{{Mozilla organisations}}
[[Category:Cross-platform free software]]
[[Category:Firefox]]
[[Category:Discontinued Firefox extensions]] ▼
[[Category:Free PDF readers]]
[[Category:Free web software]]
[[Category:JavaScript libraries]]
▲[[Category: Discontinued Firefox extensions merged to Firefox]]
{{free-software-stub}}
|