2010-08-09 2 views
4

У меня есть отчеты, которые преобразуются в PDF-файлы. В некоторых из этих отчетов отсутствует информация, просто потому, что мы ее не отслеживаем. Я создал еще один PDF-файл с оболочкой отчета и разместил на нем элементы управления вводами. Я хотел бы знать, есть ли способ применить PDF-файл оболочки к конвертированному PDF-файлу, чтобы пользователи могли вводить информацию в эти пустые поля без необходимости распечатывать их и писать вручную? Я сделал это вручную через Adobe Acrobat Pro 9.3, применив сгенерированный PDF к оболочке PDF как Слой. Я сделал столько же, чтобы выложить iTextSharp относительно Слои, но я до сих пор не нашел ничего, что сработало.iTextSharp добавить существующий PDF как слой в другой PDF

Благодарим вас за продвинутый!

+0

Как использовать iTextSharp для «рисования» текстовой информации в «конвертированных» PDF-файлах, а не для совместного использования двух страниц PDF? – 2010-12-08 20:24:45

ответ

2

1) Слои не будут работать с полями. Слои PDF являются частью содержимого страницы. Поля формы, как и все аннотации, плавают над страницей.

2) Сказав это, вы можете скрывать и открывать поля формы, используя Acrobat/Reader JavaScript. «Документ» объект, как правило, «это» в поле и въездных страницах точек, так, чтобы показать данное поле, это просто:

var fld = this.getField("fieldName"); 
fld.hidden = false; 

Есть довольно много различных мест, которые вы можете добавить JS в формат PDF. Различные полевые события, события страницы и события документа. Вы также можете установить действие слоя на некоторый javaScript. Например, вы можете установить действие закладки как javascript вместо действия «перейдите туда».

Обратите внимание, что слои называются «Необязательные группы контента» (OCG) в технологии Tech Tech. Если вы действительно хотите, чтобы создать слой, похоже, что он будет идти-то вроде этого:

// layer implements PdfOCG 
PdfLayer layer = new PdfLayer("MyLayer", writer); 

PdfContentByte cb = getAContentByteFromSomewhere(); 

cb.beginLayer(layer); // takes PDFOCG object 

/* draw stuff to be part of that layer */ 

cb.endLayer(); 

Есть ряд примеров на сайте IText соответствующий «IText в действии, второе издание» (I не платят, автор - друг). The aforementioned examples can be found here.

Это повторяется: поля не могут быть частью OCG (слоя). Однако они могут быть написаны так, как они есть.

Смежные вопросы