请考虑以下PDF文件,该文件具有两个页面,如下所示:
我已经创建好了,以便用户可以提供百分比位置,并且脚本将相应地“裁剪”页面。例如:
RawData\/SignalSelect
这些位置将使页面上的列分别占33%和66%。 (最后一列将在右侧保留)。
我本质上想做的是创建一个像这样的JSON数组:
pattern › RawData\/Sig
Pattern matches no files
这是我当前的代码:
{"1":{"position":"33"}, "2":{"position":"66"}}'
因此,以上未返回所需的输出。它返回:
{
"1":[
{
"row":"Page 1 - Col 1."
},
{
"row":"Page 2 - Col 1."
}
],
"2":[
{
"row":"Page 1 - Col 2"
},
{
"row":"Page 2 - Col 2"
}
],
"3":[
{
"row":"Page 1 - Col 3"
},
{
"row":"Page 2 - Col 3"
}
]
}
如您所见,我遇到了两个问题:
这个问题已经存在了几个小时,我似乎无法为如何将每列结果添加到其各自的键上而费解。 (所有页面上的第1列=>第1列和所有页面上的第2列=>第2列,依此类推。)
我尝试对代码进行一些更改:
#npages = number of PDF pages.
page = defaultdict(list)
for n in range(npages):
page[n + 1] = []
path = pdf_file + str(n + 1) + '.pdf' #grab the current PDF page.
for i, col in enumerate(COLUMNS):
cmd = ['pdftotext', str(path), '-']
proc = subprocess.Popen(
cmd, stdout=subprocess.PIPE, bufsize=0, text=True)
out, err = proc.communicate()
page[n + 1].append(out)
#Add the last column (rest of the page):
path = pdf_name + str(n + 1) + '.pdf'
cmd = ['pdftotext', str(path), '-']
proc = subprocess.Popen(
cmd, stdout=subprocess.PIPE, bufsize=0, text=True)
out, err = proc.communicate()
lastColumn = int(len(COLUMNS))
page[int(lastColumn) + 1].append(out)
但是打印:
{
"1":[
"Page 1 Col 1.\n\nPage 1 Col 2\n\n\f",
"Page 1 Col 3\n\n\f"
],
"3":[
"\f",
"\f"
],
"2":[
"Page 2 Col 1.\n\nPage 2 Col 2\n\n\f",
"Page 2 Col 3\n\n\f"
]
}
似乎只是每个页面的最后一次迭代。