pdf_merge.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import config
  2. from PyPDF2 import PdfMerger
  3. from pathlib import Path
  4. import re
  5. import json
  6. def pdf_merge(base_dir: str, report_name):
  7. report_prefix = re.sub(r'\[([^\]]+)\]', '', report_name)
  8. target = f"{base_dir}/{report_prefix}_0.pdf"
  9. if Path(target).exists():
  10. Path(target).unlink()
  11. pdfs = [f for f in Path(base_dir).glob(report_prefix + '*.pdf')]
  12. if len(pdfs) > 0:
  13. with PdfMerger() as merger:
  14. for pdf in sorted(pdfs, key=lambda f: f.stat().st_mtime):
  15. merger.append(pdf)
  16. merger.write(target)
  17. def get_reports(reports_file, folder):
  18. with open(reports_file, 'r') as frh:
  19. reports = json.load(frh)
  20. return [r['name'] for r in reports if r['path'].startswith(folder)]
  21. def merge_reports_in_folder(cfg: config.Config, folder='Team Content/ReportOutput'):
  22. reports = get_reports(cfg.cognos11.reports_file, folder)
  23. for r in reports:
  24. print(r)
  25. pdf_merge(cfg.portal_dir + '/ReportOutput', r)
  26. if __name__ == '__main__':
  27. merge_reports_in_folder(config.Config())