Пакетные преобразования в PDF

Статус
Закрыто для дальнейших ответов.

mvlad123

Топикстартер
12 лет на форуме
Сообщения
167
Реакции
95
Добрый день. Необходимо установить метаданные в более чем 1000 PDF-файлах. Есть файл с данными для метаданных (название, автор, ключевые слова), где каждая строка имеет тот же код, что и файл PDF. Например, файл PDF - 12553.pdf. В файле info.txt есть соответствующая строка 12553#название#автор#ключевик. Есть ли готовое решение для такой процедуры? Ручная замена - достаточно долго, да и pdf-файлов вскоре будет уже около 6000. Исходная программа верстки - тоже не вариант. Спасибо.
 

ch_alex

Погулять вышел.
15 лет на форуме
Сообщения
8 420
Реакции
2 709
Ответ: Пакетные преобразования в PDF

Мне гугл дал два направления для решения. Но... Один через консольную команду - если правильно оформлять список тэгов, то можно приручить. Второй - через технологию системы 1С.

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

В общем, длительное молчание в этой теме намекает на то, что Вы вначале должны показать сообществу свои находки прежде, чем начнут давать советы.
 

imma

15 лет на форуме
Сообщения
3 089
Реакции
2 185
Ответ: Пакетные преобразования в PDF

Особо не вникал, но посмотрите это.
 

mvlad123

Топикстартер
12 лет на форуме
Сообщения
167
Реакции
95
Ответ: Пакетные преобразования в PDF

Спасибо imma за информацию по PDFTK. Эксперименты проводил несколько дней назад, и они, к сожалению,не увенчались успехом. Получить метаданные удавалось, а вот изменить - нет. При этом текст по-русски записывался как и подобает через unicode. Проще говоря, экспортировал метаданные pdftk в текстовый файл, затем в нем продублировал тексты (простой copy-paste), дал команду на апдейт оригинального pdf. Но ничего не произошло. Старые матаданные остались без изменений.
Также была (и пока есть) идея модифицировать скрипт для размещения PDF в InDesign так, чтобы можно было пакетно создавать публикацию в InDesign, размещать некий PDF-файл, брать метаданные для документа InDesign из файла, экспортировать опять в PDF... и так далее для каждого PDF. Этот вариант, как мне кажется, для меня наиболее просто реализуем.
Тем не менее хотелось узнать, кто-нибудь решал аналогичные задачи? Не хотелось изобретать велосипед. Может быть есть более элегантное решение.
Спасибо.
 

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Пакетные преобразования в PDF

Я попробовал сейчас через autoit, там тоже заносишь без проблем, но оно не сохраняется!
В принципе можно победить через некоторый геммор, но всё это срабатывает как-то через раз (а вернее через азз '))')
 

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Пакетные преобразования в PDF

Короче, чтоб сохранял, нужно посылать как будто с клавы, а не просто ControlSetText. Причем значение, которое посылается, должно отличаться от того, что уже есть в форме (в данном случае посылаем "рукопись", и если там есть "рукопись", то ничего не сохранится).
Вот кидаю то, что у меня заработало (autoit):
Код:
$txt = "рукопись"

Run ("C:\Program Files\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe " & "C:\temp\Graphic1.pdf") 
WinWaitActive("[CLASS:AcrobatSDIWindow]")
Send("!f")
send("r")


WinWaitActive("Document Properties")
ControlFocus("[CLASS:#32770]", "", "RICHEDIT50W1") 
send($txt) ; как с клавы

ControlSetText("[CLASS:#32770]", "", "RICHEDIT50W2", "Афтар жжёт")
ControlSetText("[CLASS:#32770]", "", "RICHEDIT50W4", "жжжжжжж, вввввв, ццццццццц")
Sleep(1000)

ControlClick("[CLASS:#32770]", "", "Button5")
Send("!f")
Send("c")
WinWaitActive("Adobe Acrobat")
Send("y")

Разумеется CLASS:#32770, RICHEDIT50W1--4, Button5 и т.п. у всех могут быть разными. Это можно без труда посмотреть через Au3Info.exe.
А вот открытие меню Send("!f") send("r") или закрытие файла, может не сработать из-за различий раскладки клавиатуры и т.п. Но это autoit. Оно более-менее стабильно работает только на компе создателя скрипта.
 
Статус
Закрыто для дальнейших ответов.