Java 使用Struts2框架生成RTF格式的Jasper报告

Java 使用Struts2框架生成RTF格式的Jasper报告,java,struts2,jasper-reports,rtf,Java,Struts2,Jasper Reports,Rtf,我的案例与案例非常相似: 一切都在工作并生成PDF文件。代码是相似的,configstruts.xml是相似的,或者我们可以说是相同的 我试图生成一个RTF格式的报告。这很简单,对吗?只需替换struts.xml中的一行即可-->RTF API表示: 格式-生成报告的格式。可以在JasperReportConstants中找到有效值 在JasperReportConstants下有“FORMAT\u RTF”。这意味着该值为“RTF”。没有别的了。或我错过什么了吗 系统生成带有“rtf”扩展名

我的案例与案例非常相似:

一切都在工作并生成PDF文件。代码是相似的,configstruts.xml是相似的,或者我们可以说是相同的

我试图生成一个RTF格式的报告。这很简单,对吗?只需替换struts.xml中的一行即可-->
RTF

API表示:

格式-生成报告的格式。可以在JasperReportConstants中找到有效值

在JasperReportConstants下有“FORMAT\u RTF”。这意味着该值为“RTF”。没有别的了。或我错过什么了吗

系统生成带有“rtf”扩展名的pdf文档,而不是真正的rtf格式文档


怎么了?我错过了什么?

我希望您使用的是合适且兼容的罐,包括itextjasper Repot.
RTF
是RTF的唯一更改

这是一个有效的例子

 <package name="default" namespace="/" extends="jasperreports-default">
   <action name="myJasperTest" class="com.common.JasperAction">
    <result name="success" type="jasper">
        <param name="location">/jasper/our_compiled_template.jasper</param>
        <param name="dataSource">myList</param>
        <param name="format">RTF</param>
    </result>
   </action>
 </package>
JasperAction.java的

 package com.common;

 import java.util.ArrayList;
 import java.util.List;
 import net.sf.jasperreports.engine.JasperCompileManager;
 import com.Person;
 import com.opensymphony.xwork2.ActionSupport;

 public class JasperAction extends ActionSupport{

private static final long serialVersionUID = 1L;
private List<Person> myList;

public String execute() throws Exception {

    // Create some imaginary persons.
    Person p1 = new Person(new Long(1), "Patrick", "Lightbuddie");
    Person p2 = new Person(new Long(2), "Jason", "Carrora");
    Person p3 = new Person(new Long(3), "Alexandru", "Papesco");
    Person p4 = new Person(new Long(4), "Jay", "Boss");

    // Store people in our dataSource list (normally they would come from a database).
    myList = new ArrayList<Person>();
    myList.add(p1);
    myList.add(p2);
    myList.add(p3);
    myList.add(p4);

    try {
        JasperCompileManager.compileReportToFile(
                "C:\\Users\\Parth\\workspace1\\serializ\\jasper/our_jasper_template.jrxml", 
                "H:\\jasper/our_compiled_template.jasper");
    } catch (Exception e) {
        e.printStackTrace();
        return ERROR;
    }

    return SUCCESS;
  }

 public List<Person> getMyList() {
    return myList;
 }
}
 package com;

  public class Person {
 private Long id;
 private String name;
 private String lastName;
 public Person() {
    }
  public Person(String name, String lastName) {
    this.name = name;
    this.lastName = lastName;
  }
  public Person(Long id, String name, String lastName) {
    this.id = id;
    this.name = name;
    this.lastName = lastName;
  }
public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}

}
我们的_jasper_template.jrxml

 <?xml version="1.0"?>
 <!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN"      "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
 <jasperReport name="jasper_test">
 <!-- Our fields from the Person class. -->
<field name="name" class="java.lang.String"/>
<field name="lastName" class="java.lang.String"/>
<title>
<band height="50">
  <staticText>
    <reportElement x="0" y="0" width="180" height="15"/>
    <textElement/>
    <text><![CDATA[Struts 2 JasperReports Sample]]></text>
  </staticText>
</band>
</title>
<pageHeader>
<band/>
</pageHeader>
<columnHeader>
 <band height="20">
  <staticText>
    <reportElement x="180" y="0" width="180" height="20"/>
    <textElement>
      <font isUnderline="true"/>
    </textElement>
    <text><![CDATA[NAME]]></text>
  </staticText>
  <staticText>
    <reportElement x="360" y="0" width="180" height="20"/>
    <textElement>
      <font isUnderline="true"/>
    </textElement>
    <text><![CDATA[LASTNAME]]></text>
  </staticText>
  </band>
</columnHeader>
<detail>
  <band height="20">
   <textField>
    <reportElement x="180" y="0" width="180" height="15"/>
    <textElement/>
    <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
  </textField>
  <textField>
    <reportElement x="360" y="0" width="180" height="15"/>
    <textElement/>
    <textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression>
  </textField>
 </band>
</detail>
<columnFooter>
 <band/>
</columnFooter>


您是否尝试过将格式RTF直接放入(而不是RTF)?不,我没有尝试,但我会这样做。可能是因为,它是一个常量==p***静态字符串的名称。
 <?xml version="1.0"?>
 <!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN"      "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
 <jasperReport name="jasper_test">
 <!-- Our fields from the Person class. -->
<field name="name" class="java.lang.String"/>
<field name="lastName" class="java.lang.String"/>
<title>
<band height="50">
  <staticText>
    <reportElement x="0" y="0" width="180" height="15"/>
    <textElement/>
    <text><![CDATA[Struts 2 JasperReports Sample]]></text>
  </staticText>
</band>
</title>
<pageHeader>
<band/>
</pageHeader>
<columnHeader>
 <band height="20">
  <staticText>
    <reportElement x="180" y="0" width="180" height="20"/>
    <textElement>
      <font isUnderline="true"/>
    </textElement>
    <text><![CDATA[NAME]]></text>
  </staticText>
  <staticText>
    <reportElement x="360" y="0" width="180" height="20"/>
    <textElement>
      <font isUnderline="true"/>
    </textElement>
    <text><![CDATA[LASTNAME]]></text>
  </staticText>
  </band>
</columnHeader>
<detail>
  <band height="20">
   <textField>
    <reportElement x="180" y="0" width="180" height="15"/>
    <textElement/>
    <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
  </textField>
  <textField>
    <reportElement x="360" y="0" width="180" height="15"/>
    <textElement/>
    <textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression>
  </textField>
 </band>
</detail>
<columnFooter>
 <band/>
</columnFooter>