Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to style Google Chrome default PDF viewer

Is there a way to style google chrome default pdf view? I'm trying to change the gray background color to white also make the scroller little bigger for mobile devices if possible.

I tried to target it on css with no luck

// pdf viewer custom style iframe {     html {         body {             background-color: #ffffff !important;         }         #zoom-toolbar {             display: none !important;         }         #zoom-buttons {             display: none !important;         }     } } 

It looks like it's creating shadow document on the html but I couldn't find any way to target it

like image 346
Tan Kucukhas Avatar asked Nov 16 '16 18:11

Tan Kucukhas


People also ask

How do I change my Chrome PDF viewer?

Type or paste chrome://settings/content into address bar. A pop-up labeled "Content Settings..." will open. Scroll down to the bottom to "PDF Documents" Select or deselect the check box labelled "Open PDF files in the default PDF viewer application"

How do I change the icon for a PDF icon in Chrome?

Click on the three dots menu button at upper right; then open Chrome's Settings. In the Search Settings box at top, type "PDF".

Why does my default PDF viewer keep changing to Chrome?

Sometimes even when setting Adobe Acrobat DC as the Default, downloaded PDFs will open in Chrome instead. This is because Chrome is set to use it's integrated PDF viewer when files are downloaded by default. You will need to turn this off to make it go away.


1 Answers

There is no way to directly style the Chrome default PDF viewer (PDFium). Because the plugin displays and controls content outside the scope of the current page's DOM, it can only be modified by the plugin. As indicated here it is impossible to make modifications to this sort of plugin controlled content unless the plugin also adds a content script that allows the page to pass messages to the plugin; the plugin must additionally be programmed to respond to messages and appropriately update the content. In other words the PDF viewer uses a separate DOM to the page which is not directly accessible. Instead you need to access an implemented API.

In this discussion Mike West (Google/Chromium dev) states, in answer to a question on DOM accessibility in Chrome's PDF viewer:

The functionality available in the PDF viewer is (intentionally) fairly limited ... The APIs you're having trouble finding simply don't exist.

Basic API functions are some of those specified by Adobe in their Parameters for Opening PDF Files and are accessed through the URL (eg http://example.org/doc.pdf#page=3&pagemode=thumbs. They are, as indicated above, quite limited, allowing the user to go directly to a page, set zoom factor, show thumbnails etc. Accessing an expanded API through content script messages can potentially be done if you know the available JavaScript messages. A complete list of available JS message names can be determined from the relevant PDFium source here from which it can be seen that advanced styling of the viewer, such as changing colours, isn't possible. (This question gives an example of how to implement the API). Certainly there is no access to PDFium's DOM.

This API is deliberately left undocumented; it may change with additions or removals at any time. Thus, while it's possible that in the future there will be an API to let you style some aspects of the viewer, it's very unlikely that any would go so far as to change the background colour or modify a CSS shadow. And, as stated above, without an API you can't modify content controlled by a plugin when you don't have access to its DOM.


You may, instead, wish to try PDF.js. It is an open source JavaScript library that renders PDF files using HTML5 Canvas. It is also Firefox's default PDF viewer and is quite capable.

Implementing it as a web app is beyond the scope of this question, but there are many helpful tutorials available. And as you, the developer, will have access to all constituent files, you will certainly be able to style the PDF.js viewer as much as you wish.

like image 112
jla Avatar answered Sep 22 '22 00:09

jla