A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Ninh Doan
Apr 22, 2019
  8691
(8 votes)

Introducing: Episerver PDF Preview add-on

The Episerver PDF Preview is the latest add-on that allows editors to preview PDF documents in edit view. 

This add-on is based on PDF.js version 2.0.943. 

Intergration with your current system

In the PdfPreview package, there is a class named PdfFile which handles uploaded files with the .pdf extension. 

1. The system does not have a model for handling PDF files

If the system does not have a model for handling PDF files, the default PdfFile model provided by the package is used. Editors can now preview PDF files in edit view without any extra steps.

2. The system already has a model for handling PDF files

By default, the ContentMediaResolver class from Episerver CMS Core gets the first matching media implementation type registered for an extension. If there is an existing type registered for “pdf”, the PdfFile media implementation in the Episerver package is used, but in this case the existing type should be chosen.

To change this default behavior, a media resolver class named PdfContentMediaResolver is used to ignore the PdfFile type in the Episerver package and thus, the existing registered media type is the candidate.

PdfContentMediaResolver inherits ContentMediaResolver and overrides the Type GetFirstMatching(string extension) method to handle the business logic above. 

To turn on the PDF preview, the PDF media model must implement the IPdfFile interface. For example:

[ContentType(DisplayName = "PdfFile", GUID = "…", Description = "")]

[MediaDescriptor(ExtensionString = "pdf")]

public class PdfFile : MediaData, IPdfFile

{

}

Note: 

PdfContentMediaResolver will ignore the PdfFile type in the Episerver package when system has another type registered for “pdf”, no matter it is created before or after install package. If it is created after install package, AppPool restart is required to reflect the changes.

Demo:

  • Before: 

  • After:

 

Apr 22, 2019

Comments

Please login to comment.
Latest blogs
Our OPAL solution for Innovation Challenge: Persona based Content Optimization

  Introduction Marketing success depends on one core principle : connection. We have may seen many marketing campaigns fail because they fail make...

Ratish | Jan 15, 2026 |

A day in the life of an Optimizely OMVP: Introducing Optimizely Style Manager

Managing display templates in Optimizely CMS (SaaS) has traditionally required working directly with the REST API or managing JSON configuration...

Graham Carr | Jan 13, 2026

Content modelling in Optimizely: Why your initial delivery decisions matter more than you think

The architectural shortcuts you take in sprint zero don't just create technical debt, they define whether your platform scales gracefully or crumbl...

Tom Robinson | Jan 12, 2026 |

A day in the life of an Optimizely OMVP: Introducing Query Library and Request Logs: Two Powerful New Features for OptiGraphExtensions v5

I am excited to announce two new features for OptiGraphExtensions v5 that give Optimizely CMS administrators greater visibility and control over...

Graham Carr | Jan 12, 2026

Indexing Geta Categories in Optimizely Graph

Different ways to fully use categories in headless architecture.

Damian Smutek | Jan 9, 2026 |

Building an custom Optimizely Opal tool with OCP SDK

Recently I have been working on some custom Opal tools and when looking on hosting options it was a no brainer to utilise Optimizely's OCP platform...

JSpencer | Jan 8, 2026