Jasperreport成功生成(JAsperTest.pdf)但有以下异常,但它没有在ID字段中打印任何整数值。它只在ID字段中打印NULL。但jasper工具中的预览显示ID字段中的所有整数值,而不是通过java代码生成的报告。
"PM net.sf.jasperreports.engine.export.PdfGlyphRenderer determinePatchedItext
WARNING: Unpatched iText found, cannot use glyph rendering"
此问题在其他论坛中被提出但未找到解决方案。请帮我解决这个问题。我尝试将itext5.5.0 jar删除到itext 7 jar但导致错误。
lib文件夹中包含的Jar文件:https://imgur.com/lHZR60t
JasperTest.java
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
public class JasperClass {
public static void main(String[] args) throws JRException, IOException {
// Compile jrxml file.
JasperReport jasperReport = JasperCompileManager
.compileReport("C:/repo/JasperTest/Jaspertest.jrxml");
// Parameters for report
Map<String, Object> parameters = new HashMap<String, Object>();
// DataSource
// This is simple example, no database.
// then using empty datasource.
JRDataSource dataSource = new JREmptyDataSource();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
parameters, dataSource);
// Make sure the output directory exists.
File outDir = new File("C:/repo/JasperTest");
outDir.mkdirs();
// Export to PDF.
JasperExportManager.exportReportToPdfFile(jasperPrint,
"C:/repo/JasperTest/Jaspertest.pdf");
System.out.println("Done!");
}
}
JasperTest.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.4.0.final using JasperReports Library version 6.4.1 -->
<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="Jaspertest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="98c6f0de-1e25-4ff3-b982-cfa45f54b507">
<property name="com.jaspersoft.studio.data.sql.tables" value="Y2l0eSAsMTUsMTUsMTFlZThiNTgtMzM2OC00ZmQ3LWEzOTYtY2ZhMTM4MzllMjZhOw=="/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="Dataadaptertest.xml"/>
<queryString language="SQL">
<![CDATA[SELECT ID
FROM city]]>
</queryString>
<field name="ID" class="java.lang.Integer"/>
<group name="ID">
<groupExpression><![CDATA[$F{ID}]]></groupExpression>
</group>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="75" splitType="Stretch">
<staticText>
<reportElement x="100" y="10" width="100" height="30" uuid="fe0a9fb7-deef-4393-a835-7cf9e41b8bef"/>
<text><![CDATA[Test Successfull]]></text>
</staticText>
</band>
</title>
<columnHeader>
<band height="63" splitType="Stretch">
<staticText>
<reportElement x="89" y="33" width="100" height="30" uuid="c2a5e228-a3f1-42fc-8064-688191cb7633"/>
<text><![CDATA[ID]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="46" splitType="Stretch">
<textField>
<reportElement x="89" y="10" width="100" height="30" uuid="126f1743-5bae-4e84-8bc6-9b36c2a808cc"/>
<textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
答案 0 :(得分:0)
问题已解决。现在我可以在报告中看到数据。我按照亚历克斯的说法创建了一个SQL连接。谢谢。我在下面粘贴代码以供参考。 avaCallJasperReport.java。
import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.export.ExporterInput;
import net.sf.jasperreports.export.OutputStreamExporterOutput;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
import net.sf.jasperreports.export.SimplePdfExporterConfiguration;
import conn.ConnectionUtils;
public class avaCallJasperReport {
public static void main(String[] args) throws JRException,
ClassNotFoundException, SQLException {
String reportSrcFile = "C:/repo/JasperTest/Jaspertest.jrxml";
// First, compile jrxml file.
JasperReport jasperReport = JasperCompileManager.compileReport(reportSrcFile);
Connection conn = ConnectionUtils.getConnection();
// Parameters for report
Map<String, Object> parameters = new HashMap<String, Object>();
JasperPrint print = JasperFillManager.fillReport(jasperReport,
parameters, conn);
// Make sure the output directory exists.
File outDir = new File("C:/repo/JasperTest");
outDir.mkdirs();
// PDF Exportor.
JRPdfExporter exporter = new JRPdfExporter();
ExporterInput exporterInput = new SimpleExporterInput(print);
// ExporterInput
exporter.setExporterInput(exporterInput);
// ExporterOutput
OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(
"C:/repo/JasperTest/FirstJasperReport.pdf");
// Output
exporter.setExporterOutput(exporterOutput);
//
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
exporter.setConfiguration(configuration);
exporter.exportReport();
System.out.print("tttt!");
}
}
MySQLconnUtils.Java
package conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLconnUtils {
public static Connection getMySQLConnection()
throws ClassNotFoundException, SQLException {
String hostName = "localhost";
String dbName = "world";
String userName = "root";
String password = "root";
return getMySQLConnection(hostName, dbName, userName, password);
}
public static Connection getMySQLConnection(String hostName, String dbName,
String userName, String password) throws SQLException,
ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Get qq ... ");
String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName;
Connection conn = DriverManager.getConnection(connectionURL, userName,
password);
return conn;
}
}
ConnectionUtils.Java
package conn;
import java.sql.Connection;
import java.sql.SQLException;
public class ConnectionUtils {
public static Connection getConnection() throws SQLException,
ClassNotFoundException {
// Using Oracle
// You may be replaced by other Database.
return MySQLconnUtils.getMySQLConnection();
}
//
// Test Connection ...
//
public static void main(String[] args) throws SQLException,
ClassNotFoundException {
System.out.println("Get connection ... ");
// Get a Connection object
Connection conn = ConnectionUtils.getConnection();
System.out.println("Get connection " + conn);
System.out.println("Done!");
}
}