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

时间:2015-07-31 05:28:18

标签: image itext border

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

另外,有没有办法在图像外移动边框,这样它就不会使用图像类的方法覆盖任何图像?我意识到我可以先填充一个填充矩形,然后将图像添加到矩形顶部作为选项。只是好奇是否可以使用Image类中的方法来完成。

以下是代码段

    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);

1 个答案:

答案 0 :(得分:0)

我担心你必须使用你描述的解决方法。

有两种方法可以为图像定义边框:

image.setUseVariableBorders(false);

这是默认值。这就是你所拥有的(即使你没有明确地调用该方法)。

在这种情况下,边框的厚度以线宽的一半在矩形内部并且线宽的一半在矩形之外的方式分布。也许是因为边界宽度增加导致你注意到的差异更明显的原因。

然后有:

image.setUseVariableBorders(true);

现在边框将在里面绘制图像所需的区域。这对于非常有用(PdfPCellImage都是Rectangle类的子类,其中定义了这些方法),但我担心它不会这样做。在图像的情况下帮助您。

因此,您最好的机会是使用解决方法添加边框。