2011-04-28 224 views
0

我:的Java iText的图片位置

Image i = Image.getInstance("tabelka.png"); 
     i.scalePercent(25, 25); 
    for(int i=0; i<= 5; i++) 
    { 
     doc.add(i); 

     content.moveTo(50, ??);////// <-------------- HOW TO CHECK THE Y POSITION 
     content.showText("skowron-line"); 
    } 

我想设置图像右上角的文字。我怎么做?

EIDT: 后的想念小时,我发现肮脏的解决方案:

Image img = Image.getInstance("tabelka.png"); 
img.scalePercent(25, 25); 
float start = x; 
for(int i =1; i<= 5; i++) 
{ 
    start = (x - (img.getHeight() * 0.25f) * i); 
} 

如果ü知道更好的解决方案让我知道。

+0

这是一个pdf文件,doc是'Document doc = new Document(PageSize.A4);' – 2011-04-28 10:08:50

回答

0

要知道给定元素在页面上的哪个位置,您需要为其指定一个通用标记并在您的PdfWriter上注册PdfPageEvent

要在特定位置绘制文本,您必须直接将其绘制到PdfContentByte。请注意,如果您仍然可以创建段落并致电ColumnText.showTextAligned(),则“直接”不是那么直接。

下到具体

举个Image一个通用的标签,你必须在一个块包装它:

Chunk imgChunk = new Chunk(img, 0, 0); 
imgChunk.setGenericTag("imgTag"); 

然后你建立一个PdfPageEvent处理器与onGenericTag回调将吸引你的文字:

myPdfWriter.setPageEvent(new PdfPageEventHelper() { 
    public void onGenericTag(PdfWriter writer, Document doc, Rectangle chunkRect, String tag) { 
    if ("imgTag".equals(tag)) { 
     // Draw your text into that rect. 
     ColumnText.showTextAligned(writer.getOverContent(), Element.ALIGN_LEFT, paragraph, 
     chunkRect.getLeft() + someOffsetX, chunkRect.getTop() - someOffsetY, 0f); 
    } 
    } 
}); 

PdfPageEventHelper是一个空的实现PdfPageEvent接口。我们重写我们关心的方法,然后离开我们去。