pdf_merge.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  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. print(folder)
  24. for r in reports:
  25. print(r)
  26. pdf_merge(cfg.cognos11.reportoutput_dir, r)
  27. if __name__ == "__main__":
  28. merge_reports_in_folder(config.Config())