<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Здоровий глузд: дописи з тегом конвеєр</title>
<link>https://blog-archive.alexkolodko.com/tags/konveyer/</link>
<description>Олександр Колодько. Інформаційний та навігаційний дизайнер. Співзасновник команди ARC, співзасновник та головний дизайнер в Агентах змін (А3). Пишу про дизайн і цікаве мені · alexkolodko.com · wayfinding.systems</description>
<author></author>
<language>uk</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Олександр Колодько. Інформаційний та навігаційний дизайнер. Співзасновник команди ARC, співзасновник та головний дизайнер в Агентах змін (А3). Пишу про дизайн і цікаве мені · alexkolodko.com · wayfinding.systems</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Конвеєр: масштабування PDF-файлів за допомогою pdfscale</title>
<guid isPermaLink="false">125</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-pdfscale/</link>
<pubDate>Thu, 07 Dec 2023 17:47:49 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-pdfscale/</comments>
<description>
&lt;p&gt;Іноді буває треба робити однакові макети у різних масштабах. Наприклад, якій знаки, що можуть зчитуватись зблизька і здалека. І можна під ці випадки робити окремі макети, але оновлювати весь цей парк знаків не зручно.&lt;/p&gt;
&lt;p&gt;Краще мати якийсь один майстер-макет, як компонент у Фігмі, який можна розтягнути або зменшити до потрібного розміру. Для цього можна зробити основу в AI/ID, а масштабні копії робити в окремому ID, де макет буде вставлений лінком, і будуть налаштовані нові розміри. Потім це все діло можна експортувати у PDF вже у новому розмірі.&lt;/p&gt;
&lt;p&gt;Але це знову зайві дії: оновити майстер-файл, відкрити копії, оновити лінки, експортувати, зберегти у потрібну теку. А якщо у вас в одному файлі ще й різні макети які потрібно нарізати, то взагалі жах.&lt;/p&gt;
&lt;p&gt;Тому виходом може бути вже масштабування вже готових PDF-файлів, з одного розміру в різні. В принципі так працює експорт для екранів в Adobe Illustrator або ж у Фігмі, але це для екранів, а в тому ж Індизайні таких функцій взагалі немає.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/pdfscale-principle.png" width="1200" height="675" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Принцип масштабування&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Скрипт pdfscale&lt;/h2&gt;
&lt;p&gt;Знайшов гарний bash-скрипт саме для масштабування PDF — &lt;a href="https://github.com/tavinus/pdfScale"&gt;pdfscale&lt;/a&gt; (для роботи він потребує встановлених gs, iamgemagick, xpdf, все написано у документації в розділі &lt;i&gt;Dependencies&lt;/i&gt;). Сам скрипт можна встановити як команду у терміналі, наприклад, через wget&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;wget -q -O /tmp/pdfScale.sh &amp;#039;https://raw.githubusercontent.com/tavinus/pdfScale/master/pdfScale.sh&amp;#039; &amp;amp;&amp;amp; bash /tmp/pdfScale.sh --install&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;У документації детально розписані всі функції і є приклади. Тож скрипт дозволяє масштабувати та змінювати розміри PDF: має вбудовані друкарські розміри і можливість вказати свої довільні у різних видах величин.&lt;/p&gt;
&lt;p&gt;Наприклад, можна макет розтягнути до 1500×1500 мм:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;bash pdfScale.sh -r &amp;quot;custom mm 1500 1500&amp;quot; file.pdf newfile.pdf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;— r «custom mm 1500 1500»&lt;/i&gt; — ключ resize, довільний розмір, у mm, а далі ширина та висота.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;file.pdf&lt;/i&gt; — вихідний файл&lt;/li&gt;
&lt;li&gt;&lt;i&gt;newfile.pdf&lt;/i&gt; — змінений файл&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;При цьому не важливо у якому розмірі оригінал, він масштабується пропорційно.&lt;/p&gt;
&lt;p&gt;Все це можна упакувати у цикл, який буде змінювати розмір всіх pff-файлів у теці й одразу складати їх у іншу теку 1500:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

for i in *.pdf
do
pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i
echo &amp;quot;$i - Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Або ж те саме можна викликати одним рядком у Терміналі:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;for i in *.pdf; pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i; echo &amp;quot;$i - Done&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Додаткове перейменування&lt;/h2&gt;
&lt;p&gt;Далі також всі змасштабовані файли можна перейменувати. наприклад, основні макети я мав у розмірі 660×690 мм і відповідно у самих файлах був написаний цей розмір. Для цього у скрипт додав рядок, з функцією rename, що заміняє у нових файлах текст «-660x690» на «-1434x150»:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Весь скрипт:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

for i in *.pdf
do
pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i
echo &amp;quot;$i - Done&amp;quot;
    rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Або для Термінала:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;for i in *.pdf; pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i;rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i; echo &amp;quot;$i - Done&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/01-bash-x2.mp4#t=0.001" width="2560" height="1510.8431044109" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Як працює скрипт&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;CMD-файл&lt;/h2&gt;
&lt;p&gt;І далі можна перетворити це на виконуваний command-файл, який можна просто запускати з теки.&lt;/p&gt;
&lt;p&gt;Сам код:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

# Change directory to be where the command is.
cd &amp;quot;$(cd &amp;quot;$(dirname &amp;quot;$0&amp;quot;)&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp; pwd)&amp;quot;

# Run commands
for i in *.pdf
do
pdfScale -r &amp;quot;custom mm 1434 1500&amp;quot; $i 1500/$i
rename &amp;#039;s/-660x690/-1434x1500/g&amp;#039; 1500/$i
echo &amp;quot;$i - Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Завантажити &lt;a href="https://www.dropbox.com/scl/fi/fc61wol3kummir3fchu5k/pdfscale.command?rlkey=q7lvg6z6tuc66rcyqus2qyc8n&amp;dl=0"&gt;pdfscale.command&lt;/a&gt; — приклад виконавчого файлу запуску скрипту. Розміри та назви тільки вкажіть свої.&lt;/p&gt;
&lt;p&gt;А якщо потрібно зробити кілька розмірів, то можна скопіювати рядки pdfScale та rename і&lt;br /&gt;
вказати додаткові розміри.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/02-cmd-x2.mp4#t=0.001" width="2560" height="1510.8431044109" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Як це виглядає в роботі&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Конвеєр: автоматизоване нарізання PDF на різні файли</title>
<guid isPermaLink="false">124</guid>
<link>https://blog-archive.alexkolodko.com/all/automation-pdf-split/</link>
<pubDate>Thu, 30 Nov 2023 17:07:41 +0200</pubDate>
<author></author>
<comments>https://blog-archive.alexkolodko.com/all/automation-pdf-split/</comments>
<description>
&lt;p&gt;В роботі над дизайном багатьох макетів буває дуже зручно їх всі робити в одному файлі: можна простіше копіювати елементи та стилі, мати єдину базу символів, бачити загальну картинку одразу на всіх макетах тощо.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/ai-file.jpg" width="2400" height="1381" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Багато макетів різних розмірів у Adobe Illustrator&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Але редактори погано пристосовані для збереження потім таких робочих файлів, що йтимуть на виробництво. Процес збереження купи файлів починає нагадувати нудну справу, в якій ви вибираєте що зберігати, якось розділяєте на окремі файли та при збереженні у різні формати правильно називаєте все. Така безглузда трата робочого часу і це нууудно 🥱. І в такій ручній роботі точно виникатимуть помилки, тож доведеться починати наново.&lt;/p&gt;
&lt;p&gt;У ІнДизайні є можливість зберігати PDF посторінково. Але можливості обмежені й потім все одно треба перейменовувати файли, як треба. У Ілюстраторі взагалі така опція є тільки для збереження окремих артбордів для екранів (у RGB), тож для друку це не підходить. І вирішувати це можна сторонніми скриптами, як-то скрипт для збереження файлу у різні формати, який ми робили для своєї роботи.&lt;/p&gt;
&lt;p&gt;Але це не вирішує задачу, коли у вас частина макетів двосторонні й ці різні сторони мають зберегтись, наприклад, в один PDF на кілька сторінок.&lt;/p&gt;
&lt;p&gt;А якщо вже після збереження потрібно буде внести якісь зміни, то весь цей нудний процес треба робити спочатку і добре якщо не для всіх файлів.&lt;/p&gt;
&lt;h2&gt;Конвеєр та алгоритм&lt;/h2&gt;
&lt;p&gt;Мені цікаво шукати і організовувати дизайн-конвеєр під такі задачі, оскільки вони точно повторюватимуться, тож автоматизація дає шалену економію часу, який можна витратити на цікавіші речі.&lt;/p&gt;
&lt;p&gt;Колись писав про &lt;a href="https://blog.alexkolodko.com/all/mass-rename/"&gt;масове перейменування файлів&lt;/a&gt;, які перед цим нарізав в Акробаті на окремі файли. Але це все одно довго, треба ще швидше.&lt;/p&gt;
&lt;p&gt;Спочатку потрібно подумати над наявними можливостями й алгоритмом. Кожен редактор може за раз зберігати всі або діапазон сторінок у суцільний PDF-файл. Тож якщо мати інструкцію, яка скаже які сторінки мають піти в який файл і як ці файли назвати. Така інструкція — своєрідна «маска», яку можна застосувати для файлу.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;1-2=filename01
3=filename02
4-5=filename03
6-8 10=filename04
…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1-2 — сторінки документа (може містити одну цифру, діапазон через дефіс, перелік окремих сторінок через пробіл, також доступні параметри початку і кінця документа &lt;tt&gt;start-10&lt;/tt&gt; чи &lt;tt&gt;57-end&lt;/tt&gt; )&lt;/li&gt;
&lt;li&gt;= — технічний розділювач (у назвах файлах його не повинно бути)&lt;/li&gt;
&lt;li&gt;filename01 — назва вашого майбутнього PDF-файлу, в який в який увійдуть сторінки з діапазону (без розширення .pdf)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;bash + PDFtk&lt;/h2&gt;
&lt;p&gt;Для цього bash (потрібна версія 4 і вище, перевіряється у терміналі через &lt;tt&gt;bash -v&lt;/tt&gt;, встановлюється через &lt;tt&gt; brew install bash&lt;/tt&gt;) та &lt;a href="https://www.pdflabs.com/tools/pdftk-server/"&gt;PDF Toolkit (PDFtk&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;За допомогою ChatGPT в кілька ітерацій зробив скрипт, що бере вказаний PDF-файл, окремо бере текстову «маску» у TXT, як масив назв, в яких&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

input_file=&amp;quot;Tustan-Signs-All.pdf&amp;quot;
data_file=&amp;quot;range.txt&amp;quot;

# Read page ranges and custom names from the external file into a single array
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для більшої універсальності я виніс вказання файлів, як аргументів у командному рядку. Тож тепер можна скопіювати скрипт у потрібну теку та запустити командою:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;bash splitter-pro.sh filename.pdf mask.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;де:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;filename.pdf — назва вашого PDF-файлу&lt;/li&gt;
&lt;li&gt;mask.txt — текстовий файл з «маскою»&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Сам скрипт виглядає так ($1 — перший аргумент, тобто PDF-файл; $2 — другий аргумент, тобто TXT-файл):&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

input_file=$1
data_file=$2

# Read page ranges and custom names from the external file into a single array. Requaire bash 4.0
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Приклад «маски», де спочатку номери сторінок, символ =, а далі назва файла (Проект-Знак-Точка-Розмір):&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;1-2=Tustan-WF-Sign-Т1-400x600
3=Tustan-WF-Sign-Т2.1-200x350
4=Tustan-WF-Sign-Т2.2-200x350
5=Tustan-WF-Sign-Т3.1-200x350
6=Tustan-WF-Sign-Т3.2-200x350
7-8=Tustan-WF-Sign-Т4.1-T4.2-200x600
9-10=Tustan-WF-Sign-Т4.3-T4.4-200x600
11=Tustan-WF-Sign-Т5.1-200x600
12=Tustan-WF-Sign-Т5.2-200x600
13=Tustan-WF-Sign-Т6.1-200x600
14=Tustan-WF-Sign-Т6.2-200x600
15=Tustan-WF-Sign-Т7.1-200x600
16=Tustan-WF-Sign-Т7.2-200x600
17=Tustan-WF-Sign-Т8.1-200x600
18=Tustan-WF-Sign-Т8.2-200x600
19=Tustan-WF-Sign-Т9.1-200x600
20=Tustan-WF-Sign-Т9.2-200x600
21=Tustan-WF-Sign-Т9.3-200x600
22-23=Tustan-WF-Sign-Т10-200x600
…&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Весь процес виглядає ось так:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/tustan-wf-signs-automation-x2.mp4#t=0.001" width="2560" height="1507.1428571429" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Розділення PDF-файлу по «масці»&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Також можна цей підхід використовувати для нарізання макетів по одному і одразу з правильним перейменуванням файлів. Колись робив скрипт для перейменування пачки файлів, але тепер можна цей крок пропустити й робити все швидше.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/metromap-tram-x2.mp4#t=0.001" width="2560" height="1477.9676158571" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Розділення на файли по одній сторінці&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Нюанси&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;№1. &lt;/b&gt;Порядок артбордів/сторінок у файлі має завжди зберігатись і співпадає з «маскою». Тож при зміні порядку, треба міняти й маску.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;№2. &lt;/b&gt;При збереженні PDF з Ілюстратора рекомендую прибирати прапорець &lt;i&gt;Preserve Illustrator Editing Capabilities&lt;/i&gt;. Так при розділенні PDF у файлі не буде нічого, що було поза потрібного артборду. Якщо ж цей прапорець увімкнутий, то навіть якщо ви бачитиме у прев’ю лише один артборд, все одно при відкритті файлу в Ілюстраторі в ньому будуть всі артборди й об’єкти, що були в оригінальному AI-файлі.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://blog-archive.alexkolodko.com/pictures/ai-save-pdf-settings.png" width="1436" height="1182" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Налаштування при збереженні PDF&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;№3. &lt;/b&gt;Як і з будь-якою автоматизацією її треба уважно перевірити, коли створюєте. Наприклад, можна помилково вказати не ті сторінки в «масці» і файл нарізатиметься неправильно.&lt;/p&gt;
&lt;h2&gt;Бонус №1: запуск скрипку одразу в теці&lt;/h2&gt;
&lt;p&gt;Щоб ще прискорити процес і навіть не запускати консоль, то можна зібрати виконавчий файл .command, який запускатиме все в наявній теці. &lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

# Change directory to be where the command is.
cd &amp;quot;$(cd &amp;quot;$(dirname &amp;quot;$0&amp;quot;)&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp; pwd)&amp;quot;
 # Run script with arguments
bash pdf-splitter.sh metromap_tram_v1.12.pdf Metromap-Tram-Range.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Єдина маніпуляція, яку треба зробити — дати системі права на виконання скрипту в нашій теці:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod u+x splitter.command&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Таким чином у теку копіюються сам bash-скрипт, маска .txt, вхідний .pdf та у command файлі замінюються значення. Тепер просто зберігаєте PDF, запускайте файл, п’єте каву ☕️, готово.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/command-file-x2.mov#t=0.001" width="2560" height="1469.3914014517" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт упакований у виконавчий файл&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Бонус №2: артборди в AI → «маска»&lt;/h2&gt;
&lt;p&gt;Якщо ви називали артборди в Ілюстраторі так, як би ви хотіли мати готові файли, то можна теж це використати і скриптом вже в самому AI зберегти всі назви артбордів, як «маску» у текстовому файлі. Знову ChatGPT запропонував доволі простий скрипт, що робить на робочому столі готовий txt-файл з маскою.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/ai-artboards-to-txt-x2.mp4#t=0.001" width="2560" height="1470.8207705193" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Робота скрипта&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Трохи допиляв, що він робив одразу потрібний вигляд:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;// Function to export artboard names to a text file
function exportArtboardNames() {
    var doc = app.activeDocument;
    var artboards = doc.artboards;
    var file = new File(&amp;quot;~/Desktop/artboard_names.txt&amp;quot;);
    file.open(&amp;quot;w&amp;quot;);

    for (var i = 0; i &amp;lt; artboards.length; i++) {
        var artboard = artboards[i];
        var artboardName = artboard.name;
        file.writeln(&amp;quot;&amp;quot; + (i + 1) + &amp;quot;=&amp;quot; + artboardName);
    }

    file.close();
    alert(&amp;quot;Artboard names exported to ~/Desktop/artboard_names.txt&amp;quot;);
}

// Run the exportArtboardNames function
exportArtboardNames();&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Напевно було б можна написати скрипт саме для Ілюстратора, який би з «маскою» зберігав певні артборди, але всі подібні скрипти в Adobe Illustrator працюють доволі повільно. Тому найшвидше створювати конвеєр іншими інструментами.&lt;/p&gt;
&lt;h2&gt;Бонус №3: зробити зі скрипта окрему cli-програму (Mac OS)&lt;/h2&gt;
&lt;p&gt;Копіювати скрипт у кожну теку не зручно, тож можна піти далі і зробити з цього скрипта cli-програму, яку можна буде викликати просто у певній теці одразу з терміналу (описав як зробити це у Mac OS, але думаю у Windows це так само можливо; якщо хтось напише як це зробити, то додам у статтю).&lt;/p&gt;
&lt;p&gt;Для цього модифікуємо спочатку сам скрипт. У першому рядку міняємо шлях до bash:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/usr/local/bin/bash

input_file=$1
data_file=$2

# Read page ranges and custom names from the external file into a single array. Requaire bash 4.0
readarray -t page_data &amp;lt; &amp;quot;$data_file&amp;quot;

# Loop through the array and split the PDF
for data in &amp;quot;${page_data[@]}&amp;quot;; do
    IFS=&amp;quot;=&amp;quot; read -r range custom_name &amp;lt;&amp;lt;&amp;lt; &amp;quot;$data&amp;quot;
    output_file=&amp;quot;${custom_name// /_}.pdf&amp;quot;  # Replace spaces with underscores in the custom name
    pdftk &amp;quot;$input_file&amp;quot; cat $range output &amp;quot;$output_file&amp;quot;
    echo &amp;quot;$output_file — Done&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Потім краще прибрати розширення і назвати файл так, як ви будете викликати команду. У моєму випадку — &lt;i&gt;pdfsplitter&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Далі скопіювати файл у директорію /&lt;i&gt;usr/local/bin&lt;/i&gt;, можна одразу в терміналі:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo cp pdfsplitter /usr/local/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Тепер можна у терміналі викликати нашу команду. Якщо ж при цьому буде відображатись помилка доступу, на кшталт, «&lt;i&gt;zsh: permission denied: pdfsplitter&lt;/i&gt;», то треба дати системі дозвіл використати нашу програму. Наприклад, командою:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod 755 /usr/local/bin/pdfsplitter&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Відтепер ви самі додали програму у термінал і її можна запускати у будь-якій теці, не копіюючи туди скрипт.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;video src="https://blog-archive.alexkolodko.com/video/script-as-cli-program-x2.mp4#t=0.001" width="2560" height="1470.8207705193" controls alt="" /&gt;

&lt;div class="e2-text-caption"&gt;Скрипт, як cli-програма&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;hr&gt;&lt;br /&gt;
Завантажити скрипти:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/zpdpqvcjau4ps7qaoqn9b/pdf-splitter.sh?rlkey=nsgiia85dj5noveqgoab3o9hz&amp;dl=0"&gt;pdf-splitter.sh&lt;/a&gt; — розділювач PDF&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/sequwpl5crthcnsyb8pfn/artboard-names-to-file.jsx?rlkey=0eysee0w68fa99c8yg9vpu4p4&amp;dl=0"&gt;artboard-names-to-file.jsx&lt;/a&gt; — назви артбордів AI у TXT файл&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/scl/fi/303ikqdr93bt0ypzwgzet/splitter.command?rlkey=7uj309zmg2ijodxpqr42zx1qo&amp;dl=0"&gt;splitter.command&lt;/a&gt; — приклад виконавчого файлу запуску скрипта; має розміщуватись в одній теці з маскою та pdf-splitter.sh.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;hr&gt;&lt;/p&gt;
&lt;div&gt;&lt;div style="float: left;"&gt;&lt;p&gt;&lt;span style="font-weight:bold; font-size: 3em"&gt;&lt;b&gt;₴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div style="padding: 1em 0 0 4em"&gt;&lt;p&gt;Якщо вам було цікаво та корисно, можете пригостити мене кавою ☕️: картка Монобанку: &lt;tt&gt;4441114450427339&lt;/tt&gt; або &lt;a href="https://send.monobank.ua/5jVrTaRziu"&gt;через сайт&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>


</channel>
</rss>