我正在使用带有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);
虽然使用的字体大小为10(源自cFont
),但在创建的PDF中未观察到字体jigsaw.otf(并且更改此值会控制在此处替换的Helvetica字体大小)。
我的最终目标是嵌入所有字体。这意味着要么(1)嵌入jigsaw.otf以使Helvetica看起来不嵌入,或者(2)嵌入Helvetica并忘记使用jigsaw.oft。两者都可以接受,只要我可以控制JFreeChart图表中使用的字体大小。
怎么做(最简单的方法)?
iText第2版14.5.2“将文本绘制到PdfGraphics2d”中有一节,但我相信这是在现有图形中添加文本,而不是将JFreeChart使用的文本嵌入其图表中。如我错了请纠正我。相当困惑。希望有人可以提供一个简单的例子。
答案 0 :(得分:2)
在iText的第二版第二版中找到了我自己的问题的答案,列出了14.20“Text2ToPdf1.java”。
要注意的一个问题是使用Font
类用于java的AWT与iText - 它们都共享相同的Font类名,因此请务必将它们组织在您的代码中(例如链接的{ {1}} Font
{1}} import java.awt.Font;
点{1}}。{1}}我在下面的代码中包含了路径com.itextpdf.text.Font
以避免混淆:
java.awt.Font
这样,字体始终嵌入到所有JFreeChart对象的最终PDF中。
感谢布鲁诺写的一本好书! http://itextpdf.com/examples/iia.php?id=254