office_to_pdf.py 729 B

1234567891011121314151617181920212223242526272829
  1. import os
  2. import subprocess
  3. from pathlib import Path
  4. class ConvertToPdfError(Exception):
  5. def __init__(self, msg):
  6. self.msg = msg
  7. super().__init__(self.msg)
  8. def convert_file_to_pdf(input_path, output_dir):
  9. if not os.path.isfile(input_path):
  10. raise FileNotFoundError(f"The input file {input_path} does not exist.")
  11. os.makedirs(output_dir, exist_ok=True)
  12. cmd = [
  13. 'soffice',
  14. '--headless',
  15. '--convert-to', 'pdf',
  16. '--outdir', str(output_dir),
  17. str(input_path)
  18. ]
  19. process = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  20. if process.returncode != 0:
  21. raise ConvertToPdfError(process.stderr.decode())