Конвеєр: масштабування 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 і вказати додаткові розміри.
Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: на монобанку чи по номеру картки банки 4874100025139125.
