Commit 1297bb3d by Tatang S

tools compress pdf

1 parent 5c9e9ff2
......@@ -7,6 +7,9 @@ from datetime import datetime
# from z3c.rml import rml2pdf
import subprocess
import logging
from pypdf import PdfReader, PdfWriter
from ..tools import get_settings, get_params, get_random_string
log = logging.getLogger(__name__)
......@@ -285,5 +288,57 @@ def ods_export(request, filename, file_type):
return file_response(request, f, out_filename, file_type)
# use
# pdf_compress("/tmp/original.pdf", "/tmp/compressed.tmp")
# return None
def pdf_compress(original_filename, compressed_filename=None):
if compressed_filename is None:
ori_dir = os.path.dirname(original_filename)
ori_filename = os.path.basename(original_filename)
filenames = ori_filename.split('.')
ext = filenames[-1]
filename = "".join(filenames[:-1])
compressed_filename = os.path.join(ori_dir, f"{filename}_compressed.{ext}")
reader = PdfReader(original_filename)
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
if reader.metadata is not None:
writer.add_metadata(reader.metadata)
with open(compressed_filename, "wb") as fp:
writer.write(fp)
return compressed_filename
# use:
# tmp_reports(module_dirname="pbb/pendataan")
# tmp_reports(settings=get_settings(), module_dirname="pbb/pendataan")
# tmp_reports(settings=get_settings(), tmp_path="/home/user/tmp", module_dirname="pbb/pendataan")
# return "string of path"
def tmp_reports(settings = None, tmp_path = None, module_dirname = None):
default_tmp = '/tmp'
if settings is None:
settings = get_settings()
if not settings:
return default_tmp
if tmp_path is None:
tmp_path = 'tmp_report' in settings and settings['tmp_report'] or default_tmp
if module_dirname:
tmp_path = os.path.join(tmp_path, module_dirname)
if not os.path.exists(tmp_path):
os.makedirs(tmp_path)
return tmp_path
class Item(object):
pass
......@@ -30,7 +30,8 @@ requires = [
# "pikepdf",
"qrcode",
"papyrus",
"fdf"
"fdf",
"pypdf"
]
dev_requires = [
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!