Моя проблема заключается в том, что я не могу объединить 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'))