| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # -*- coding: utf-8 -*-
- """把响应文件附件用的原始材料统一成正立、可直接嵌入 Word 的 PNG。
- 原始材料是手机拍摄/扫描件,方向、尺寸不一;本脚本只做旋转、裁切与转码,
- 不修改内容。输出到 doc/_bid_assets/attach/。
- """
- import io
- import os
- import sys
- import fitz
- from PIL import Image
- sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
- HERE = os.path.dirname(os.path.abspath(__file__))
- OUT = os.path.join(HERE, "_bid_assets", "attach")
- SRC = r"C:\Users\skygu\OneDrive\Projects\AIDOP\项目\项目招投标\相关准备材料"
- ID_DIR = os.path.join(SRC, "法人身份证")
- # 身份证目录下两张图:文件名无序,按「含人像面」判断正反
- ID_FRONT = "ab38c8443b6f79937721e4c44f3443b9.jpg" # 人像面
- ID_BACK = "6b07461148f7008daefa38ee3ab90444.jpg" # 国徽面
- def save(im, name):
- """扫描件与照片统一存 JPEG:整套附件二十余页,用 PNG 无损会把文档撑到 50MB+。
- quality/subsampling 取偏高档位,保证证书与报告上的小字仍然锐利。
- """
- p = os.path.join(OUT, name)
- im.save(p, quality=88, subsampling=0, optimize=True, progressive=True)
- kb = os.path.getsize(p) / 1024
- print(f" {name} {im.width}x{im.height} {kb:,.0f} KB")
- return p
- def from_jpg(rel, name, rotate=0, box=None):
- im = Image.open(os.path.join(SRC, rel)).convert("RGB")
- if box:
- im = im.crop(box)
- if rotate:
- im = im.rotate(rotate, expand=True)
- return save(im, name)
- def from_pdf(rel, prefix, dpi=150):
- d = fitz.open(os.path.join(SRC, rel))
- out = []
- for i in range(d.page_count):
- pm = d[i].get_pixmap(dpi=dpi)
- im = Image.frombytes("RGB", (pm.width, pm.height), pm.samples)
- out.append(save(im, f"{prefix}_{i + 1:02d}.jpg"))
- return out
- def main():
- os.makedirs(OUT, exist_ok=True)
- print("法定代表人身份证(逆时针 90° 转正):")
- im = Image.open(os.path.join(ID_DIR, ID_FRONT)).convert("RGB")
- save(im.rotate(90, expand=True), "id_front.jpg")
- im = Image.open(os.path.join(ID_DIR, ID_BACK)).convert("RGB")
- save(im.rotate(90, expand=True), "id_back.jpg")
- print("营业执照(沿用已裁好的正立图):")
- lic = os.path.join(HERE, "_bid_assets", "营业执照.png")
- save(Image.open(lic).convert("RGB"), "license.jpg")
- print("软件企业证书(顺时针 90° 转正):")
- from_jpg("软件企业证书.jpg", "sw_enterprise.jpg", rotate=-90)
- print("软件产品证书(自双证合照下半幅裁出):")
- from_jpg("软件企业证书&软件产品证书.jpg", "sw_product.jpg",
- box=(110, 820, 1270, 1650))
- print("公共信用报告:")
- from_pdf("北京智造易科技有限公司公共信用报告.pdf", "credit", dpi=140)
- print("软件著作权登记证书:")
- from_pdf("智造易-软件著作权10个证书.pdf", "swc", dpi=150)
- print(f"\n输出目录:{OUT}")
- if __name__ == "__main__":
- main()
|