Java の PDF ファイルに、ラベル付きの積み上げ棒グラフを示す 2 つのグラフを描画したいと思います。グラフへの入力用に Mongodb からデータを取得します。どうやってするか?
4 に答える
JFreechart と pdfbox を使用して、私が一度作成したレポートに対してあなたが要求していることと同様のことを行いました。円グラフの作成は次のとおりです。
public class PieChartExample {
public static void main(String[] args) {
// Create a simple pie chart
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("Chrome", new Integer(42));
pieDataset.setValue("Explorer", new Integer(24));
pieDataset.setValue("Firefox", new Integer(24));
pieDataset.setValue("Safari", new Integer(12));
pieDataset.setValue("Opera", new Integer(8));
JFreeChart chart = ChartFactory.createPieChart3D(
"Browser Popularity", // Title
pieDataset, // Dataset
true, // Show legend
true, // Use tooltips
false // Configure chart to generate URLs?
);
try {
ChartUtilities.saveChartAsJPEG(new File("C:\\Users\\myname\\Desktop\\chart.jpg"), chart, 500, 300);
} catch (Exception e) {
System.out.println("Problem occurred creating chart.");
}
}
}
上記の例は、ウェブサイトで入手できると思われる pdf からのもので、必要に応じて他のグラフの例があります。保存したら、次のように pdf にインポートできます。
try {
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
document.addPage(page);
InputStream in = new FileInputStream(new File("c:/users/myname/desktop/chart.jpg"));
PDJpeg img = new PDJpeg(document, in);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawImage(img, 10, 300);
contentStream.close();
document.save("pathway/to/save.pdf");
} catch (IOException e) {
System.out.println(e);
} catch (COSVisitorException cos) {
System.out.println(cos);
}
itext も pdf 操作用の優れたライブラリですが、pdfbox はオープンソースである必要があるのに対し、それはある時点で商用です。
幸運を!
任意のグラフ作成ライブラリを使用してグラフを生成し (一部のライブラリの例はこちら)、Itext を使用して PDF に追加できます。
gnujavaplotを使用できます。これは、Java 経由で gnuplot を呼び出すことができる API です。
JasperReportsをご覧ください。PDF やその他のファイル形式でレポートを生成するための Java フレームワークです。JFreeChartライブラリを使用して、さまざまなタイプのチャートのサポートを統合しています。
ただし、JasperReports の学習曲線は非常に急勾配であることを警告しておく必要があります。おそらく、この投稿で提案されているように、代わりにJFreeChart とiTextを組み合わせて使用することを検討できます。