import pdfplumber
import sys

def parse_pdf_to_markdown(pdf_path):
    text_output = []
    
    try:
        with pdfplumber.open(pdf_path) as pdf:
            print(f"--- 開始處理: {pdf_path} ---")
            
            for i, page in enumerate(pdf.pages):
                page_content = []
                print(f"正在讀取第 {i+1} 頁...")

                # 1. 嘗試提取表格 (這份文件主要是表格，所以這步最重要)
                tables = page.extract_tables()
                
                if tables:
                    for table in tables:
                        # 將表格轉換為 Markdown 格式，讓 LLM 更容易讀懂
                        # table 是一個 list of lists
                        md_table = " | ".join(["標題/欄位" for _ in range(len(table[0]))]) + "\n" # 簡易標頭
                        md_table += " | ".join(["---" for _ in range(len(table[0]))]) + "\n"
                        
                        for row in table:
                            # 處理 None (合併儲存格時 pdfplumber 有時會回傳 None)
                            clean_row = [str(cell).replace('\n', '') if cell is not None else "" for cell in row]
                            md_table += " | ".join(clean_row) + "\n"
                        
                        page_content.append(f"\n[表格資料]:\n{md_table}")
                """
                # 2. 如果表格沒抓到東西，或是為了補充，抓取純文字
                text = page.extract_text()
                if text:
                    # 簡單過濾掉已經在表格裡的內容可能會比較複雜
                    # 這裡我們先把純文字附在後面作為補充上下文
                    page_content.append(f"\n[頁面文字]:\n{text}")
                """
                text_output.append("\n".join(page_content))

        return "\n".join(text_output)

    except Exception as e:
        return f"Error reading PDF: {str(e)}"

# 測試執行
if __name__ == "__main__":
    # 您可以把這裡換成實際檔案路徑
    # 記得先用 wget 下載該 PDF 到本地做測試
    # wget https://pers.ncku.edu.tw/var/file/29/1029/img/reg04-01-03.pdf -O test.pdf
    
    #file_path = "pdf_cache/reg04-01-03.pdf" 
    file_path = "pdf_cache2/holiday.pdf" 
    
    # 檢查檔案是否存在
    import os
    if not os.path.exists(file_path):
        print(f"找不到檔案: {file_path}，請先下載。")
    else:
        result = parse_pdf_to_markdown(file_path)
        print(result)
