refactor pdf to png method on subprocess, add media url for develop mode

feature/docker
Dmitriy Shesterkin 9 years ago
parent 01df2c8f42
commit c6153f6818
  1. 1
      requirements/base.txt
  2. 1
      src/commons/pdf_tools.py
  3. 16
      src/docs/views/base_views.py
  4. 12
      src/dokumentor/urls.py

@ -34,7 +34,6 @@ djangocms-text-ckeditor==3.1.0
djangocms-video==0.0.1
easy-thumbnails==2.3
flup==1.0.3.dev20161029
ghostscript==0.4.1
gnureadline==6.3.3
html5lib==0.9999999
httplib2==0.10.3

@ -27,7 +27,6 @@ def render_pdf_to_string(request, template_name, dictionary=None):
pdf = pisa.pisaDocument(BytesIO(html.encode('utf-8')), result, encoding='utf-8')
pdf_content = result.getvalue()
result.close()
print(type(pdf_content))
if not pdf.err:
return pdf_content
return None

@ -6,8 +6,7 @@ import tempfile
from email.header import Header
from time import time
import simplejson as json
import ghostscript
import subprocess as s
from django.contrib import messages
from django.db import DatabaseError
@ -404,27 +403,31 @@ class BaseViews(object):
os.makedirs(tmp_media_dir)
tmp_dir = tempfile.mkdtemp(dir=tmp_media_dir)
os.chmod(tmp_dir, 755)
# os.chmod(tmp_dir, 755) # TODO: check on ubuntu
tmp_dirname = os.path.split(tmp_dir)[1]
f = open(filename, 'wb')
f.write(pdf)
f.close()
args = ["",
args = ["gs",
"-q",
"-dNOPAUSE", "-dBATCH", "-dSAFER",
"-sDEVICE=png16m",
"-r150",
"-sOutputFile=%s" % os.path.join(tmp_dir, "page-%03d.png"),
"-f", filename
]
GS = ghostscript.Ghostscript(*args)
p = s.Popen(args=args, stdout=s.PIPE, stderr=s.PIPE)
# # ghostscript.Ghostscript(*args) # TODO: check on ubuntu
p.wait()
os.remove(filename)
filename = '%s.pdf' % self.get_filename(*args, **kwargs)
imgs = glob.glob(os.path.join(tmp_dir, '*.png'))
imgs = [os.path.split(i)[1] for i in imgs]
imgs = ['%stmp/%s/%s' % (MEDIA_URL, tmp_dirname, i) for i in imgs]
email_form = self.EMAIL_FORM_CLASS()
dictionary = {
'obj': obj,
'images': imgs,
@ -444,7 +447,6 @@ class BaseViews(object):
# else:
# return HttpResponseServerError('Server error. Try later.')
def as_pdf(self, *args, **kwargs):
"""Вывести документ в формате PDF в HttpResponse."""
try:

@ -4,8 +4,9 @@ from django.conf import settings
from django.conf.urls import patterns, include, url
import autocomplete_light
from django.conf.urls.static import static
from django.contrib import admin
admin.autodiscover()
autocomplete_light.autodiscover()
@ -30,14 +31,11 @@ urlpatterns = patterns('',
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^m/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
'show_indexes': True,
}),
urlpatterns.extend(
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) +
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
)
if settings.DEBUG:
import debug_toolbar
urlpatterns = [
url(r'^__debug__/', include(debug_toolbar.urls)),

Loading…
Cancel
Save