次のコードを使用すると、1つのイメージしか追加されません。すべてのページに画像&のテキストを追加するオプションはありますか?itextsharpを使用してpdfファイルの各ページのヘッダーにテキストを含むイメージを追加します。
private void AddHeader(文字列ファイル物理パス、文字列nfile) { byte [] bytes = System.IO.File.ReadAllBytes(filephysicalpath); 文字列パス= ConfigurationManager.AppSettings ["Documentheader"] ToString()+セッション["headerImg"]; ストリームinputImageStream =新しいFileStream(path、FileMode.Open、FileAccess.Read、FileShare.Read);
Font blackFont = FontFactory.GetFont("Arial", 12, Font.BOLD, BaseColor.BLACK);
using (MemoryStream stream = new MemoryStream())
{
PdfReader reader = new PdfReader(bytes);
using (PdfStamper stamper = new PdfStamper(reader, stream))
{
int pages = reader.NumberOfPages;
for (int i = 1; i <= pages; i++)
{
string footer = Convert.ToString(Session["Footer"]);
if (Session["Footer"] != null)
{
// Phrase ft = new Phrase(footer, blackFont);
float marginLR = 36;
float marginB = 2;
float footerHeight = 10;
Rectangle pagesize = reader.GetCropBox(i);
if (pagesize == null)
{
pagesize = reader.GetPageSize(i);
}
Rectangle rect = new Rectangle(
pagesize.Left + marginLR, pagesize.Top + marginB,
pagesize.Right - marginLR, pagesize.Top + marginB + footerHeight
);
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);
image.SetAbsolutePosition(rect.Left, rect.Top - image.ScaledHeight);
var pdfContentByte = stamper.GetOverContent(1);
pdfContentByte.AddImage(image);
inputImageStream.Seek(0L, SeekOrigin.Begin);
// ct.AddElement(new PdfPTableHeader (image));
}
}
}
reader.Close();
bytes = stream.ToArray();
}
System.IO.File.WriteAllBytes(filephysicalpath, bytes);
}
ヘッダー画像の高さと幅を変更したい。そのための解決方法はありますか? –
はい、iTextの 'Image'クラスにはいくつかの要因によるスケーリングやいくつかのターゲットディメンションへの適合を可能にするいくつかのメソッドがあります。 – mkl