我正在使用 Flyingsaucer 生成 PDF。我正在尝试通过实现 ReplacedElementFactory 将图像嵌入到 pdf 中。我可以生成替换为图像的pdf。没问题。
但我想要的是在类中动态设置图像的高度和宽度。我需要将图像缩放到确定的大小。我将找到图像的新缩放高度和宽度,并希望为嵌入的图像设置这些比例。
我可以在从 BlockBox 获取的元素中添加样式属性并更新此元素吗?这行得通吗?我尝试使用 blackBox.setElement,但它不起作用。
有人可以帮忙吗?
编辑:
飞碟谷歌集团的彼得布兰特提出以下建议
在 ReplacedElement 实现中覆盖 getIntrinsicHeight / getIntrinsicWidth。请注意,这些值将在渲染“点”中而不是像素中,因此您可能必须适当地缩放。
但不幸的是,它对我不起作用。我覆盖了飞碟的 ReplaceElement 并返回了高度和宽度。它对我不起作用。我试过的示例代码在这里
public class MyITextImageElement implements ITextReplacedElement
{
private final FSImage fsImage;
private float[] scaledWidthAndHeight = null;
public MyITextImageElement(FSImage image)
{
fsImage = image;
try
{
ITextFSImage itextFSImage = (ITextFSImage) image;
Image itextImage = itextFSImage.getImage();
byte[] imageByteArr = itextImage.getOriginalData();
//Getting scaled image height and width
scaledWidthAndHeight = getScaledWidthAndHeight(imageByteArr);
}
catch (Exception e)
{
//Exception Handling
}
}
@Override
public int getIntrinsicWidth()
{
if (scaledWidthAndHeight != null)
{
return Math.round(scaledWidthAndHeight[0]);
}
return fsImage.getWidth();
}
@Override
public int getIntrinsicHeight()
{
if (scaledWidthAndHeight != null)
{
return Math.round(scaledWidthAndHeight[1]);
}
return fsImage.getHeight();
}
...........
...........
}