2011-03-15 6 views
2

안녕 얘들 아 내가 어떤 작품의 일부로 로고 이미지가 인스턴스 ..iTextSharp 오버레이 이미지

있습니다.

그런 다음 해당 양식 필드를 사용하여 새 이미지를 배치하십시오.

문제는 .. 나는 그것이 새 이미지가 기존 로고보다 작은하는 경우에 기존의 로고를 덮도록 흰색에 그 양식 필드의 배경색을 설정해야

내가 한 일이다 입니다 :이와

foreach (var imageField in imageReplacements) 
      { 
       fields.SetFieldProperty(imageField.Key, "bgcolor", iTextSharp.text.Color.WHITE, null); 
       fields.RegenerateField(imageField.Key); 

       PdfContentByte overContent = stamper.GetOverContent(imageField.Value.PageNumber); 
       float[] logoArea = fields.GetFieldPositions(imageField.Key); 
       if (logoArea != null) 
       { 
        iTextSharp.text.Rectangle logoRect = new iTextSharp.text.Rectangle(logoArea[1], logoArea[2], logoArea[3], logoArea[4]); 

        var logo = iTextSharp.text.Image.GetInstance(imageField.Value.Location); 
        if (logo.Width >= logoRect.Width || logo.Height >= logoRect.Height) 
        { 
         logo.ScaleToFit(logoRect.Width, logoRect.Height); 
        } 
        logo.Alignment = iTextSharp.text.Image.ALIGN_LEFT; 
        logo.SetAbsolutePosition(logoRect.Left, logoArea[2] + (logoRect.Height - logo.ScaledHeight)/2); 
        // left: logoArea[3] - logo.ScaledWidth + (logoRect.Width - logo.ScaledWidth)/2 

        overContent.AddImage(logo); 
       } 
      } 

문제는 .. 필드의 배경색은 흰색으로 설정하고 이미지가 다음 나타나지 않는다는 것입니다 나는 SetFieldProperty를 제거하고 RegenerateField 명령 및 이미지 교체가 잘 작동 ..

레이어에 스태킹 순서를 설정하려면 어떻게해야합니까?

답변

0

주석 (양식 필드 등)은 항상 페이지 내용 위에 있습니다. 주석 Z 순서는 지정된 페이지의 주석 배열 순서입니다.

페이지 콘텐츠 Z 순서는 콘텐츠 스트림에 나타나는 모든 순서입니다. 새로운 도면 연산자는 진행 연산자의 맨 위에 있습니다.

오래된 이미지를 덮고 싶다면 그 위에 흰색 상자를 그려 상단에 새로운 로고를 그릴 수 있습니다. 입니다. 특수 효과에 대해 걱정할 필요가 없습니다.


사실 실제로해야 할 일은 imageField의 배경색을 설정하지 않아야합니다. 이미 새로운 로고의 크기를 기존 로고의 크기와 일치하도록 조정하고 있습니다. 당신이 정말 흰색 상자를 그립니다해야하는 경우

그러나, 그것은 매우 간단합니다

overContent.setColorFill(iTextSharp.text.Color.WHITE); 
overContent.rectangle(logoRect); 
overcontent.fill(); 
+0

안녕하세요 마크, 당신이 일어날 것이라고 나는 폭이 맨 위에 흰색 사각형을 그릴 수있는 방법의 예를 가지고 logoRect의 높이와 높이? 그런 다음 이미지를 추가하십시오. – TheLearningDev