java - 使用 iText 将\DropDown 组件滚动到 PDF

标签 java pdf export itext

让我解释一下我真正想要的:

我已成功使用 iText 库将 JPanel 及其所有组件导出为 PDF。

但是我遇到了一些问题。我想使用 iText 将 JScrollPane 导出为 PDF...这可能吗?嗯,从技术上来说......因为它对我有用......但是我的 JScrollPane 实际上是滚动的......那么我如何将 JScrollPane 导出到 PDF 并保留 JScrollPane 的属性。我知道 pdf 文档确实支持这一点,正如我所看到的那样。

请帮忙... 我不确定您实际上是否需要任何代码...

我的做法是将 JPanel 转换为图形,然后将其导出为 pdf

最佳答案

pdf PDF 中唯一滚动的是列表字段。如果您可以将 JScrollPane 的内容硬塞到字符串列表选项中,那就太好了。如果不是的话...不太好。

嵌入式闪存

这意味着将 JScrollPanel 转换为 PDF,然后将该 PDF 转换为 Flash(带有滚动条)并将该 Flash 嵌入到 PDF 中。呃,但是应该可以。

嘿!

按钮和 JavaScript

您可以将按钮的外观设置为模板(“图标”)。您可以在按钮的范围内调整图像的缩放和对齐方式(垂直和水平)。如果你可以在javascript中调整这种对齐方式,你就可以模拟滚动条。是的!

var fld = this.getField("myButtonField");
fld.buttonAlignX += foo; // a percentage
fld.buttonAlignY -= bar; // ditto

我建议使用 PushbuttonField 来构建所有这些东西,一个用于每个控件,一个用于 JScrollPanel。您将面板的滚动行为设置为“从不”,并将初始图标对齐设置为合理的(我想是“顶部”)。

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在向上和向下箭头之间制作比例 slider 。我认为您不支持拖动。

丑陋的缩放

要保留所有数据,一种不太美观的替代方案是将滚动面板的内容以完整尺寸、未剪辑的方式绘制到模板中。然后,您可以按比例缩小该模板以适合原始对话框上的可用区域。人们可能必须放大才能看到任何东西,但随后他们就可以看到一切。没有时髦的脚本魔法,只是一个看起来时髦的 PDF 对话框。

关于java - 使用 iText 将\DropDown 组件滚动到 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909809/

相关文章:

javascript - 使用 PHP 将 png/svg 导出为单个 png 文件

timestamp - 使用 SQOOP 将日期时间导出到 TeraData 时出现问题

excel - 从 GridView 导出到 Excel 无法正确显示波斯语

java - 如何在 spring-roo 中定义一个出现在页面上但不持久化的字段

java - 如果响应中有多个值,如何从不同文本字段中的ajax响应中获取值?

java - Network Mapper软件的最佳平台和编程语言

image - 使用 Apache Tika 从 PDF 中提取图像

java - 如何测试内部调用 AWS 服务的代码

r - 更改 rmarkdown 生成的 PDF 中的字体

PDFBox 无法识别 pdf 为不可打印