pdfbox showText宽度和高度设置

时间:2018-08-14 17:07:38

标签: fabricjs pdfbox

我正在创建一个基于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();
            }

0 个答案:

没有答案