Ответ 1
Проблема, с которой вы (и другие) сталкиваетесь с тем, что файлы PDF не могут отображаться непосредственно в браузере. Единственный возможный способ получить что-то подобное - использовать конвертер изображений для создания PNG или JPG из PDF файла и отображения этого. Это можно сделать с помощью imagemagick и пользовательской функции отображения.
Обновление 1
Простым решением является использование wand (http://docs.wand-py.org) привязки python-imagemagick. Я пробовал с Ubuntu 13.04:
В текстовой форме:
from wand.image import Image as WImage
img = WImage(filename='hat.pdf')
img
Для многостраничного pdf вы можете получить, например, вторая страница через:
img = WImage(filename='hat.pdf[1]')
Обновление 2
Поскольку последние браузеры поддерживают отображение pdf файлов с помощью встроенного pdf-просмотра, альтернативное решение на основе iframe может быть реализовано как
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.0\textwidth]{{{0}}}'.format(self.pdf)
Этот класс реализует представления html и латекс, поэтому в pdf также сохранится nbconversion для латекса. Его можно использовать как
PDF('hat.pdf',size=(300,250))
В Firefox 33 это приводит к