我正在创建一个基于Web的应用程序,其中您在浏览器上使用pdf注释pdf(使用pdf.js和fabricjs),并使用Apache pdfbox(2.0.x)将注释保存在服务器端(java servlet REST端点)。我可以使用PDPageContentStream的drawImage和showText方法覆盖图像和文本。用户也可以通过选择并拖动角落的注释来缩放注释。通过根据fabricjs设置的scaleX因子调整width参数,可以对drawImage进行适当缩放。但是对于showText我找不到任何缩放文本的选项。我可以调整字体大小,但是无法在角落正确翻译。
关于如何使用PDPageContentStream的showText方法缩放(或更改高度和宽度)并将文本放置在pdf上的任何想法
预先感谢 Prem
PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, true);
scaleX = signObj.get("scaleX").getAsFloat();
scaleY = signObj.get("scaleY").getAsFloat();
annoType = signObjWrapper.get("annoType").getAsInt();
float x_adjusted = (signObj.get("left").getAsFloat()) + page.getCropBox().getLowerLeftX();
float y_adjusted = -(signObj.get("top").getAsFloat()) + page.getCropBox().getUpperRightY();
if (annoType == SIGN) // this annotation is a sign object
{
contentStream.drawImage(pdImage, x_adjusted,
y_adjusted - (signObj.get("height").getAsFloat() * scaleY),
signObj.get("width").getAsFloat() * scaleX, signObj.get("height").getAsFloat() * scaleY);
contentStream.close();
} else if (annoType == TEXT) {
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont(PDType1Font.COURIER,signObj.get("fontSize").getAsInt());
//Setting the position for the line
contentStream.newLineAtOffset(x_adjusted, y_adjusted - (signObj.get("height").getAsFloat() * scaleY));
//Adding text in the form of string
contentStream.showText(signObj.get("text").getAsString());
//Ending the content stream
contentStream.endText();
//Closing the content stream
contentStream.close();
}