The problem you (and others) face is that PDFs cannot be displayed directly in the browser.
The only possible way to get something similar is to use an image-converter to create a PNG or JPG out of the PDF and display this one.
This could be done via imagemagick and a custom display function.
Update 1
A simple solution is to use wand (http://docs.wand-py.org) a python-imagemagick binding. I tried with Ubuntu 13.04:
In text form:
from wand.image import Image as WImage
img = WImage(filename='hat.pdf')
img
For a multi-page pdf, you can get e.g. the second page via:
img = WImage(filename='hat.pdf[1]')
Update 2
As recent browsers support to display pdfs with their embedded pdf viewer a possible alternative solution based on an iframe can be implemented as
class PDF(object):
def __init__(self, pdf, size=(200,200)):
self.pdf = pdf
self.size = size
def _repr_html_(self):
return '<iframe src={0} width={1[0]} height={1[1]}></iframe>'.format(self.pdf, self.size)
def _repr_latex_(self):
return r'includegraphics[width=1.0extwidth]{{{0}}}'.format(self.pdf)
This class implements html and latex representations, hence the pdf will also survive a nbconversion to latex. It can be used like
PDF('hat.pdf',size=(300,250))
With Firefox 33 this results in
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…