"""
Save any webpage as a PDF using the save_as_pdf action.

The agent can save the current page as a PDF at any point during a task.
Supports custom filenames, paper sizes (Letter, A4, Legal, A3, Tabloid),
landscape orientation, and background printing.

By default the PDF includes page metadata in the margins (just like Chrome's
Print dialog): the date in the header and the page URL plus page numbers in the
footer. Pass display_header_footer=False for a clean PDF, or supply custom
header_template / footer_template HTML to control exactly what's printed.

Setup:
1. Get your API key from https://cloud.browser-use.com/new-api-key
2. Set environment variable: export BROWSER_USE_API_KEY="your-key"
"""

import asyncio
import os
import sys

sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))

from dotenv import load_dotenv

load_dotenv()

from browser_use import Agent, ChatBrowserUse


async def main():
	agent = Agent(
		task=(
			'Go to https://news.ycombinator.com and save the front page as a PDF named "hackernews". '
			'Then go to https://en.wikipedia.org/wiki/Web_browser and save just that article as a PDF in A4 format.'
		),
		llm=ChatBrowserUse(model='bu-2-0'),
	)

	history = await agent.run()

	# Print paths of any PDF files the agent saved
	print('\nSaved files:')
	for result in history.action_results():
		if result.attachments:
			for path in result.attachments:
				print(f'  {path}')


if __name__ == '__main__':
	asyncio.run(main())
