2013-03-27 4 views
3

생성 된 바코드 파일을 기반으로 이미지를 삽입해야합니다.이미지를 PDF로 삽입하려고 시도했습니다. #

내가 일반적으로 텍스트를 입력 할 수있는 iTextSharp 라이브러리를 사용하는 경우 데 문제 등

PdfReader pdfReader = new PdfReader(oldFile); 
PdfStamper pdfStamper = new PdfStamper(pdfReader, outFile); 
AcroFields fields = pdfStamper.AcroFields; 
fields.SetField("topmostSubform[0].Page1[0].BARCODE[0]", "X974005-1"); 

내가 그것에 클릭하면 PDF로가에 이미지 나 메시지를 표시 한 필드가 비록 필드에 삽입 할 수 있지만 프로그래밍 방식으로 수행 할 수 없습니다. 일부 구글 검색을하고, 유래 페이지에 걸림돌을 바탕으로, 내가 원하는대로 작동 할 것으로 예상 다음 코드를 삽입 :

string fieldName = "topmostSubform[0].Page1[0].BARCODE[0]"; 
string imageFile = "test-barcode.jpg"; 
AcroFields.FieldPosition fieldPosition = pdfStamper.AcroFields.GetFieldPositions(fieldName)[0]; 
PushbuttonField imageField = new PushbuttonField(pdfStamper.Writer, fieldPosition.position, fieldName); 
imageField.Layout = PushbuttonField.LAYOUT_ICON_ONLY; 
imageField.Image = iTextSharp.text.Image.GetInstance(imageFile); 
imageField.ScaleIcon = PushbuttonField.SCALE_ICON_ALWAYS; 
imageField.ProportionalIcon = false; 
imageField.Options = BaseField.READ_ONLY; 
pdfStamper.AcroFields.RemoveField(fieldName);    
pdfStamper.AddAnnotation(imageField.Field, fieldPosition.page); 

난을 열 때, 의도 한대로 기존 필드를 제거하는 동안 나는 데 문제는 새로 만든 PDF 파일이 새로운 푸시 버튼 필드가 의도 된 이미지 파일과 함께 표시되지 않고 공백으로 표시되지만 디버그 모드를 통해이 작업을 수행하면 이미지 파일의 정확한 크기를 파악할 수 있습니다. 여기서 내가 뭘 잘못하고 있는지 모르겠다.

감사합니다.

답변

1

당신이 (즉 : my book)의 공식 문서를 읽을 경우 ReplaceIcon.cs

당신은 pdfStamper.AcroFields.RemoveField(fieldName);를 사용하여 필드를 제거하고 그 후 당신이 pdfStamper.AddAnnotation(imageField.Field, fieldPosition.page);

를 사용하여 새 필드를 추가하려고하면이 예제를 찾을 수 있습니다

그게 잘못입니다. 필드를 바꾸려면 pdfStamper.AcroFields.ReplacePushbuttonField(fieldname, imageField.Field);

ReplacePushbuttonField() 메서드는 백그라운드에서 많은 설정을 복사합니다.

+0

감사 브루노, 매력처럼 일했습니다. – jfalberg

관련 문제