Как сделать 100+ PDF-рисунков рядом на страницу, используя Python? - PullRequest
0 голосов
/ 19 сентября 2019

Моя проблема заключается в том, что я не могу объединить PDF-рисунки рядом (я хочу объединить 8 PDF-диаграмм на каждую PDF-страницу на каждой странице). Я могу объединить только 1 PDF-диаграмму на страницу, и это неэффективно, если вы хотите распечатать ихдля анализа, потому что есть 100+ графиков, которые нужно проанализировать (все в python)

Я пробовал это на Jupyter, и это работало на страницах, но сейчас я не знаю, как изменить его так, чтобы он давал 8 графиковна страницу в pdf.
Я нашел идеи по https://community.esri.com/docs/DOC-10347-creating-multiple-graphs-per-page-using-matplotlib

import PyPDF2 
import glob
from natsort import natsorted

pdfs = glob.glob('C:/CT Reporting Tool Backup/CT Reporting Tool Backup/Fig/All/*.pdf')
new_merged_pdf = 'C:/CT Reporting Tool Backup/CT Reporting Tool Backup/Fig/All/new_merged_pdf.pdf'

merge_pdfs = PyPDF2.PdfFileMerger()

for pdf in natsorted(pdfs):

    merge_pdfs.append(open(pdf, 'rb'))

merge_pdfs.write(open(new_merged_pdf, 'wb'))

read_pdf = PyPDF2.PdfFileReader(open('C:/CT Reporting Tool Backup/CT Reporting Tool Backup/Fig/All/new_merged_pdf.pdf', 'rb'))

pdf_get_page = read_pdf.getPage(0)
pdf_get_page.extractText()

У меня есть исходный код, который работает, но не знаю, как объединить этот код с реальным кодом, написанным наЮпитер:

def create_report(title, path_savefig, folder, index, comments, path_pdf, fig_number):
    '''
    This function creates a report without cqc number
    '''
    global full_name
    global comment
    global number
    global  repNum
    full_name = str(title)
    comment = str(comments)
    number = ''
    repNum = str(fig_number)
    doc = BaseDocTemplate(path_pdf+'\\'+title)
    if repNum == '28' :
        column_gap = 2 * cm
        doc.addPageTemplates(
            [
                PageTemplate(
                    frames=[
                        Frame(
                            doc.leftMargin,
                            1.5*cm+doc.bottomMargin,
                            doc.width / 4,
                            doc.height-0.5*cm,
                            id='left',
                            rightPadding=column_gap / 4,
                            showBoundary=0  # set to 1 for debugging
                        ),
                         Frame(
                            doc.leftMargin + doc.width / 4,
                            1.5*cm+doc.bottomMargin,
                            doc.width / 4,
                            doc.height-0.5*cm,
                            id='middle-left',
                            rightPadding=column_gap / 4,
                            leftPadding= column_gap / 4,
                            showBoundary=0
                        ),
                        Frame(
                            doc.leftMargin +0.1*cm+ 2*doc.width / 4,
                            1.5*cm+doc.bottomMargin,
                            doc.width / 4,
                            doc.height-0.5*cm,
                            id='middle-right',
                            rightPadding=column_gap / 4,
                            leftPadding= column_gap /4,
                            showBoundary=0
                        ),
                        Frame(
                            doc.leftMargin +0.1*cm+ 3*doc.width / 4,
                            1.5*cm+doc.bottomMargin,
                            doc.width / 4,
                            doc.height-0.5*cm,
                            id='right',
                            leftPadding=column_gap / 4,
                            showBoundary=0
                        ),
                    ],
                    onPage=header_footer
                ),
            ]
        )
        flowables = []
        files = os.listdir(path_savefig+folder)
        files.sort(key=natural_keys)
        if len(index) == 0:
            for ind, val in enumerate(files):
                flowables.append(Image(path_savefig+folder+"\\"+val, 4.5*cm, 4.5*cm, kind='proportional'))
        else:
            for ind2, val2 in enumerate(index):
                for ind, val in enumerate(files):
                    if val2.split('m_')[-1] in val :
                        flowables.append(Image(path_savefig+folder+"\\"+val, 4.5*cm, 4.5*cm, kind='proportional'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...