Конвеєр: масштабування PDF-файлів за допомогою pdfscale
Іноді буває треба робити однакові макети у різних масштабах. Наприклад, якій знаки, що можуть зчитуватись зблизька і здалека. І можна під ці випадки робити окремі макети, але оновлювати весь цей парк знаків не зручно.
Краще мати якийсь один майстер-макет, як компонент у Фігмі, який можна розтягнути або зменшити до потрібного розміру. Для цього можна зробити основу в AI/ID, а масштабні копії робити в окремому ID, де макет буде вставлений лінком, і будуть налаштовані нові розміри. Потім це все діло можна експортувати у PDF вже у новому розмірі.
Але це знову зайві дії: оновити майстер-файл, відкрити копії, оновити лінки, експортувати, зберегти у потрібну теку. А якщо у вас в одному файлі ще й різні макети які потрібно нарізати, то взагалі жах.
Тому виходом може бути вже масштабування вже готових PDF-файлів, з одного розміру в різні. В принципі так працює експорт для екранів в Adobe Illustrator або ж у Фігмі, але це для екранів, а в тому ж Індизайні таких функцій взагалі немає.
Скрипт pdfscale
Знайшов гарний bash-скрипт саме для масштабування PDF — pdfscale (для роботи він потребує встановлених gs, iamgemagick, xpdf, все написано у документації в розділі Dependencies). Сам скрипт можна встановити як команду у терміналі, наприклад, через wget
wget -q -O /tmp/pdfScale.sh 'https://raw.githubusercontent.com/tavinus/pdfScale/master/pdfScale.sh' && bash /tmp/pdfScale.sh --install
У документації детально розписані всі функції і є приклади. Тож скрипт дозволяє масштабувати та змінювати розміри PDF: має вбудовані друкарські розміри і можливість вказати свої довільні у різних видах величин.
Наприклад, можна макет розтягнути до 1500×1500 мм:
bash pdfScale.sh -r "custom mm 1500 1500" file.pdf newfile.pdf
де:
- - r “custom mm 1500 1500” — ключ resize, довільний розмір, у mm, а далі ширина та висота.
- file.pdf — вихідний файл
- newfile.pdf — змінений файл
При цьому не важливо у якому розмірі оригінал, він масштабується пропорційно.
Все це можна упакувати у цикл, який буде змінювати розмір всіх pff-файлів у теці й одразу складати їх у іншу теку 1500:
#!/bin/bash for i in *.pdf do pdfScale -r "custom mm 1434 1500" $i 1500/$i echo "$i - Done" done
Або ж те саме можна викликати одним рядком у Терміналі:
for i in *.pdf; pdfScale -r "custom mm 1434 1500" $i 1500/$i; echo "$i - Done"
Додаткове перейменування
Далі також всі змасштабовані файли можна перейменувати. наприклад, основні макети я мав у розмірі 660×690 мм і відповідно у самих файлах був написаний цей розмір. Для цього у скрипт додав рядок, з функцією rename, що заміняє у нових файлах текст “-660x690” на “-1434x150”:
rename 's/-660x690/-1434x1500/g' 1500/$i
Весь скрипт:
#!/bin/bash for i in *.pdf do pdfScale -r "custom mm 1434 1500" $i 1500/$i echo "$i - Done" rename 's/-660x690/-1434x1500/g' 1500/$i done
Або для Термінала:
for i in *.pdf; pdfScale -r "custom mm 1434 1500" $i 1500/$i;rename 's/-660x690/-1434x1500/g' 1500/$i; echo "$i - Done"
CMD-файл
І далі можна перетворити це на виконуваний command-файл, який можна просто запускати з теки.
Сам код:
#!/bin/bash # Change directory to be where the command is. cd "$(cd "$(dirname "$0")" > /dev/null && pwd)" # Run commands for i in *.pdf do pdfScale -r "custom mm 1434 1500" $i 1500/$i rename 's/-660x690/-1434x1500/g' 1500/$i echo "$i - Done" done
Завантажити pdfscale.command — приклад виконавчого файлу запуску скрипту. Розміри та назви тільки вкажіть свої.
А якщо потрібно зробити кілька розмірів, то можна скопіювати рядки pdfScale та rename і вказати додаткові розміри.
Originally published at https://blog.alexkolodko.com & telegram t.me/alexkolodko1.