我最近将PDFBox更新为版本2.0.0(用于新的图像方法),但它们改变了填充矩形的方式。
以前你会添加addRect,设置描边颜色并敲击,设置非描边颜色并填充矩形。
现在fillRect已被fill替换,我无法抚摸和填充。填充后调用行为将无效,反之亦然。
现在我被迫再次调用addRect以获得所需的效果。
有关更新方法的任何帮助吗?
答案 0 :(得分:1)
以前你会添加addRect,设置描边颜色并敲击
...并且这样做会创建无效的PDF!在路径创建的开始(这里:addRect
)和它的绘图(这里:stroke
)之间,只允许额外的路径创建操作,并最终允许剪切路径操作。您在中间设置描边颜色无效。
大多数PDF查看者都没有抱怨这种无效的语法,但它仍然无效......
现在fillRect已被fill替换,我无法抚摸和填充。
fillRect
仍在那里,仅仅被弃用了。因此,你可以看看它的作用:
public void fillRect(float x, float y, float width, float height) throws IOException
{
if (inTextMode)
{
throw new IllegalStateException("Error: fillRect is not allowed within a text block.");
}
addRect(x, y, width, height);
fill();
}
因此,如果你以前做过
setStrokingColor(...);
addRect(...);
stroke();
setNonStrokingColor(...);
fillRect(...);
在PDFBox 1.8.x中,您可以在2.0.0中执行相同操作,或者(不使用弃用的方法)替换最后一行
addRect(...);
fill();
现在我被迫再次调用addRect以获得所需的效果。
但这也是你以前做过的事情!
PS 最近在PDFBox'PDPageContentStream
课程中添加了两项新操作:fillAndStroke
,fillAndStrokeEvenOdd
,closeAndFillAndStroke
和{{1 }}。因此,现在您也可以使用
closeAndFillAndStrokeEvenOdd