Прислали несколько PDF дикого размера, при этом при выписке в InDesign настройки сжатия стояли обычные. Стал разбираться - изменение настроек практически не влияет на размер файла, так и остаётся ~100mb.
Посмотрел внутрь файла и обнаружил кучу текстовой информации, оказалось что это photoshop document ancestors и они совсем не нужны, а InDesign при выписке их просто копирует один в один.
Выглядят они так:
609 0 obj <</Length 5276838/Subtype/XML/Type/Metadata>>stream
и потом много подобных строк:
<rdf:li>00178AD05005B79BDF94C8572B120B2D</rdf:li>
Если в теле то так:
Для удаления этой информации я написал скрипт на Python, на PDF работает отлично, некоторые PDF сжимались с 180 до 4 мегабайт, а некоторые практически никак - в их картинках нет метаданных.
Вот код:
import re
import sys
droppedFile = sys.argv[1]
out=droppedFile.split('.')[0]+"-new."+droppedFile.split('.')[1]
file=droppedFile
with open(file,mode='rb') as file:
filecontent = file.read()
print(len(filecontent))
content_new = re.sub(b'\d+\s0\sobj.<</Length\s\d+/Subtype/XML/Type/Metadata.*?endobj', b'', filecontent, flags = re.M|re.S )
print (len(content_new))
output_file = open(out,"wb")
output_file.write(content_new)
output_file.close()