25 lines
913 B
Python
25 lines
913 B
Python
from pathlib import Path
|
|
import sys
|
|
from docx import Document
|
|
from docx.oxml.ns import qn
|
|
|
|
|
|
def inspect_docx(path: Path) -> None:
|
|
doc = Document(path)
|
|
print(f"DOCX {path}\nparagraphs={len(doc.paragraphs)} tables={len(doc.tables)} shapes={len(doc.inline_shapes)}")
|
|
for i, para in enumerate(doc.paragraphs):
|
|
text = para.text.strip()
|
|
if text:
|
|
style = getattr(para.style, "name", "") or ""
|
|
drawings = para._p.xpath(".//w:drawing")
|
|
rels = para._p.xpath(".//a:blip/@r:embed")
|
|
print(f"P{i}|{style}|drawings={len(drawings)}|rels={','.join(rels)}|{text}")
|
|
for i, table in enumerate(doc.tables):
|
|
print(f"TABLE {i} {len(table.rows)}x{len(table.columns)}")
|
|
for row in table.rows:
|
|
print(" | ".join(cell.text.replace("\n", " / ") for cell in row.cells))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
inspect_docx(Path(sys.argv[1]))
|