[PDF] Автоматическая раскладка многостраничных PDF на листы заданного размера

  • Автор темы Автор темы MrDesigner
  • Дата начала Дата начала
Все одной ориентации.

Вот пример (правда, в файле 5 страниц). Таких файлов всегда разное кол-во, и в них разное кол-во страниц. Размер и ориентация каждой страницы одинаковые.
 

Вложения

Верно! Что-то вчера у меня не получалось...
Не верно. Врут итоговые размеры, проверьте. Даже, когда задаёшь Actual size. Пробелы между страницами тоже остаются, даже без Page Border.
 
Итоговый батник верен?

Код:
@echo off
setlocal enabledelayedexpansion

rem === Создаём папку READY, если её ещё нет ===
if not exist READY mkdir READY

rem === 1. Поворот всех страниц исходных PDF на 90 градусов ===
cpdf -rotateby 90 *.pdf -o rotated.pdf

rem === 2. Импозиция: 3x2 страницы без масштабирования на лист 1500x700 мм ===
cpdf rotated.pdf -impose-xy "3 2" -mediabox "0 0 1500 700" -o imposed.pdf

rem === 3. Узнаём, сколько страниц в imposed.pdf ===
for /f "tokens=*" %%a in ('cpdf -pages imposed.pdf') do set PAGES=%%a
echo Всего листов: %PAGES%

rem === 4. Разбиваем imposed.pdf на отдельные страницы sheet_001.pdf ... ===
 - split -o READY/sheet_%%%.pdf

echo ====================================

echo ГОТОВО!
echo Общий сборник: imposed.pdf
echo Отдельные файлы: READY\sheet_001.pdf, sheet_002.pdf, ...

echo ====================================

pause
 
щас, освобожусь, доделаю. Выходная папка (READY) должна существовать. поэтому первой строчкой md READY
 
  • Спасибо
Реакции: MrDesigner
в вашем случае не нужно там никаких -mediabox задавать, он и сам получится
 
  • Спасибо
Реакции: MrDesigner
Вычёркиваем:

Код:
@echo off
setlocal enabledelayedexpansion

rem === Создаём папку READY, если её ещё нет ===
if not exist READY mkdir READY

rem === 1. Поворот всех страниц исходных PDF на 90 градусов ===
cpdf -rotateby 90 *.pdf -o rotated.pdf

rem === 2. Импозиция: 3x2 страницы без масштабирования на лист 1500x700 мм ===
cpdf rotated.pdf -impose-xy "3 2" -o imposed.pdf

rem === 3. Узнаём, сколько страниц в imposed.pdf ===
for /f "tokens=*" %%a in ('cpdf -pages imposed.pdf') do set PAGES=%%a
echo Всего листов: %PAGES%

rem === 4. Разбиваем imposed.pdf на отдельные страницы sheet_001.pdf ... ===
 - split -o READY/sheet_%%%.pdf

echo ====================================

echo ГОТОВО!
echo Общий сборник: imposed.pdf
echo Отдельные файлы: READY\sheet_001.pdf, sheet_002.pdf, ...

echo ====================================

pause
 
Код:
md READY
cpdf *.pdf -merge AND -range landscape -rotate 90 AND -impose-xy "2 3" AND -split -o ready\pg%%%.pdf
pause
Это все. Я кинул в папку исходную 2 копи вашего файла, чтобы нагляднее было
 

Вложения

  • pg1.pdf
    pg1.pdf
    185.7 КБ · Просм.: 19
  • pg2.pdf
    pg2.pdf
    135 КБ · Просм.: 14
  • Спасибо
Реакции: MrDesigner
Итоговый:

Код:
md READY
cpdf *.pdf -merge AND -range landscape -rotate 90 AND -impose-xy "2 3" AND -split -o ready\sheet_%%%.pdf

echo ====================================

echo ГОТОВО!
echo Отдельные файлы: READY\sheet_001.pdf, sheet_002.pdf, ...

echo ====================================

pause
 
Последний вопрос:
сейчас выходные файлы записываются в таком формате:

sheet_0.pdf
sheet_1.pdf
sheet_2.pdf
и т.д.

Как сделать, чтобы нумерация была:

sheet_001.pdf
sheet_002.pdf
sheet_003.pdf
и т.д.
 
Надо смотреть. Попозже. Ну или скачайте Доку на cpdf и посмотрите
 
  • Спасибо
Реакции: MrDesigner
Надо смотреть. Попозже. Ну или скачайте Доку на cpdf и посмотрите
Давай я в личку тебе скину готовые к раскладке файлы? Глянешь, как будет время? Потому как у меня что-то кол-во не сходится...
 
sheet_%03d.pdf
 
Там был какой-то нюанс с некратным количеством листов, я даже с автором это обсуждал. Но навскидку не помню
 
Жаль :(
 
sheet_@E@@@.pdf