【发布时间】:2014-07-28 08:47:09
【问题描述】:
我有一个 pdf 坐标 (x, y) 作为输入。我需要在给定的输入坐标处绘制一个字符串[例如:- (x,y)=(200,250)]。我正在使用 pdfbox ,当我使用以下方法 moveTextPositionByAmount 时,我没有得到确切的位置。即使我尝试过 moveTo()。请帮助我如何在确切位置绘制字符串?
PDPageContentStream contentStream = new PDPageContentStream(document, page,true,true);
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.moveTextPositionByAmount(xindex, yindex);
contentStream.setNonStrokingColor(color);
contentStream.drawString(comment);
contentStream.stroke();
contentStream.endText();
谢谢。
【问题讨论】:
-
你期望在给定的位置是什么? PDF 将该位置解释为文本的基线。
-
我想在那个位置画一个字符串,当我尝试执行上面的代码时,它绘制的文本与原始文本相比变化很大。
-
我发现了一个可能的问题,参见。我的回答如下。如果使用建议的修复程序仍然有问题,请提供由您的代码更改的示例文档来说明问题,并说明您从何处获得这些目标坐标,因为 PDF 中有多个坐标系统在工作,并且一些 PDF 处理器带来了他们的拥有。
-
样本数据 X:-121,Y:-305,W:-262,h:-104。请检查以下链接以获取屏幕截图。 [链接]tinypic.com/r/11b6lap/8.我也在画矩形。当使用相同的坐标时,我成功地获得了准确的输出。我已经使用 contentStream.fillRect(xValue,yValue,wValue,hValue) 来绘制矩形,但是使用 drawstring 时会出现问题。
-
屏幕截图仅在提供 PDF 时才有帮助。此外,您还没有解释从哪里获得这些坐标。它们可能必须进行转换,因为这里可能涉及多个坐标系。