Размножить файлы с последующим переименованием и обработкой

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
Бьюсь над следующей задачкой. Может кто поможет.
Нужно по данным XML файла продублировать выборочно входящие в в.ф. pdf файлы, переименовать и провести над ними операцию (повернуть на 90/180/270гр).

Допустим на входе у меня файла:
A.pdf
B.pdf
print.xml

Структура xml файла:
XML:
<Files>
    <File ID="1" Angle="0">A.pdf</File>
    <File ID="2" Angle="180">A.pdf</File>
    <File ID="3" Angle="0">B.pdf</File>
    <File ID="4" Angle="90">B.pdf</File>
</Files>

На выходе нужно получить файлы с именем [ID]_[file].pdf (т.е. 1_A.pdf , 2_A.pdf , 3_B.pdf , 4_B.pdf)
При этом, согласно XML файла, файл 2_A.pdf нужно повернуть на 180гр, а 4_B.pdf на 90
 

baraka

Участник
Сообщения
193
Реакции
90
А если по теме, тебе нужно создать две петли:
Первая петля отрабатывает входящие pdf
Вторая петля сопоставляет pdf с твоим xml
 
Последнее редактирование модератором:

romyk

10 лет на форуме
Сообщения
1 353
Реакции
247
А если по теме, тебе нужно создать две петли:
Первая петля отрабатывает входящие pdf
Вторая петля сопоставляет pdf с твоим xml
Вы это хотите сделать внутри workflow, или внутри скрипта? Или два в одном?
 
Последнее редактирование модератором:

ACTPOHOM

12 лет на форуме
Сообщения
2 981
Реакции
1 133
@Spirit412
Можно разбить XML на кучку XML. ставишь data splitter
потом читаешь из разбитых XML данные в WP ID File_name Angle.
Потом селектишь File_Name делаешь ему copy.move c именем [wfp.id]_[wfp.File_name] и поворачиваешь на нужный угол удобным тебе способом через роутеры и разные углы разные тикеты или как умеешь
 
  • Спасибо
Реакции: Spirit412

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
@Spirit412
Можно разбить XML на кучку XML. ставишь data splitter
потом читаешь из разбитых XML данные в WP ID File_name Angle.
Потом селектишь File_Name делаешь ему copy.move c именем [wfp.id]_[wfp.File_name] и поворачиваешь на нужный угол удобным тебе способом через роутеры и разные углы разные тикеты или как умеешь
Да, что-то примерно такое и планирую делать.
Только зачем разбивать XML на много мелких XML? Можно использовать смартнейм с xpath с нужным условием и счётчиком циклов.
Или это обязательно если data splitter используешь?

Выбор файлы по условию... Вот в этих регулярных выражениях я очень не силён. Потому "затык" в выборе файлов по условию.
Буквально вчера от тебя получил занятнейшую книженцию по регулярным выражениям. На освоение уйдёт какое-то время.
Если к этому времени на форуме появится рабочее решение, буду очень благодарен.
 

ACTPOHOM

12 лет на форуме
Сообщения
2 981
Реакции
1 133
куча XML для того, что бы не делать морочные счетчики и циклы. просто пойдут паровозиком после дата сплиттера.
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 891
Реакции
3 458
А эту задачу нужно решить непременно посредством Automation Engine?
 

baraka

Участник
Сообщения
193
Реакции
90
Можно разбить XML на кучку XML. ставишь data splitter
потом читаешь из разбитых XML данные в WP ID File_name Angle.

Так он из этой кучи XML и будет писать данные в ОДИН(ТРИ) wfp.
Соответственно и запишет данные из последнего файла.
 

ACTPOHOM

12 лет на форуме
Сообщения
2 981
Реакции
1 133
@Spirit412
Дата сплиттер как раз делит поток данных, и wp становится привязан не к группе входных файлов а к каждому отдельно.я этим пользуюсь давно и похожие задачи у меня реализованы. У меня вообще обрабатываются довольно сложные задачи посредством стандартных тикетов.
 

Вложения

  • Screen Shot 2019-02-22 at 16.26.35.png
    Screen Shot 2019-02-22 at 16.26.35.png
    227.6 КБ · Просм.: 298

Spirit412

Топикстартер
15 лет на форуме
Сообщения
870
Реакции
128
@Spirit412
Можно разбить XML на кучку XML. ставишь data splitter
потом читаешь из разбитых XML данные в WP ID File_name Angle.
Потом селектишь File_Name делаешь ему copy.move c именем [wfp.id]_[wfp.File_name] и поворачиваешь на нужный угол удобным тебе способом через роутеры и разные углы разные тикеты или как умеешь
Я в самом начале пытался всё "циклами" со счётчиком сделать.
Куча тикетов, смартметки с скриптами... так толком не заработало как надо. Скорре всего в коллекторах и сплиттерах немного намудрил.
116155

Всё решилось просто (по примеру Астранома):
116156

Собственно для чего нужно?
Есть WF на спуск этикеток по штампу (тикет Create CAD Sheet). Всё бы ничего, но бывает необходимость один ручей относительно другого голова-к-голове сделать. И т.п.
Дизайнер в экселе табличку оформляет примерно такого вида:
116157

Сама таблица генерируется по данным из другого экселевского файла с данными по штампам (размеры, дисторсии, количество ручьев и т.д.) Это не так сложно на vba сделать. Проще даже к файлу БД от акцесса подключиться.

Из экселя, АЕ генерит по vba XML файл со всеми данными из которого через Map data я делаю два файла:
Первый для обработки файлов:
XML:
<Files>
    <File ID="1" Angle="0">A.pdf</File>
    <File ID="2" Angle="180">A.pdf</File>
    <File ID="3" Angle="0">B.pdf</File>
    <File ID="4" Angle="90">B.pdf</File>
</Files>
Второй для спуска:
XML:
<JOBS>
    <JOB>
         <FileName>1_A.pdf</FileName>
       <Quantity>4</Quantity>   
    </JOB>
    <JOB>
         <FileName>2_A.pdf</FileName>
       <Quantity>4</Quantity>   
    </JOB>
    <JOB>
         <FileName>3_B.pdf</FileName>
       <Quantity>4</Quantity>   
    </JOB>
    <JOB>
         <FileName>4_B.pdf</FileName>
       <Quantity>4</Quantity>   
    </JOB>
</JOBS>

Вот собственно и всё.
Надеюсь, кому то поможет.
 
  • Спасибо
Реакции: Fragarach и ACTPOHOM