# -*- coding: utf-8 -*- """导出响应文件 PDF 并渲染抽查页,定位排版问题。""" import io import os import sys import time sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8") HERE = os.path.dirname(os.path.abspath(__file__)) BID = r"C:\Users\skygu\OneDrive\Projects\AIDOP\项目\项目招投标" RESP = os.path.join( BID, "响应文件(完整版)-2026年河南产互联制造业数据智能运营平台研发项目.docx") PDF = os.path.join(HERE, "_tmp_inspect", "current.pdf") OUT = os.path.join(HERE, "_tmp_inspect") os.makedirs(OUT, exist_ok=True) PAGES = [int(x) for x in sys.argv[1].split(",")] if len(sys.argv) > 1 else \ [1, 9, 16, 20, 21, 40, 45, 48, 64, 65, 80, 95, 96, 105, 150] def export(): import win32com.client as win32 word = None for i in range(4): try: word = win32.gencache.EnsureDispatch("Word.Application") word.Visible = False word.DisplayAlerts = 0 break except Exception as e: print(f" 重试 {i + 1}/4:{e}") time.sleep(4) doc = word.Documents.Open(RESP, ReadOnly=True) try: doc.ExportAsFixedFormat(PDF, 17) finally: doc.Close(False) word.Quit() print(f"导出 {PDF} {os.path.getsize(PDF) / 1024 / 1024:.1f}MB") if not os.path.exists(PDF) or "--re" in sys.argv: export() import fitz d = fitz.open(PDF) print(f"PDF 共 {d.page_count} 页,渲染 {PAGES}") for p in PAGES: if p > d.page_count: continue pm = d[p - 1].get_pixmap(dpi=80) pm.save(os.path.join(OUT, f"p{p:03d}.png")) print(f" p{p} {pm.width}×{pm.height}") d.close()