diff --git a/admin.py b/admin.py index 1580719..45608dd 100644 --- a/admin.py +++ b/admin.py @@ -1,4 +1,7 @@ from django.contrib import admin +from django.conf.urls import patterns +from django.template.response import TemplateResponse + import models class DocumentAdmin(admin.ModelAdmin): @@ -12,6 +15,16 @@ class PageAdmin(admin.ModelAdmin): list_display = ['document', 'name', 'image', 'page_num'] order_by = ['document', 'page_num'] + def get_urls(self): + urls = super(PageAdmin, self).get_urls() + my_urls = patterns('', + (r'^(?P.*)/preview/$', self.admin_site.admin_view(self.preview)) + ) + return my_urls + urls + + def preview(self, request, pk): + return TemplateResponse(request, 'admin/pdfformfiller/page/preview.html', {}) + class FormFieldAdmin(admin.ModelAdmin): list_display = ['name', 'page', 'fieldtype', 'page_number', 'pos_y'] diff --git a/models.py b/models.py index b388609..844a47e 100644 --- a/models.py +++ b/models.py @@ -22,13 +22,17 @@ class Document(models.Model): def process_pages(self): poppler_con = PopplerController(self.pdf.path) + for page_num, image in enumerate(poppler_con.generate_page_images()): + page_width, page_height = poppler_con.doc.get_page(page_num).get_size() try: page = self.page_set.get(page_num=page_num) except Page.DoesNotExist: page = Page(document=self, page_num=page_num, - name=self.name + (' page %d' % page_num)) + name=self.name + (' page %d' % page_num), + width=page_width, + height=page_height) page.image.save( os.path.basename(self.pdf.path) + ('_page%03d.png' % page_num), File(image) @@ -49,6 +53,8 @@ class Page(models.Model): name = models.CharField(max_length=64, blank=True) image = models.ImageField(upload_to='pdfformfiller_page') page_num = models.SmallIntegerField() + width = models.FloatField() + height = models.FloatField() def __unicode__(self): return self.name