我正在使用Alias "/donor" "C:/xampp/htdocs/donor/public"
来创建pdf。在pdfbox中是否有任何函数可以提供像素的字体大小?例如,字母PDFBOX
和A
将采用不同的空格进行打印。显而易见的a
将占用比A
更多的像素。如何找到应该使用字符或单词的像素数?
答案 0 :(得分:2)
首先,像素的概念有点模糊。 通常,文档具有一定的大小,例如英寸/厘米等。
PDFBox的javadocs显示PDFont有几种方法可以确定字符串或字符的宽度。 看一下这些页面:
完整的例子:
float fontSize = 12;
String text = "a";
PDRectangle pageSize = PDRectangle.A4;
PDFont font = PDType1Font.HELVETICA_BOLD;
PDDocument doc = new PDDocument();
PDPage page = new PDPage(pageSize);
doc.addPage(page);
PDPageContentStream stream = new PDPageContentStream(doc,page);
stream.setFont( font, fontSize );
// charWidth is in points multiplied by 1000.
double charWidth = font.getStringWidth(text);
charWidth *= fontSize; // adjust for font-size.
stream.beginText();
stream.moveTextPositionByAmount(0,10);
float widthLeft = pageSize.getWidth();
widthLeft *= 1000.0; //due to charWidth being x1000.
while(widthLeft > charWidth){
stream.showText(text);
widthLeft -= charWidth;
}
stream.close();
// Save the results and ensure that the document is properly closed:
doc.save( "example.pdf");
doc.close();