gpt4 book ai didi

java - 使用 Itext 更改 PDF 的方向

转载 作者:行者123 更新时间:2023-11-29 09:53:47 25 4
gpt4 key购买 nike

我已经在这个链接的帮助下创建了 pdf 和图表 http://viralpatel.net/blogs/generate-pie-chart-bar-graph-in-pdf-using-itext-jfreechart/ .

package net.viralpatel.pdf;

import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.io.FileOutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.DefaultFontMapper;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;

public class PieChartDemo {
public static void main(String[] args) {
//TODO: Add code to generate PDFs with charts
writeChartToPDF(generateBarChart(), 500, 400, "C://barchart.pdf");
writeChartToPDF(generatePieChart(), 500, 400, "C://piechart.pdf");
}

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();
PdfContentByte contentByte = writer.getDirectContent();
PdfTemplate template = contentByte.createTemplate(width, height);
Graphics2D graphics2d = template.createGraphics(width, height,
new DefaultFontMapper());
Rectangle2D rectangle2d = new Rectangle2D.Double(0, 0, width,
height);

chart.draw(graphics2d, rectangle2d);

graphics2d.dispose();
contentByte.addTemplate(template, 0, 0);

} catch (Exception e) {
e.printStackTrace();
}
document.close();
}

public static JFreeChart generatePieChart() {
DefaultPieDataset dataSet = new DefaultPieDataset();
dataSet.setValue("China", 19.64);
dataSet.setValue("India", 17.3);
dataSet.setValue("United States", 4.54);
dataSet.setValue("Indonesia", 3.4);
dataSet.setValue("Brazil", 2.83);
dataSet.setValue("Pakistan", 2.48);
dataSet.setValue("Bangladesh", 2.38);

JFreeChart chart = ChartFactory.createPieChart(
"World Population by countries", dataSet, true, true, false);

return chart;
}

public static JFreeChart generateBarChart() {
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
dataSet.setValue(791, "Population", "1750 AD");
dataSet.setValue(978, "Population", "1800 AD");
dataSet.setValue(1262, "Population", "1850 AD");
dataSet.setValue(1650, "Population", "1900 AD");
dataSet.setValue(2519, "Population", "1950 AD");
dataSet.setValue(6070, "Population", "2000 AD");

JFreeChart chart = ChartFactory.createBarChart(
"World Population growth", "Year", "Population in millions",
dataSet, PlotOrientation.VERTICAL, false, true, false);

return chart;
}

现在如何将 pdf 的方向从 prtrait 更改为横向?

最佳答案

当您像这样创建一个 Document 对象时:

Document document = new Document();

您告诉 iText 使用纵向创建包含 A4 格式页面的文档。您可以添加一个 Rectangle 对象作为 Document 构造函数的参数,以创建包含您想要的任何大小的页面的文档。

您还可以使用 PageSize 类来使用预定义的格式。例如:如果您想横向使用 A4 页面,您可以使用:

Document document = new Document(PageSize.A4.rotate());

download the free eBook "The ABC of PDF"了解更多信息。

关于java - 使用 Itext 更改 PDF 的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23381148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com