我在mysql表的fetch数据中编写代码,并为该值创建图表,并将该图表插入pdf并存储。但我得到了错误。 sql data fetched和pdf也创建但是没有打开,java给出了错误。 我使用jfreechart-1.0.18,itextpdf-5.5.2,jcommon jar文件。我的java代码是..
public static void main(String args[]) throws SQLException {
System.out.println("Enter No");
Scanner sc = new Scanner(System.in);
String no = sc.next();
writeChartToPDF(createChart(no), 550, 400, "test.pdf");
}
public static JFreeChart createChart(String no) throws SQLException {
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
master ms = new master();
String c1 = null, c2 = null, c3 = null, c4 = null;
ms.conn();
ResultSet rs;
PreparedStatement ps;
ps = ms.con.prepareStatement("SELECT c1,c2,c3,c4 FROM chart where id=?");
ps.setString(1, no);
rs = ps.executeQuery();
if (rs.next()) {
c1 = rs.getString(1);
c2 = rs.getString(2);
c3 = rs.getString(3);
c4 = rs.getString(4);
}
System.out.println(c1 + c2 + c3 + c4);
dataSet.setValue(Integer.parseInt(c1), "test", "Test");
dataSet.setValue(Integer.parseInt(c2), "test", "Test");
dataSet.setValue(Integer.parseInt(c3), "test", "Test");
dataSet.setValue(Integer.parseInt(c4), "test", "Test");
dataSet.setValue(Integer.parseInt(c1), "test1", "Test");
dataSet.setValue(Integer.parseInt(c2), "test1", "Test");
dataSet.setValue(Integer.parseInt(c3), "test1", "Test");
dataSet.setValue(Integer.parseInt(c4), "test1", "Test");
JFreeChart chart = ChartFactory.createBarChart(
"Test", "Test", "Test",
dataSet, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot plot = chart.getCategoryPlot();
BarRenderer barRenderer = (BarRenderer) plot.getRenderer();
barRenderer.setSeriesPaint(0, Color.RED);
return chart;
}
public static void writeChartToPDF(JFreeChart chart, int width, int height, String fileName) {
PdfWriter writer = null;
Document document = new Document();
try {
writer = PdfWriter.getInstance(document, new FileOutputStream(
fileName));
document.open();
document.addCreator("Test");
document.addSubject("Data Report");
document.addCreationDate();
document.addTitle("Please Read it");
PdfContentByte contentByte = writer.getDirectContent();
PdfTemplate template = contentByte.createTemplate(width, height);
Graphics2D graphics2d = template.createGraphics(width, height,
new DefaultFontMapper());
Rectangle2D rect = new Rectangle2D.Double(0, 0, width,
height);
chart.draw(graphics2d, rect);
graphics2d.dispose();
contentByte.addTemplate(template, 0, 0);
} catch (Exception e) {
e.printStackTrace();
}
document.close();
}
}