Модуль библиотеки ExifTool Perl: как отделить ключевое слово от значения темы

Я использую ExifToolVersion: 9.13 для чтения метаинформации PDF-файла в поля формы, где пользователи могут редактировать значения. С помощью второго perl-скрипта я записываю эти измененные значения обратно в файл.

Это отлично работает, за исключением того, что значения темы отображаются в тегах ключевых слов, а значения ключевых слов - в тегах темы, хотя я пишу новые значения для каждого тега.

$exifTool->SetNewValue($tag[$i], \@keywords, Replace => 1);   
$exifTool->SetNewValue($tag[$i], $file_beschreibung, Replace => 1);   

$exifTool->SetNewValue($data[$i]=>\@keywords, Group0 => 'PDF');
$exifTool->SetNewValue($data[$i]=>$file_beschreibung, Group0 => 'PDF');

Я попытался записать пустое значение в теги XMP, но это не сработало.

$exifTool->SetNewValue($data[$i]=>$leer, Group0 => 'XMP');

Есть ли способ избежать объединения обоих значений?


person ast    schedule 04.09.2017    source источник
comment
Совет: не смешивайте немецкие и английские имена переменных. Следующий парень возненавидит тебя за это. Особенно, если они передадут вашу работу на аутсорсинг в другую страну. ;) Кроме того, $leer пусто, как в пустой строке q{}, или undef?   -  person simbabque    schedule 04.09.2017
comment
Я использую ExifToolVersion: 9.13 Вы имеете в виду Image::ExifTool 9.13?   -  person Borodin    schedule 04.09.2017
comment
Вы действительно используете $tag[$i] как для ключевых слов, так и для описания файла? Если для Replace установлено значение 1, все значения ключевых слов будут отброшены и будет использоваться только описание файла. Вам вообще не следует использовать Replace: он применяется к значениям, ранее установленным SetNewValue, а не к значению в файле. Я ожидал, что они будут записаны в два разных тега. Group0 не является допустимым параметром для SetNewValue; ты наверное имел ввиду Group => 'PDF'. Вы вызывали WriteInfo после установки значений? Вы должны проверить возвращаемые значения SetNewValue: флаг успеха и сообщение об ошибке.   -  person Borodin    schedule 04.09.2017
comment
Пожалуйста, покажите больше вашего кода; по крайней мере весь цикл $i.   -  person Borodin    schedule 04.09.2017
comment
У меня есть цикл по всем тегам, которые я хочу изменить: code my @data = (Автор, Ключевые слова, Дата изменения, Права, Заголовок, Тема); мой $ elemente = @data; мои @groups = $ exifTool- ›GetGroups ($ family); for ($ family = 0; $ family ‹= 3; $ family ++) {foreach my $ group (@groups) {   -  person ast    schedule 05.09.2017


Ответы (1)


Теперь я обнаружил, что мне нужно очистить все XMP-теги

my @data = ("Author","Keywords","ModifyDate","Rights","Title","Subject"); 
my $elemente = @data;

for ($i=0; $i<$elemente; $i++)
{
    if ($i==1)
 {
    if (my $tagname =~ m/^XMP-.*:$data[$i]/)
    {
    $exifTool->SetNewValue($tagname=>'', Group => 'XMP');
    }
    $exifTool->SetNewValue($data[$i]=>\@keywords, Group => 'PDF');
 }
 if ($i==5)
 {
    my $tagname = "XMP-dc:".$data[$i];
    $exifTool->SetNewValue($tagname=>'', Group => 'XMP');
    $exifTool->SetNewValue($data[$i]=>$file_beschreibung, Group => 'PDF'); 
 }
}

Это прекрасно работает. Спасибо за помощь!

person ast    schedule 05.09.2017