PDFBOX无法找到包含特定字符的像素数

时间:2016-06-29 08:36:19

标签: java pdfbox

我正在使用Alias "/donor" "C:/xampp/htdocs/donor/public" 来创建pdf。在pdfbox中是否有任何函数可以提供像素的字体大小?例如,字母PDFBOXA将采用不同的空格进行打印。显而易见的a将占用比A更多的像素。如何找到应该使用字符或单词的像素数?

1 个答案:

答案 0 :(得分:2)

首先,像素的概念有点模糊。 通常,文档具有一定的大小,例如英寸/厘米等。

PDFBox的javadocs显示PDFont有几种方法可以确定字符串或字符的宽度。 看一下这些页面:

getStringWidth(String text)

getWidth(int code)

getWidthFromFont(int code)

这些单位是Em的1/1000。另请参阅此page

完整的例子:

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();