【问题标题】:Scrolling \ DropDown Components to PDF using iText使用 iText 将 \ DropDown 组件滚动到 PDF
【发布时间】:2011-02-05 21:32:44
【问题描述】:

让我解释一下我真正想要什么:

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

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

请帮忙... 我不确定你是否真的需要任何代码......

我一直在做的方式是将 JPanel 转换为图形,然后将其导出为 pdf

【问题讨论】:

    标签: java pdf export itext


    【解决方案1】:

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

    嵌入式 Flash

    这意味着将您的 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 在向上和向下箭头之间做比例滑块。我不认为你可以支持拖动。

    丑陋的缩放

    保留所有数据的视觉吸引力较小的替代方法是将滚动面板的完整大小(未剪辑)绘制到模板中。然后,您会按比例缩小该模板以适合原始对话框上的可用区域。人们可能需要放大才能看到任何东西,但随后他们可以看到一切。没有时髦的脚本魔法,只是看起来很时髦的 PDF 对话框。

    【讨论】:

    • 嘿...感谢您的快速响应...我知道那是什么类型的 pdf 表单...它是 FDF...是否可以改用 itext 的库或将对话框的内容另存为 FDF 的其他方式?
    • 我已经进行了一些搜索,似乎我必须创建一个 FDF 文档...使用 itext 的组件,例如文本字段等等...唯一的事情是...我'我只是一个初学者的java程序员......而且......我不想在不知道结果将完全是我想要的情况下进入这个,即PDF表单:任何人有什么建议吗?在此先感谢...
    猜你喜欢
    • 2010-09-30
    • 2020-11-29
    • 1970-01-01
    • 2017-12-19
    • 2013-04-13
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多