def concatenate_files(path_list, pdfa=False, password=None): pdf_file = tempfile.NamedTemporaryFile(prefix="datemp", mode="wb", suffix=".pdf", delete=False) subprocess_arguments = [PDFTK_PATH] new_path_list = list() for path in path_list: mimetype, encoding = mimetypes.guess_type(path) if mimetype.startswith('image'): new_pdf_file = tempfile.NamedTemporaryFile(prefix="datemp", mode="wb", suffix=".pdf", delete=False) args = ["convert", path, new_pdf_file.name] result = call(args) if result != 0: logmessage("failed to convert image to PDF: " + " ".join(args)) continue new_path_list.append(new_pdf_file.name) elif mimetype in ( 'application/rtf', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/msword', 'application/vnd.oasis.opendocument.text'): new_pdf_file = tempfile.NamedTemporaryFile(prefix="datemp", mode="wb", suffix=".pdf", delete=False) if mimetype == 'application/rtf': ext = 'rtf' elif mimetype == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ext = 'docx' elif mimetype == 'application/msword': ext = 'doc' elif mimetype == 'application/vnd.oasis.opendocument.text': ext = 'odt' word_to_pdf(path, ext, new_pdf_file.name, pdfa=False) new_path_list.append(new_pdf_file.name) elif mimetype == 'application/pdf': new_path_list.append(path) if len(new_path_list) == 0: raise DAError("concatenate_files: no valid files to concatenate") subprocess_arguments.extend(new_path_list) subprocess_arguments.extend(['cat', 'output', pdf_file.name]) #logmessage("Arguments are " + str(subprocess_arguments)) result = call(subprocess_arguments) if result != 0: logmessage("Failed to concatenate PDF files") raise DAError( "Call to pdftk failed for concatenation where arguments were " + " ".join(subprocess_arguments)) if pdfa: pdf_to_pdfa(pdf_file.name) replicate_js_and_calculations(new_path_list[0], pdf_file.name, password) return pdf_file.name
def concatenate_files(path_list, pdfa=False, password=None): pdf_file = tempfile.NamedTemporaryFile(prefix="datemp", mode="wb", suffix=".pdf", delete=False) subprocess_arguments = [PDFTK_PATH] new_path_list = list() for path in path_list: mimetype, encoding = mimetypes.guess_type(path) if mimetype.startswith('image'): new_pdf_file = tempfile.NamedTemporaryFile(prefix="datemp", mode="wb", suffix=".pdf", delete=False) args = ["convert", path, new_pdf_file.name] result = call(args) if result != 0: logmessage("failed to convert image to PDF: " + " ".join(args)) continue new_path_list.append(new_pdf_file.name) elif mimetype in ('application/rtf', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/msword', 'application/vnd.oasis.opendocument.text'): new_pdf_file = tempfile.NamedTemporaryFile(prefix="datemp", mode="wb", suffix=".pdf", delete=False) if mimetype == 'application/rtf': ext = 'rtf' elif mimetype == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ext = 'docx' elif mimetype == 'application/msword': ext = 'doc' elif mimetype == 'application/vnd.oasis.opendocument.text': ext = 'odt' word_to_pdf(path, ext, new_pdf_file.name, pdfa=False) new_path_list.append(new_pdf_file.name) elif mimetype == 'application/pdf': new_path_list.append(path) if len(new_path_list) == 0: raise DAError("concatenate_files: no valid files to concatenate") subprocess_arguments.extend(new_path_list) subprocess_arguments.extend(['cat', 'output', pdf_file.name]) #logmessage("Arguments are " + str(subprocess_arguments)) result = call(subprocess_arguments) if result != 0: logmessage("Failed to concatenate PDF files") raise DAError("Call to pdftk failed for concatenation where arguments were " + " ".join(subprocess_arguments)) if pdfa: pdf_to_pdfa(pdf_file.name) replicate_js_and_calculations(new_path_list[0], pdf_file.name, password) return pdf_file.name