iText - 图像边框宽度根据图像变化

iText - Image border width changes based upon image

我正在为 .pdf 文档中的各种图像添加边框。边框都具有相同的宽度,但在 .pdf 中边框具有不同的宽度。随着边框宽度的增加,它更加明显。

此外,有没有办法将边框移到图像外部,使其不使用图像 class 的方法覆盖任何图像?我意识到我可以先放一个填充的矩形,然后将图像作为选项添加到矩形的顶部。只是想知道这是否可以使用图像 class.

中的方法来完成

这是代码片段

    magazine.open();

    canvas = pdfw.getDirectContent();

    image = Image.getInstance("a.JPG");

    image.setBorder(Rectangle.BOX);     
    image.scaleAbsolute(200,200);       
    image.setBorderWidth(50);
    image.setAbsolutePosition(50,10);
    //canvas.addImage(image);       
    magazine.add(image);


    image = Image.getInstance("b.jpg");

    image.setBorder(Rectangle.BOX);     
    image.scaleAbsolute(200,200);       
    image.setBorderWidth(50);
    image.setAbsolutePosition(50,230);
    //canvas.addImage(image);       
    magazine.add(image);

恐怕您将不得不使用您描述的解决方法。

定义图像边框的方法有两种:

image.setUseVariableBorders(false);

这是默认设置。这就是您所拥有的(即使您没有显式调用该方法)。

在这种情况下,边框的粗细分布方式是一半线宽在矩形内部,一半线宽在矩形外部。也许这就是导致您注意到的差异随着边框宽度的增加而更加明显的原因。

然后是:

image.setUseVariableBorders(true);

现在边框将绘制在图像所需区域内部。这对于 tablesPdfPCellImage 都是 Rectangle class 的子class 很有用,其中这些方法已定义),但我担心它对 images.

的情况没有帮助

所以最好的办法是使用变通方法添加边框。