Я пытаюсь установить метаданные авторского права в формате PDF с использованием ColdFusion & iText. Adobe ColdFusion 9-11 позволяет получать &, задавая поля Title, Subject, Keywords, Creator & Авторские поля, но не разрешает доступ к свойствам «Дополнительные метаданные». (Это мой первый вопрос SO.)Как установить метаданные в формате PDF с использованием ColdFusion (& iText)
Я нашел потенциальное решение iTextSharp/C# и попытался преобразовать его в CFML, но я не смог определить, как успешно получить доступ к System.IO.MemoryStream() ж/ColdFusion. Я получаю «Не могу найти компонент ColdFusion или интерфейс MemoryStream. Убедитесь, что имя верное и что компонент или интерфейс существует». ошибка и поиск в Интернете не дают никаких результатов.
https://stackoverflow.com/a/6942531/693068
Примечание: Я использую IText, потому что PDF-файлы создаются с помощью ABBYY FineReader. В прошлом я столкнулся с многочисленными проблемами, когда ColdFusion отказывается идентифицировать PDF-файлы, созданные без Acrobat, в качестве достоверных PDF-файлов при использовании isPDFFile().
Любые идеи? Существует ли в настоящее время функциональность и где-то не документировано? Благодарю.
Это работает! (Использование iText намного проще, чем использование метода DDX.) Я пытался определить, что такое MemoryStream(), как оно связано со сценарием и есть ли альтернатива CF/Java. Похоже, это было даже не нужно. Я также использовал «itextpdf» вместо «lowagie». Обновление этих дополнительных полей метаданных не работает, если используется «itextpdf». Благодаря! –
iText претерпела [значительное изменение лицензии несколько лет назад] (https://en.wikipedia.org/wiki/IText#History). ColdFusion поставляется с одной из старых версий, которые обозначаются пакетом «com.lowagie. *». Новые версии, т.е. 5.x, используют «com.itxtpdf. *». Поскольку CF не использует более новую версию, поэтому она не работает. – Leigh
* похоже, что он даже не нужен * Нет, это необходимо. Он используется для хранения метаданных xmp до их добавления в pdf. В приведенном выше примере я использовал 'ByteArrayOutputStream' вместо' MemoryStream'. – Leigh