通常、入稿の画像が全て300dpi以上であっても、拡大さらた場合、実際の解像度が足りなくなる可能性があります。ドキュメント内そのような画像がないか、確認が必要。
InDesignのリンクパネルには、画像の元のPPIと編集後(拡縮された後)PPIが表示される。上記の例だと、400ppi(元)/0.88(拡縮率)=455ppi(編集後)。
ところが、EPSは表示しない!(古いバージョンのInDeisgnでは一時期表示できたらしい?)。よく使う画像に対して、その情報を下記に纏めた(.space、.actualPpi、.effectivePpiは、graphicの属性。0は属性取れない;1は取れる):
format | colorMode | .space | .actualPpi | .effectivePpi |
---|---|---|---|---|
eps | CMYK | 1 | 0 | 0 |
Gray | ||||
Mono | 0 | |||
RGB | 1 | |||
jpg | CMYK | 1 | 1 | 1 |
Gray | ||||
RGB | ||||
png | Gray | 1 | 1 | 1 |
Mono | ||||
RGB | ||||
psd/tiff | CMYK | 1 | 1 | 1 |
Gray | ||||
Mono | ||||
RGB |
from appscript import * from PIL import Image import os from pathlib import Path # DPI = 300 # 編集後のPPI EXTS = (".jpg", ".jpeg", ".eps", ".png", ".tiff", ".tif", ".psd") # def get_eps_resolution(eps_file): # TODO: is Illustrator eps img = Image.open(eps_file) if "Illustrator" in img.info["Creator"]: print("----------Creator: ", img.info["Creator"], eps_file) w, h = img.size # unit: pixel tmp = img.info["HiResBoundingBox"].split(" ") # unit: point tmp = [float(x) for x in tmp] HiResWidth = tmp[2] - tmp[0] HiResHeight = tmp[3] - tmp[1] return round(w / HiResWidth * 72), round(h / HiResHeight * 72) # indd = app("Adobe InDesign 2022") doc = indd.active_document links = doc.links() for link in links: hfs_path = link.file_path() # HFS path # change HFS path to POSIX path # FIXME:外付けHD:例:'hd_name:aaa:bbb:ccc:ddd:Links:eee.eps' file_path = hfs_path[hfs_path.index(":"):].replace(":", "/") ext = Path(file_path).suffix.lower() if ext not in EXTS: continue status = link.status() if status == k.link_missing: print("link missing: ", file_path) continue if status == k.out_of_date: link.update() # horizontal scale may not equal to vertical scale scale = max(link.parent.horizontal_scale(), link.parent.vertical_scale()) # print(graphic()) if ext == ".eps": resolution = get_eps_resolution(file_path) # use width resolution: percentage effective_ppi = resolution[0] / scale * 100 else: graphic = link.parent effective_ppi = min(graphic.effective_ppi()) # if effective_ppi < DPI: print(effective_ppi, file_path)