This visual utilizes PDF JS to display PDF documents from base64 encoded strings.
The visual reads pdfs from the Power BI data model which requires the documents to be converted into base64 encoded strings before imported into the data model.
Converting pdfs to base64 strings can be accomplished in a number of ways.
For example in Python:
with open(<[path to pdf]>, "rb") as pdf_file:
base64String = base64.b64encode(pdf_file.read())
string pdf_file = <[path to pdf]>;
Byte bytes = File.ReadAllBytes(pdf_file);
String base64String = Convert.ToBase64String(bytes);
The visual is restricted to display one pdf at a time and will display a warning otherwise.
With one document selected the Pdf Viewer displays pdf documents with controls that enables the user to switch pages and zoom in and out. On the format pane there are also possibilities to show/hide header controls and overflow scrolling.
The Pdf Viewer is available in both a free version and in a licensed version.
In the licensed version there are these additional options:
- Export documents to file.
- Use measures, for both the base 64 data and for the exported file name.
It is most suitable to use with small document since columns in tabular models can contain maximum ca 30.000 characters.
The workaround for files that require more characters is to split the strings into multiple columns on import and concatenate them back to their original form in a computed column.
Using measures however gives more flexibility since strings can be concatenated using for instance CONCATENATEX.
Sample pbix file can be found here: Pdf-Viewer/samplePdfViewer at main · DanielSallander/Pdf-Viewer (github.com)
Sample pbix contains two examples:
- Example 1: Showing two pdf documents with multiple pages.
- Example 2: Showing table with invoices which displays pdf on hover and possibility to drillthrough for full pdf document. This example has the scroll bar option and header option disabled for the hovered pdf.
- There are some compatibily issues with Internet Explorer 11 and earlier
- If other zoom than 100% is selected it will be reset to 100% when switching pages