2013-05-29 3 views
1

Contextt: Я открываю существующую интерактивную форму PDF, содержащую поля AcroForm. Я пытался добавить изображение в поле прямоугольника в виде PDF, как это:Почему изображение не появляется, когда я добавляю его в документ с помощью iTextSharp?

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

Пожалуйста, ознакомьтесь с некоторыми проблемами, связанными с форматированием, и http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –

+1

В чем заключается ваш вопрос - вы видите ошибку? Что такое сообщение об ошибке? – criticalfix

+0

Кроме того: вы говорите, что заполняете существующий PDF-документ, и используете документ и класс PdfWriter? Очевидно, что вы не читали документацию, иначе вы бы использовали PdfStamper! –

ответ

2

Вы создаете документ, используя «5 шагов для создания документа PDF», как описано в моих книгах.

  1. создать объект документа.
  2. создать экземпляр PdfWriter.
  3. открыть документ.
  4. Добавить контент в документ.
  5. закрыть документ.

Это противоречит тому, что вы на самом деле хотите сделать: я хочу добавить изображение в заполнитель, определенный полем AcroForm.

Почему вы говорите, что хотите что-то одно, и что-то делать? Ударь меня. Возможно, потому, что вы не хотели читать документацию.

Вам нужно что-то вроде этого:

  1. Создать экземпляр PdfReader.
  2. Создайте экземпляр PdfStamper.
  3. Задать вопрос о полях.
  4. Добавить содержимое на страницу, используя экземпляр шаблона.
  5. Закрыть трассировку.

В ответ на ваш вопрос: Почему мое изображение не отображается в моем документе?

Поддержка координат поля в существующем документе: нижний левый угол x = 600, y = 600 и правый верхний угол x = 700, y = 700, то вы добавляете изображение за пределы видимой области страницы, которую вы создаете. Когда вы используете new Document();, вы создаете документ, в котором нижний левый угол равен x = 0, y = 0, а верхний правый - x = 595, y = 842.

В этом случае вы, повторное добавление изображения в документ, но оно не видно, потому что вы добавили его за пределы прямоугольника, который определяет страницу.

+0

Большое вам спасибо, поскольку вы упомянули Я попробовал tio используйте следующий код –

+0

Какой код? Я думаю, что в вашем комментарии чего-то не хватает. –

+0

PdfReader pdfReader = новый PdfReader (pdfTemplate); PdfStamper pdfStamper = новый PdfStamper (pdfReader, новый FileStream (newFile, FileMode.Create)); AcroFields pdfFormFields = pdfStamper.AcroFields; iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance (pathh + "/ADE_RepBtn_Nor.png"); –

Смежные вопросы