def pdf_pages(file_info, width): output = '' if width is None: width = DEFAULT_PAGE_WIDTH if not os.path.isfile(file_info['path'] + '.pdf'): if file_info['extension'] in ('rtf', 'doc', 'odt') and not os.path.isfile(file_info['path'] + '.pdf'): server.fg_make_pdf_for_word_path(file_info['path'], file_info['extension']) if 'pages' not in file_info: try: reader = PyPDF2.PdfFileReader(open(file_info['path'] + '.pdf', 'rb')) file_info['pages'] = reader.getNumPages() except: file_info['pages'] = 1 max_pages = 1 + int(file_info['pages']) formatter = '%0' + text_type(len(text_type(max_pages))) + 'd' for page in range(1, max_pages): page_file = dict() test_path = file_info['path'] + 'page-in-progress' if os.path.isfile(test_path): while (os.path.isfile(test_path) and time.time() - os.stat(test_path)[stat.ST_MTIME]) < 30: if not os.path.isfile(test_path): break time.sleep(1) page_file['extension'] = 'png' page_file['path'] = file_info['path'] + 'page-' + formatter % page page_file['fullpath'] = page_file['path'] + '.png' if not os.path.isfile(page_file['fullpath']): server.fg_make_png_for_pdf_path(file_info['path'] + '.pdf', 'page') if os.path.isfile(page_file['fullpath']): output += text_type(image_for_docx(docassemble.base.functions.DALocalFile(page_file['fullpath']), docassemble.base.functions.this_thread.current_question, docassemble.base.functions.this_thread.misc.get('docx_template', None), width=width)) else: output += "[Error including page image]" output += ' ' return(output)
def pdf_pages(file_info, width): output = '' if width is None: width = DEFAULT_PAGE_WIDTH if not os.path.isfile(file_info['path'] + '.pdf'): if file_info['extension'] in ('rtf', 'doc', 'odt') and not os.path.isfile(file_info['path'] + '.pdf'): server.fg_make_pdf_for_word_path(file_info['path'], file_info['extension']) if 'pages' not in file_info: try: reader = pyPdf.PdfFileReader(open(file_info['path'] + '.pdf')) file_info['pages'] = reader.getNumPages() except: file_info['pages'] = 1 max_pages = 1 + int(file_info['pages']) formatter = '%0' + unicode(len(unicode(max_pages))) + 'd' for page in range(1, max_pages): page_file = dict() test_path = file_info['path'] + 'page-in-progress' if os.path.isfile(test_path): while (os.path.isfile(test_path) and time.time() - os.stat(test_path)[stat.ST_MTIME]) < 30: if not os.path.isfile(test_path): break time.sleep(1) page_file['extension'] = 'png' page_file['path'] = file_info['path'] + 'page-' + formatter % page page_file['fullpath'] = page_file['path'] + '.png' if not os.path.isfile(page_file['fullpath']): server.fg_make_png_for_pdf_path(file_info['path'] + '.pdf', 'page') if os.path.isfile(page_file['fullpath']): output += unicode(image_for_docx(docassemble.base.functions.DALocalFile(page_file['fullpath']), docassemble.base.functions.this_thread.current_question, docassemble.base.functions.this_thread.misc.get('docx_template', None), width=width)) else: output += "[Error including page image]" output += ' ' return(output)