Spring,Java:填写表单并转换为PDF
我正在从事一个SpringMVC项目,在这个项目中,我们有用户为我们注册。现在,每当用户注册时,我们都希望填写用户的姓名、地址等信息,同时保持其中的某些部分不变,如我们的姓名、地址等。填写后,将其转换为PDF格式并附加到电子邮件中。我有文档、pdf、html格式的表格。我已经有了在电子邮件中附加文件的代码Spring,Java:填写表单并转换为PDF,java,forms,pdf,Java,Forms,Pdf,我正在从事一个SpringMVC项目,在这个项目中,我们有用户为我们注册。现在,每当用户注册时,我们都希望填写用户的姓名、地址等信息,同时保持其中的某些部分不变,如我们的姓名、地址等。填写后,将其转换为PDF格式并附加到电子邮件中。我有文档、pdf、html格式的表格。我已经有了在电子邮件中附加文件的代码 在这个问题上,最好的策略是什么?多谢各位 最好的解决方案是将表单作为PDF表单提供(AcroForm技术)。然后,您可以使用PDF库使用从HTML表单检索的数据填写该表单 例如,见: 如果删除
在这个问题上,最好的策略是什么?多谢各位 最好的解决方案是将表单作为PDF表单提供(AcroForm技术)。然后,您可以使用PDF库使用从HTML表单检索的数据填写该表单 例如,见: 如果删除行
stamper.setFormFlatting(true)代码>表单仍将是交互式的。通过添加该行,可以删除所有表单字段(以及交互)
您甚至可以要求人们填写PDF表格,如下所示:
我认为Spring附带了(一个强大的旧版本)iText。您可能需要使用最新版本。有关iText 5和iText 7之间差异的更多信息,请访问官方网站。最好的解决方案是将该表单作为PDF表单提供(AcroForm技术)。然后,您可以使用PDF库使用从HTML表单检索的数据填写该表单
例如,见:
如果删除行stamper.setFormFlatting(true)代码>表单仍将是交互式的。通过添加该行,可以删除所有表单字段(以及交互)
您甚至可以要求人们填写PDF表格,如下所示:
我认为Spring附带了(一个强大的旧版本)iText。您可能需要使用最新版本。有关iText 5和iText 7之间差异的更多信息,请访问官方网站。您可以使用java的JasperReport实用程序。在这种情况下,您需要做的是创建一个标准的Jasper模板(.Jasper扩展名文件),您可以在其中配置任意多个字段,并使用java代码填充报告运行时,同时保持诸如您的名称、地址之类的固定内容,这些内容在您获得用户请求对象时不需要在每个用户请求中都有感觉
Jasper具有在后端填充此模板的功能,它允许您生成pdf运行时,您可以将其附加到您想要的电子邮件响应中
首先,输入JSON:
{
"userName": "Evil Raat",
"details": {
"email": "not_really@test.com"
}
}
然后在iReport Designer中创建一个JSON数据源,并将其指向您的文件(将所有其他细节保留为默认值)
接下来,您可以使用以下jrxml模板将上述JSON呈现到报告中:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="sample" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString language="json">
<![CDATA[]]>
</queryString>
<field name="userName" class="java.lang.String">
<fieldDescription><![CDATA[userName]]></fieldDescription>
</field>
<field name="userEmail" class="java.lang.String">
<fieldDescription><![CDATA[details.email]]></fieldDescription>
</field>
<title>
<band height="200" splitType="Stretch">
<textField>
<reportElement uuid="3b74775b-4555-43c3-bdf2-1677145c8660" x="0" y="31" width="555" height="20"/>
<textElement textAlignment="Right">
<font fontName="Helvetica" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{userName}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="aa6cc7c8-2ca1-4f0f-92e2-c466083daba0" x="0" y="54" width="555" height="20"/>
<textElement textAlignment="Right">
<font fontName="Helvetica" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{userEmail}]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
在上面的代码中,我使用.json文件作为数据源来填充报告。您可以在运行时生成json并在填充报表时提供它。您可以使用java的JasperReport实用程序。在这种情况下,您需要做的是创建一个标准的Jasper模板(.Jasper扩展名文件),您可以在其中配置任意多个字段,并使用java代码填充报告运行时,同时保持诸如您的名称、地址之类的固定内容,这些内容在您获得用户请求对象时不需要在每个用户请求中都有感觉
Jasper具有在后端填充此模板的功能,它允许您生成pdf运行时,您可以将其附加到您想要的电子邮件响应中
首先,输入JSON:
{
"userName": "Evil Raat",
"details": {
"email": "not_really@test.com"
}
}
然后在iReport Designer中创建一个JSON数据源,并将其指向您的文件(将所有其他细节保留为默认值)
接下来,您可以使用以下jrxml模板将上述JSON呈现到报告中:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="sample" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a894078a-929b-4aae-a1d0-46485f0f8835">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString language="json">
<![CDATA[]]>
</queryString>
<field name="userName" class="java.lang.String">
<fieldDescription><![CDATA[userName]]></fieldDescription>
</field>
<field name="userEmail" class="java.lang.String">
<fieldDescription><![CDATA[details.email]]></fieldDescription>
</field>
<title>
<band height="200" splitType="Stretch">
<textField>
<reportElement uuid="3b74775b-4555-43c3-bdf2-1677145c8660" x="0" y="31" width="555" height="20"/>
<textElement textAlignment="Right">
<font fontName="Helvetica" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{userName}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="aa6cc7c8-2ca1-4f0f-92e2-c466083daba0" x="0" y="54" width="555" height="20"/>
<textElement textAlignment="Right">
<font fontName="Helvetica" size="12" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{userEmail}]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
在上面的代码中,我使用.json文件作为数据源来填充报告。您可以在运行时生成json并在填写报告时提供它。看着您的销售代表,您知道如何提问。张贴一些密码。:)@ChiragParmar:还没有代码,伙计,我只是想找到解决这个问题的最佳方法。比如我应该使用HTML表单并填写它或其他什么。看着你们的销售代表,你们知道如何提问。张贴一些密码。:)@ChiragParmar:还没有代码,伙计,我只是想找到解决这个问题的最佳方法。比如我应该使用HTML表单并填写它或其他什么。任何在创建时可视化jasper报告文件的工具。您可以包括eclipse marketplace中提供的jasper插件。安装此插件后,您将能够查看如何基于xml查看您的报告。任何用于在创建时可视化jasper报告文件的工具。您可以包括eclipse marketplace中提供的jasper插件。安装此插件后,您将能够查看如何基于xml查看报告。