""" Test script for PDF generation from LaTeX. This directly tests the PDF generation functionality without using Gradio. """ import os import subprocess import shutil # Define paths TEMPLATE_PATH = os.path.join("templates", "minimal_resume.tex") OUTPUT_DIR = "outputs" OUTPUT_TEX_PATH = os.path.join(OUTPUT_DIR, "test_resume.tex") def add_why_hire_me_section(template_path, output_path): """Add a test Why Hire Me section to the resume template.""" # The section needs to be properly placed after \begin{document} why_hire_me = """\\section*{Why Hire Me} I am a highly motivated software engineer with extensive experience in web development. My expertise in Python and JavaScript makes me an ideal candidate for this position. """ # Read the template with open(template_path, "r") as f: content = f.read() # Replace the placeholder with the test section modified_content = content.replace("% WHY_HIRE_ME_SECTION", why_hire_me) # Write the modified content with open(output_path, "w") as f: f.write(modified_content) return output_path def convert_to_pdf(tex_path): """Convert a LaTeX file to PDF.""" # Get the directory and filename tex_dir = os.path.dirname(tex_path) tex_filename = os.path.basename(tex_path) # Change to the directory containing the tex file original_dir = os.getcwd() if tex_dir: # Only change directory if tex_dir is not empty os.chdir(tex_dir) try: # Create a log file to capture output log_path = "pdflatex_log.txt" with open(log_path, 'w') as log_file: # Run pdflatex and capture output to the log file log_file.write("Running pdflatex - First pass\n") cmd = ['pdflatex', '-interaction=nonstopmode', tex_filename] log_file.write(f"Running command: {' '.join(cmd)}\n") result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) log_file.write(f"Return code: {result.returncode}\n") log_file.write(f"STDOUT:\n{result.stdout}\n") log_file.write(f"STDERR:\n{result.stderr}\n\n") # Get the PDF path pdf_filename = tex_filename.replace('.tex', '.pdf') # Check if the PDF was actually created (in current directory) if os.path.exists(pdf_filename): pdf_path = os.path.abspath(pdf_filename) print(f"PDF created successfully: {pdf_path}") return pdf_path # Check if the PDF was created in the tex_dir pdf_in_texdir = os.path.join(tex_dir, pdf_filename) if tex_dir else pdf_filename if os.path.exists(pdf_in_texdir): pdf_path = os.path.abspath(pdf_in_texdir) print(f"PDF created successfully: {pdf_path}") return pdf_path print(f"PDF file not created. See log at: {os.path.abspath(log_path)}") return None except Exception as e: print(f"Error in PDF conversion: {str(e)}") return None finally: # Change back to the original directory if tex_dir: # Only change back if we changed in the first place os.chdir(original_dir) def main(): """Main function to test the PDF generation.""" print("Starting PDF generation test...") print(f"Using template: {os.path.abspath(TEMPLATE_PATH)}") # Make sure the output directory exists os.makedirs(OUTPUT_DIR, exist_ok=True) # Add the Why Hire Me section to the template modified_tex_path = add_why_hire_me_section(TEMPLATE_PATH, OUTPUT_TEX_PATH) print(f"Created modified LaTeX file: {os.path.abspath(modified_tex_path)}") # Convert to PDF pdf_path = convert_to_pdf(modified_tex_path) if pdf_path: print("PDF generation test completed successfully!") # Copy the PDF to the current directory for easier viewing shutil.copy(pdf_path, "test_resume.pdf") print(f"PDF copied to: {os.path.abspath('test_resume.pdf')}") else: print("PDF generation test failed.") if __name__ == "__main__": main()