将来自多个PDF的图形合并到一个PDF页面中的最优化方法?

时间:2019-05-21 13:40:38

标签: python-3.x jupyter-notebook reportlab pypdf2

我是NLS GNSS SOFAMESA(https://github.com/nlsfi/nls-gnss-sofamesa)的开发人员,并于本周发布了新版本。有许多更新。但是,我还没有弄清楚将多个pdf文件中的图形合并到一个pdf页面中的最优化方法是什么。我已经利用reportlab和pypdf2库生成了pdf。

第一个pdf文件:单独页面上有18个数字。共18页。

第二个pdf文件:单独页面上的18位数字。共18页。

组合的pdf文件:36个数字,以便第一个pdf文件中的第一个数字与第二个pdf文件中的第一个数字相匹配。因此,每页两个数字。共18页。

以后,每页最多应有5张不同pdf的5位数字。 ^两个pdf文件示例只是一个示例。

选项1:如果可以通过合并现有的第一个和第二个pdf文件来生成“组合pdf文件”,那将是最快的方法。

选项2:图形已保存到特定的文件夹位置,因此我可以从图形位置创建新的pdf。不是最快的方法。

例如,在merge1中未正确创建包含数字的“ ... Combined_Measurement_Report_plain.pdf”:

def merger1(output_path, input_paths):
    pdf_merger = PdfFileMerger()

    for path in input_paths:
        pdf_merger.merge(position = 1, fileobj = path, pages = (5, 22))

    with open(output_path, 'wb') as fileobj:
        pdf_merger.write(fileobj)

    output_path = [output_path]
    return output_path

output_filepaths = merger1('{0}{3}{1}_{2}_Combined_Measurement_Report_plain.pdf'.format(number_of_visit_at_the_reference_point_folder_path, name_of_the_reference_point_folder, number_of_visit_at_the_reference_point, os.sep), filepaths)

如前所述,我期望:

组合的pdf文件:36个数字,以便第一个pdf文件中的第一个数字与第二个pdf文件中的第一个数字相匹配。因此,每页两个数字。共18页。

以后,每页最多应有5张不同pdf的5位数字。 ^两个pdf文件示例只是一个示例。

1 个答案:

答案 0 :(得分:0)

您可以将PyPDF2或pdfrw用于此类事情。我实际上建议使用pdfrw,因为您可以在PDF中指定要使用的矩形。它还支持XObjects。

Github上有很多示例,作者也很好地回应了问题。

由于我无权访问相关文件,因此我只能猜测答案。但是我的猜测是,您将需要将要提取的片段的坐标映射放到PDF文件路径(即dict)中。然后遍历字典并提取所需的位,然后将它们写到新文件中。