使用iTextSharp将文件添加到文档时,为什么不显示图像?

时间:2013-05-29 14:28:15

标签: c# itextsharp asp.net-2.0

Contextt:我正在打开一个包含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中。

1 个答案:

答案 0 :(得分:2)

您正在使用我手册中记载的“创建PDF文档的5个步骤”创建文档。

  1. 创建一个Document对象。
  2. 创建一个PdfWriter实例。
  3. 打开文档。
  4. 向文档添加内容。
  5. 关闭文件。
  6. 这与您实际想要做的事情相矛盾:我想在AcroForm字段定义的占位符中添加Image。

    为什么你说你想要一件事,做其他事情?甘拜下风。可能是因为你不想阅读文档。

    你需要这样的东西:

    1. 创建PdfReader实例。
    2. 创建PdfStamper实例。
    3. 询问压模有关这些字段的信息。
    4. 使用压模实例向页面添加内容。
    5. 关闭压模。
    6. 回答你的问题:为什么我的图片不会显示在我的文档中?

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

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