createBarChartFunction();
String result;
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("yyyy-MM-dd");
Date today = new Date();
result = formatter.format(today);
String div = jTFAutoDivFuelConsumption.getText();
Document document = new Document(PageSize.A2.rotate()) {
};
try {
File file = new File(div + " (" + result + ").pdf");
boolean fileIsNotLocked = file.renameTo(file);
if (file.exists() && !fileIsNotLocked) {
JOptionPane.showMessageDialog(null, new JLabel("<html><h2><font color='red'>Необходимо закріть файл " + div + " (" + result + " )</font></h2></html>"),
"Ошибка", JOptionPane.INFORMATION_MESSAGE);
} else {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(div + " (" + result + ").pdf"));
document.open();
// add title
final BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\ARIAL.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); //подключаем файл шрифта, который поддерживает кириллицу
Font font20N = new Font(bf, 30, Font.BOLD, BaseColor.BLACK);
Font font20BGreen = new Font(bf, 18, Font.NORMAL, BaseColor.BLUE);
document.add(new Paragraph(" Название графика", font20N));
document.add(new Paragraph(" Отчет создан: " + result, font20BGreen));
PdfContentByte contentByte = writer.getDirectContent();
// add image
com.itextpdf.text.Image image = com.itextpdf.text.Image.getInstance("BarChartFuelUsedPer.png"); // adding chart to report
image.setRotationDegrees(0.0f);
image.scaleAbsolute(1024, 480);
// document.add(new Paragraph("График"));
document.add(image);
// creating the Report
contentByte.saveState();
Graphics2D g2 = contentByte.createGraphicsShapes(2500, 540);
Shape oldClip = g2.getClip();
g2.clipRect(40, 0, 2500, 540);
jTabFuelConsumption.print(g2); // данные с таблички jTabFuelConsumption копирую в файл
g2.setClip(oldClip);
g2.dispose();
contentByte.restoreState();
//creating Table Header of the Report
contentByte.saveState();
Graphics2D g00 = contentByte.createGraphicsShapes(2500, 580);
Shape oldClip00 = g00.getClip();
g00.clipRect(40, 0, 2500, 580);
jTabFuelConsumption.getTableHeader().print(g00);
g00.setClip(oldClip00);
g00.dispose();
contentByte.restoreState();
JOptionPane.showMessageDialog(null, "Отчет создан для : " + div);
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
document.close();
private void createBarChartFunction() {
String vehicleDepartment = jTFAutoDivFuelConsumption.getText();
try {
String sqlFuelMainSum = " SELECT numberAuto, fuelUsedPer FROM fuelConsumption WHERE vehicleCheck =1 and "
+ " divisionAuto ='" + vehicleDepartment + "'";
JDBCCategoryDataset dataset = new JDBCCategoryDataset(ConnectionToAll.ConnectDBToUtils(), sqlFuelMainSum);
JFreeChart chart = ChartFactory.createBarChart("График", "ТС",
"Использование (%)", dataset, PlotOrientation.VERTICAL, false, true, true); // BarChart
BarRenderer renderer = null;
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.white);
plot.setRangeGridlinePaint(Color.black);
//https://stackoverflow.com/questions/1973936/width-... - где искать ответы
//BAR width
renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
renderer.setMaximumBarWidth(.05);
plot.getRenderer().setSeriesPaint(0, new Color(150, 200, 255));
CategoryAxis xAxis = (CategoryAxis) plot.getDomainAxis();
xAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
renderer = new BarRenderer();
final ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
final File file00 = new File("BarChartFuelUsedPer.png");
ChartUtilities.saveChartAsPNG(file00, chart, 1920, 1080, info);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
Хорошо, буду ждать вечера, у меня задача пока намного проще нужно просто вывести мой json читабельном форматеНу, я писал ответ на то, как запихнуть в пдф с графиками. Тогда мой ответ о другом.