为什么当我使用iTextSharp将图像添加到文档时没有显示出来?

本文关键字:文档 显示 添加 iTextSharp 图像 为什么 | 更新日期: 2023-09-27 18:15:49

上下文:我正在打开一个包含AcroForm字段的现有交互式PDF表单。我尝试在PDF表单的矩形字段中添加图像,如下所示:

string path = HttpContext.Current.Server.MapPath("includes");
string newFile = HttpContext.Current.Server.MapPath("Tmp") + "/completed_gray" +".pdf";
string imagepath = HttpContext.Current.Server.MapPath("Tmp");
Document doc = new Document();
try {
    PdfWriter.GetInstance(doc, new FileStream(newFile, FileMode.Open));
    doc.Open();
    iTextSharp.text.Image gif = iTextSharp.text.Image.GetInstance(imagepath + "/CUstomRep_Eng_Col_1_V1.png");
    iTextSharp.text.Rectangle rect = pdfStamper.AcroFields.GetFieldPositions("img_1_space")[0].position;
    gif.ScaleAbsolute(rect.Width, rect.Height);
    gif.SetAbsolutePosition(rect.Left, rect.Bottom);  
    doc.Add(gif);
}
catch (Exception ex) {
    //Log error;
}
finally {
    doc.Close();
}

图片不显示在生成的PDF中

为什么当我使用iTextSharp将图像添加到文档时没有显示出来?

您正在使用我的书中记录的"创建PDF文档的5个步骤"创建文档。

  1. 创建一个Document对象。
  2. 创建PdfWriter实例
  3. 打开文件
  4. 添加内容到文档
  5. 关闭文件

这与您实际想要做的事情相矛盾:我想在由AcroForm字段定义的占位符中添加图像。

为什么你说你想要一件事,做另一件事?难倒我了。可能是因为你不想看文档。

你需要这样写:

  1. 创建PdfReader实例
  2. 创建PdfStamper实例
  3. 询问盖章人有关字段的信息。
  4. 使用stamper实例向页面添加内容
  5. 关闭压模。

在回答你的问题:为什么我的图像不显示在我的文档?

支持现有文档中字段的坐标为左下角x = 600, y = 600和右上角x = 700, y = 700,然后您将图像添加到您正在创建的页面的可见区域之外。当您使用new Document();时,您创建的文档左下角是x = 0, y = 0,右上角是x = 595, y = 842。

在这种情况下,您正在将图像添加到文档中,但它是不可见的,因为您已将其添加到定义页面的矩形之外。