Прокрутка \ DropDown компонентов в PDF с помощью iText - PullRequest
1 голос
/ 06 февраля 2011

позвольте мне объяснить, что я на самом деле хочу:

Мне удалось успешно экспортировать мою JPanel вместе со всеми ее компонентами в PDF, используя библиотеку iText.

Однако я столкнулся с небольшой проблемой. Я хотел бы экспортировать JScrollPane в PDF, используя iText ... это вообще возможно? да, технически ... потому что это работает для меня ... однако моя JScrollPane фактически прокручивается ... так, как я могу экспортировать JScrollPane в PDF, сохраняя свойства JScrollPane. я знаю, что PDF документы подтверждают это, как я видел.

Пожалуйста, помогите ... я не уверен, если вам нужен код на самом деле ...

То, как я это делал, - преобразовать JPanel в графическое изображение, а затем экспортировать его в pdf

.

1 Ответ

0 голосов
/ 07 февраля 2011

Единственное, что прокручивается в 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-диалог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...