我正在使用PDFBox 1.8.11。
我正在尝试从(0,0)到(x,y)画一条线。我就是这样的:

PDPageContentStream stream = new PDPageContentStream(document, page, true, false);
stream.setStrokingColor(80, 100, 200);
stream.setLineWidth(1.0f);
stream.drawLine(0, 0, x, y);
stream.close();


几乎所有PDF都适用。但是对于一个PDF,如果我将其追加到流(新PDPageContentStream()的第三个参数)上,则该线是从右下角绘制的,并且超出了页面的右边界。如果我不追加内容流,则线条将按预期绘制。

它仅在此PDF(可能是其他PDF)上发生,我想知道是否遗漏了任何内容。也许我需要在绘制图形之前重置一些坐标系?

附言页面的媒体框从(0,0)开始,并且等于页面大小。

提前致谢

最佳答案

实际上,这篇文章(PDFBox : PDPageContentStream's append mode misbehaving)解释了此问题。

在下面的构造函数中将最后一个参数resetContext设置为true解决了我的问题。

public PDPageContentStream(PDDocument document, PDPage sourcePage,
       boolean appendContent,
       boolean compress, boolean resetContext)
         throws IOException

10-08 16:40