Единственное, что прокручивается в PDF-файле PDF, это поле списка. Если вы можете вставить содержимое JScrollPane в список параметров строки, то это здорово. Если нет ... не так здорово.
Встроенная вспышка
Это означает преобразование вашей JScrollPanel в PDF и преобразование этого PDF во Flash (с полосой прокрутки) и встраивание этой вспышки в ваш PDF. Тьфу, но это должно работать.
Эй!
Кнопки и JavaScript
Вы можете установить внешний вид кнопки как шаблон («иконка»). Вы можете настроить масштабирование и выравнивание (как вертикальное, так и горизонтальное) изображения в пределах кнопки. Если вы можете настроить это выравнивание в JavaScript, вы можете имитировать полосы прокрутки. YEP!
var fld = this.getField("myButtonField");
fld.buttonAlignX += foo; // a percentage
fld.buttonAlignY -= bar; // ditto
Я предлагаю использовать PushbuttonField
для создания всего этого, по одному на каждый элемент управления и один для JScrollPanel. Вы устанавливаете поведение прокрутки панели на «никогда», и начальное выравнивание значков должно быть чем-то разумным («top», я думаю).
PushbuttonField panelButton = new PushbuttonField( writer, rect, "panelHackButton" );
panelButton.setTemplate( jpanelTemplate );
panelButton.setLayout( PushbuttonField.LAYOUT_ICON_ONLY );
panelButton.setScaleIcon( PushbuttonField.SCALE_ICON_NEVER );
panelButton.setIconVerticalAdjustment( 1f );
PdfFormField pdfFld = panelButton.getField();
writer.addAnnotation( pdfFld ); // added to the current page
PushbuttonField scrollUpButton = new PushbuttonField( writer, otherRect, "scrollUpButt" ); // he said "butt"
scrollUpButton.setLayout( PushbuttonField.LAYOUT_LABEL_ONLY );
scrollUpButton.setText( "Up" );
pdfFld = scrollupButton.getField();
pdfFld.setAdditionalActions( PdfFormField.AA_DOWN, PdfAction.javaScript( script, writer ) );
writer.addAnnotation( pdfFld );
Если вы хотите получить ДЕЙСТВИТЕЛЬНО фантазию, вы можете даже сделать пропорциональные ползунки между стрелками вверх и вниз с большим количеством сценариев и buttonAlignX и buttonAlignY. Я не думаю, что вы могли бы поддержать перетаскивание.
Гадкий масштаб
Менее привлекательной альтернативой, которая бы сохраняла все ваши данные, было бы рисование содержимого панели прокрутки в полном размере, без клипа, в шаблон. Затем вы пропорционально уменьшите этот шаблон, чтобы он соответствовал доступной области в исходном диалоге. Людям, возможно, придется увеличивать, чтобы увидеть что-нибудь, но тогда они могли видеть все . Никакого волшебного скрипта, просто классный PDF-диалог.