我正在使用带有 iText 和 JFreeChart 的 Linux 机器。在嵌入图表后,我注意到 Helvetica 字体(未嵌入)现在出现在 PDF 文件中。这是我正在使用的代码:
import com.itextpdf.text.Font;
// create chart using JFreeChart
final XYPlot plot = jchart.getXYPlot();
final LogAxis xAxis = new LogAxis("x axis");
final NumberAxis yAxis = new NumberAxis("y axis");
...
java.awt.Font cFont = new java.awt.Font("/home/fonts/jigsaw.otf",java.awt.Font.PLAIN,10);
xAxis.setLabelFont(cFont); // set axis label font
...
// add chart to PDF
PdfTemplate chart = canvas.createTemplate(chartWidth, chartHeight);
Graphics2D g2d1 = new PdfGraphics2D(chart, chartWidth, chartHeight);
Rectangle2D r2d1 = new Rectangle2D.Double(0,0,chartWidth,chartHeight);
jchart.draw(g2d1, r2d1);
g2d1.dispose();
canvas.addTemplate(chart,document.left(),100);
在创建的 PDF 中未观察到字体 jigsaw.otf,尽管使用了 10 的字体大小(源自cFont
)(并且更改此值确实控制了此处替换的 Helvetica 字体大小)。
我的最终目标是嵌入所有字体。这意味着(1)嵌入 jigsaw.otf 以使 Helvetica 不会显示为未嵌入,或(2)嵌入 Helvetica 并忘记使用 jigsaw.oft。任何一种都可以接受,只要我可以控制 JFreeChart 图表中使用的字体大小。
怎么做(最简单的方法)?
iText book 2nd edition 14.5.2 “Drawing text to PdfGraphics2d”中有一节,但我相信这是向现有图形添加文本,而不是将 JFreeChart 使用的文本嵌入其图表中。如我错了请纠正我。很困惑。希望有人可以提供一个简单的例子,它是如何完成的。