Я пишу приложение-утилиту с использованием открытого PDF-кода на основе Java с открытым исходным кодом для преобразования PDF-файла, содержащего «Гиперссылку, чтобы открыть mp3-файл», чтобы заменить его звуковым объектом.PDFBox, создающий звуковой объект со ссылкой/ссылкой на внешний mp3-файл или wav-файл
Я использовал API PDFBox, так как он кажется достаточно зрелым, чтобы работать со звуковым объектом. Я мог бы прочитать PDF-файл и найти гиперссылку со ссылкой на mp3. Но я не могу заменить его звуковым объектом. Я создал звуковой объект и связал его с действием, но он не работает. Я думаю, что мне не хватает важной роли, как создать объект Sound, используя объект PDActionSound. Можно ли обращаться к внешнему wav-файлу с помощью API-интерфейса PDFBox?
for (PDPage pdPage : pages) {
List<PDAnnotation> annotations = pdPage.getAnnotations();
for (PDAnnotation pdAnnotation : annotations) {
if (pdAnnotation instanceof PDAnnotationLink) {
PDAnnotationLink link = ((PDAnnotationLink) pdAnnotation);
PDAction action = link.getAction();
if (action instanceof PDActionLaunch) {
PDActionLaunch launch = ((PDActionLaunch) action);
String fileInfo = launch.getFile().getFile();
if (fileInfo.contains(".mp3")) {
/* create Sound object referring to external mp3*/
//something like
PDActionSound actionSound = new PDActionSound(
soundStream);
//set the ActionSound to the link.
link.setAction(actionSound);
}
}
}
}
}
Как создать звуковой объект (PDActionSound) и успешно добавить ссылку?
Спасибо за ваш ответ. Имеет ли метод actionSound метод setItem? какую версию API PDXBox вы используете? –
Я использую 2.0. Я забыл добавить getCOSObject(), извините, я отредактировал свой ответ. (Если ваша проблема будет решена, я позабочусь о том, чтобы в будущем был добавлен метод setSound()). –
Спасибо @ Тилман К сожалению, он еще не решен. У меня есть еще один звуковой объект (добавлено вручную). Когда я воспроизвожу этот звуковой объект, он воспроизводит звук и нажимая на программно созданную звуковую аннотацию в соответствии с вашим решением, она останавливает воспроизведение звука. Но он не воспроизводит файл, который я прикреплял, используя .. 'PDSimpleFileSpecification fileSpec = new PDSimpleFileSpecification (« D: \ temp.wav »);' Я использую PDXBox 2.0.0 RC3 API –