4

私は本当の問題を抱えています。フレーズを含むセルがあり、フレーズの左側に小さなアイコンが必要ですが、各要素が新しい行にレンダリングされています

セルを返すコードは次のとおりです。

var cell = new PdfPCell();
Bitmap bitmap = new Bitmap(21, 21);
Graphics g = Graphics.FromImage(bitmap);

g.Clear(Color.White);

SolidBrush brush = new SolidBrush(colour);
g.FillEllipse(brush, 0, 0, 20, 20);
brush.Dispose();

g.DrawImageUnscaled(bitmap, 0, 0);

g.Dispose();

var imgIcon = iTextSharp.text.Image.GetInstance(bitmap, System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose();
//imgIcon.Alignment = iTextSharp.text.Image.TEXTWRAP | iTextSharp.text.Image.ALIGN_RIGHT;
cell.AddElement(imgIcon);

var phrase = new Phrase(o.ToString(), Report.Fonts.Table);
cell.AddElement(phrase);

//this code scales the image so that it does not fit the cell
foreach (IElement element in cell.CompositeElements)
{
     PdfPTable tblImg = element as PdfPTable;
     if (tblImg != null)
     {
         tblImg.TotalWidth = 10;
         tblImg.LockedWidth = true;
     }
}
return cell;

出力は次のとおりです。

ここに画像の説明を入力

どんな助けでも大歓迎です

--edit: これは、imgIcon の配置プロパティが設定された出力です。

ここに画像の説明を入力

4

2 に答える 2

3

iTextSharpImageオブジェクトは、ブロック要素として表示されます(CSS用語で)。インライン表示を取得Imageするには、を明示的にラップする必要があります。次のようになります。Chunk

PdfPTable table = new PdfPTable(1) {
  TotalWidth = 100, LockedWidth = true, 
  HorizontalAlignment = Element.ALIGN_LEFT
};
PdfPCell cell = new PdfPCell();
Phrase p = new Phrase(new Chunk(image, 0, 0));
p.Add(new Phrase("Print"));
cell.AddElement(p);
table.AddCell(cell);

cell = new PdfPCell();
p = new Phrase(new Chunk(image, 0, 0));
p.Add(new Phrase("A long phrase that will make the PdfPCell wrap it's containing text."));
cell.AddElement(p);
table.AddCell(cell);
document.Add(table);

コードスニペットの結果:

コードスニペットの結果

于 2012-05-25T07:54:43.313 に答える
0

私はこの答えだと思います:

テキストでの画像の配置?

答えがあるかもしれません。画像の配置を設定する必要があります。

....
imgIcon.Alignment = 6;
cell.AddElement(imgIcon);
....
于 2012-05-23T12:43:23.133 に答える