private void processImage(Phrase phrase, Picture picture, ColumnText column)
{
// TODO Auto-generated method stub
byte[] pictureData = picture.getContent();
float ls = 12.0f;
float multiline = 1.0f;
column.setLeading(ls, multiline);
pictureData = WordToPdfUtils.getMetaFileAsImage(pictureData);
if (pictureData != null) {
try {
Image pic = Image.getInstance(pictureData);
float[] scwh = scaleInlinePicture(picture);
pic.scaleAbsolute(scwh[0], scwh[1]);
phrase.add(new Chunk(pic, 0, 0, true));
column.addText(phrase);
} catch (BadElementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当我将包含内嵌图像的短语添加到ColumnText时,图像在生成的pdf中的上述段落上重叠,如何在使用ColumnText时添加内嵌图像。 使用该问题生成的示例pdf文件的链接如下所示
答案 0 :(得分:0)
请查看ColumnTextChunkImage示例。它添加了一个包含Chunk
包含图像的文本。根据图像的高度自动调整前导:
实现此目的的代码与您的代码非常相似:
Image dog = Image.getInstance(DOG);
Image fox = Image.getInstance(FOX);
Phrase p = new Phrase("quick brown fox jumps over the lazy dog.");
p.add("Or, to say it in a more colorful way: quick brown ");
p.add(new Chunk(fox, 0, 0, true));
p.add(" jumps over the lazy ");
p.add(new Chunk(dog, 0, 0, true));
p.add(".");
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(new Rectangle(50, 600, 400, 800));
ct.addText(p);
ct.go();
我看到的唯一明显区别是你使用:
column.add(phrase);
这种方法并不存在于iText的官方版本中。您可以addText()
(文本模式)或addElement()
(复合模式)。我的猜测是你正在使用非官方版的iText。不幸的是,有些人使用FFF原理创建了iText的分叉:Fork,F ***,Forget。如果您使用的是这样的叉子并且不想被人理解或忘记,请切换到使用官方版本的iText。