| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # -*- 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()
|