抚摸矩形背景

时间:2016-02-21 21:49:47

标签: pdfbox

我最近将PDFBox更新为版本2.0.0(用于新的图像方法),但它们改变了填充矩形的方式。

以前你会添加addRect,设置描边颜色并敲击,设置非描边颜色并填充矩形。

现在fillRect已被fill替换,我无法抚摸和填充。填充后调用行为将无效,反之亦然。

现在我被迫再次调用addRect以获得所需的效果。

有关更新方法的任何帮助吗?

1 个答案:

答案 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课程中添加了两项新操作:fillAndStrokefillAndStrokeEvenOddcloseAndFillAndStroke和{{1 }}。因此,现在您也可以使用

closeAndFillAndStrokeEvenOdd