Добавление внешних изображений в PDF с помощью iText
Вопрос
Мне не удается понять, как добавить внешнее изображение (на которое указывает URL-адрес) в PDF-файл с помощью iText.Возможно ли такое?
В спецификации PDF в версии 7.1.5 говорится, что у вас должна быть возможность ссылаться на PDF-файл через URL-адрес, используя спецификацию URL-адреса.Это то, что у меня есть до сих пор:
PdfFileSpecification pdfSpec =
PdfFileSpecification.url(writer, "http://www.someurl.com/test.jpg");
StringBufferInputStream sbis = new StringBufferInputStream("");
PdfStream dict = new PdfStream(sbis, writer);
dict.put(PdfName.FILTER, PdfName.DCTDECODE)
dict.put(PdfName.TYPE, PdfName.XOBJECT);
dict.put(PdfName.SUBTYPE, PdfName.IMAGE);
dict.put(PdfName.WIDTH, new PdfNumber(100));
dict.put(PdfName.HEIGHT, new PdfNumber(100));
dict.put(PdfName.BITSPERCOMPONENT, new PdfNumber(8));
dict.put(PdfName.LENGTH, new PdfNumber(0));
dict.put(PdfName.F, pdfSpec);
PdfIndirectObject img = writer.addToBody(dict);
Я знаю, что мне все еще нужно убедиться, что цветовое пространство добавлено и все такое, но моя главная забота сейчас — это вставить это изображение в тело документа.Я не могу понять, как это сделать...кажется, я не могу получить ссылку на PdfPage, словарь ресурсов или что-то еще.Возможно ли это с помощью iText?
В качестве примечания: это упражнение бесполезно, если мне будет выдано предупреждение системы безопасности, когда представление попытается загрузить изображение.Кто-нибудь знает, так ли это?
Решение
Внешний контент описан в спецификации PDF, но практически ни один PDF-процессор его не поддерживает.На данный момент Acrobat 9 поддерживает эту функцию, но я был бы очень осторожен с этой функцией:Ваши клиенты или пользователи могут не видеть указанный контент.