Commit 039f8cbf authored by Doge2077's avatar Doge2077
Browse files

feat:add advice on LibreOffice installing

parent 82a4376d
...@@ -2,6 +2,7 @@ import os ...@@ -2,6 +2,7 @@ import os
import subprocess import subprocess
import platform import platform
from pathlib import Path from pathlib import Path
import shutil
class ConvertToPdfError(Exception): class ConvertToPdfError(Exception):
...@@ -43,19 +44,62 @@ def check_fonts_installed(): ...@@ -43,19 +44,62 @@ def check_fonts_installed():
def get_soffice_command(): def get_soffice_command():
"""Return the path to LibreOffice's soffice executable depending on the platform.""" """Return the path to LibreOffice's soffice executable depending on the platform."""
if platform.system() == 'Windows': system_type = platform.system()
# First check if soffice is in PATH
soffice_path = shutil.which('soffice')
if soffice_path:
return soffice_path
if system_type == 'Windows':
# Check common installation paths
possible_paths = [ possible_paths = [
Path("C:/Program Files/LibreOffice/program/soffice.exe"), Path(os.environ.get('PROGRAMFILES', 'C:/Program Files')) / 'LibreOffice/program/soffice.exe',
Path("C:/Program Files (x86)/LibreOffice/program/soffice.exe") Path(os.environ.get('PROGRAMFILES(X86)', 'C:/Program Files (x86)')) / 'LibreOffice/program/soffice.exe',
Path('C:/Program Files/LibreOffice/program/soffice.exe'),
Path('C:/Program Files (x86)/LibreOffice/program/soffice.exe')
] ]
# Check other drives for windows
for drive in ['C:', 'D:', 'E:', 'F:', 'G:', 'H:']:
possible_paths.append(Path(f"{drive}/LibreOffice/program/soffice.exe"))
for path in possible_paths: for path in possible_paths:
if path.exists(): if path.exists():
return str(path) return str(path)
raise ConvertToPdfError( raise ConvertToPdfError(
"LibreOffice not found. Please install LibreOffice and ensure soffice.exe is located in a standard path." "LibreOffice not found. Please install LibreOffice from https://www.libreoffice.org/ "
"or ensure soffice.exe is in your PATH environment variable."
) )
else: else:
return 'soffice' # Assume it's in PATH on Linux/macOS # For Linux/macOS, provide installation instructions if not found
try:
# Try to find soffice in standard locations
possible_paths = [
'/usr/bin/soffice',
'/usr/local/bin/soffice',
'/opt/libreoffice/program/soffice',
'/Applications/LibreOffice.app/Contents/MacOS/soffice'
]
for path in possible_paths:
if os.path.exists(path):
return path
# Last attempt with which
soffice_path = shutil.which('soffice')
if soffice_path:
return soffice_path
raise ConvertToPdfError(
"LibreOffice not found. Please install it:\n"
" - Ubuntu/Debian: sudo apt-get install libreoffice\n"
" - CentOS/RHEL: sudo yum install libreoffice\n"
" - macOS: brew install libreoffice or download from https://www.libreoffice.org/\n"
" - Or ensure soffice is in your PATH environment variable."
)
except Exception as e:
raise ConvertToPdfError(f"Error locating LibreOffice: {str(e)}")
def convert_file_to_pdf(input_path, output_dir): def convert_file_to_pdf(input_path, output_dir):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment