fixed pdf download
This commit is contained in:
parent
f04d4f8b3e
commit
48ca276241
2 changed files with 35 additions and 16 deletions
|
|
@ -56,7 +56,7 @@ async def generate_pdf_endpoint(request: GeneratePdfRequest):
|
|||
logger.info(f"API request received to generate PDF: name='{request.name}', link='{request.link}'")
|
||||
|
||||
try:
|
||||
result = generate_pdf(request.link, request.name)
|
||||
result = await generate_pdf(request.link, request.name)
|
||||
|
||||
if result:
|
||||
file_path = f"pdfs/{request.name}.pdf"
|
||||
|
|
|
|||
|
|
@ -1,25 +1,44 @@
|
|||
from playwright.sync_api import sync_playwright
|
||||
from playwright.async_api import async_playwright
|
||||
import os
|
||||
|
||||
from pif_compiler.functions.common_log import get_logger
|
||||
|
||||
log = get_logger()
|
||||
|
||||
def generate_pdf(link : str, name : str):
|
||||
if os.path.exists(f'pdfs/{name}.pdf'):
|
||||
async def generate_pdf(link: str, name: str):
|
||||
"""
|
||||
Generate a PDF from a web page URL using Playwright.
|
||||
|
||||
Args:
|
||||
link: URL of the page to convert to PDF
|
||||
name: Name for the generated PDF file (without extension)
|
||||
|
||||
Returns:
|
||||
bool: True if PDF was generated or already exists, False otherwise
|
||||
"""
|
||||
pdf_path = f'pdfs/{name}.pdf'
|
||||
|
||||
if os.path.exists(pdf_path):
|
||||
log.info(f"PDF already exists for {name}, skipping generation.")
|
||||
return True
|
||||
else:
|
||||
log.info(f"Generating PDF for {name} from link: {link}")
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch()
|
||||
page = browser.new_page()
|
||||
page.goto(link)
|
||||
page.pdf(path=f'pdfs/{name}.pdf')
|
||||
browser.close()
|
||||
if os.path.exists(f'pdfs/{name}.pdf'):
|
||||
log.info(f"PDF generated for {name}")
|
||||
|
||||
log.info(f"Generating PDF for {name} from link: {link}")
|
||||
|
||||
try:
|
||||
async with async_playwright() as p:
|
||||
browser = await p.chromium.launch()
|
||||
page = await browser.new_page()
|
||||
await page.goto(link, wait_until='networkidle')
|
||||
await page.pdf(path=pdf_path)
|
||||
await browser.close()
|
||||
|
||||
if os.path.exists(pdf_path):
|
||||
log.info(f"PDF generated successfully for {name}")
|
||||
return True
|
||||
else:
|
||||
log.error(f"PDF generation failed for {name}")
|
||||
return False
|
||||
log.error(f"PDF generation failed for {name}: file not found after generation")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
log.error(f"Error generating PDF for {name}: {str(e)}", exc_info=True)
|
||||
return False
|
||||
Loading…
Reference in a new issue