import zipfile
import xml.etree.ElementTree as ET
import sys
import importlib.util

def read_docx(path):
    try:
        with zipfile.ZipFile(path) as docx:
            xml_content = docx.read('word/document.xml')
        tree = ET.XML(xml_content)
        WORD_NAMESPACE = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
        paras = []
        for paragraph in tree.iter(WORD_NAMESPACE + 'p'):
            texts = [node.text for node in paragraph.iter(WORD_NAMESPACE + 't') if node.text]
            if texts:
                paras.append(''.join(texts))
        return '\n'.join(paras)
    except Exception as e:
        return f"Error reading docx: {e}"

def read_pdf(path):
    try:
        if importlib.util.find_spec('PyPDF2'):
            import PyPDF2
            with open(path, 'rb') as f:
                try:
                    reader = PyPDF2.PdfReader(f)
                    return '\n'.join([page.extract_text() for page in reader.pages if page.extract_text()])
                except AttributeError:
                    reader = PyPDF2.PdfFileReader(f)
                    return '\n'.join([reader.getPage(i).extractText() for i in range(reader.numPages)])
        elif importlib.util.find_spec('pypdf'):
            import pypdf
            with open(path, 'rb') as f:
                reader = pypdf.PdfReader(f)
                return '\n'.join([page.extract_text() for page in reader.pages if page.extract_text()])
        elif importlib.util.find_spec('fitz'):
            import fitz
            doc = fitz.open(path)
            return '\n'.join([page.get_text() for page in doc])
        else:
            return "No PDF parsing module found (PyPDF2, pypdf, fitz)."
    except Exception as e:
        return f"Error reading pdf: {e}"

with open("output.txt", "w", encoding="utf-8") as f:
    f.write("--- DOCX CONTENT ---\n")
    f.write(read_docx(r"e:\wamp64\www\cepi\docs\project-idea\cepi - data gathering checklist.docx"))
    f.write("\n\n--- PDF CONTENT ---\n")
    f.write(read_pdf(r"e:\wamp64\www\cepi\docs\project-idea\CEPI porosal - revised.pdf"))

print("Extracted to output.txt")
