2017-12-01 4 views
0

들어오는 jpg 파일이있어서 투명하게 색을 설정할 수 있습니다. 이미지를 다른 이미지에 추가하면 완벽하게 작동합니다.iTextSharp를 사용하여 PDF의 이미지 투명도

iTextSharp를 사용하여 동일한 이미지를 PDF에 추가하려하지만 투명성을 확보 할 수 없습니다.

두 가지 방법을 시도했지만 어느 것도 작동하지 않습니다. 첫 번째 방법은 비트 맵에서 이미지를 열고 투명도를 설정 한 다음 PDF에서 해당 Bitmap 객체를 사용하는 것입니다. 두 번째 방법 (여기에 표시)은 Bitmap을 디스크에 저장하고 파일을 iTextSharp 이미지로 여는 것입니다. 나는 투명 옵션이 있음을 보았다

    using (Bitmap b = new Bitmap(Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("~/IncomingData/" + ImageFileName)))) 
        { 
         b.MakeTransparent(Color.White); 
         b.Save(System.Web.HttpContext.Current.Server.MapPath("~/IncomingData/" + GuidFileName), System.Drawing.Imaging.ImageFormat.Png); 
         ImageFileName = GuidFileName; 

         iTextSharp.text.Image savedImage = iTextSharp.text.Image.GetInstance(Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("~/IncomingData/" + GuidFileName)), iTextSharp.text.Color.WHITE); 

         savedImage.SetAbsolutePosition(Convert.ToSingle(x + 1.0), Convert.ToSingle(imageY + 12) - Convert.ToSingle(h)); 
         savedImage.ScaleToFit(Convert.ToSingle(w), Convert.ToSingle(h)); 
         contentByte.AddImage(savedImage, true); 
        } 

...

savedImage.Transparency = ??? 

을하지만 난 값을 넣어 모르겠어요. 내 수색에서 아무것도 찾을 수 없다.

+1

JPEG는 투명도를 지원하지 않으므로 여기에 뭔가 의미가 없습니다. "이미지를 다른 이미지에 어떻게 추가합니까"? –

+0

JPEG는 투명도를 지원하지 않지만이를 제공합니다. 투명 해져서 .png로 저장할 수 있습니다. 이것이 바로 MakeTransparent의 기능입니다. 이 질문에 다른 이미지를 추가하지 않고 PDF를 추가하고 있습니다. 다른 이미지에 투명한 "jpg"를 추가하려면 ... 비트 맵 b = (비트 맵) Image.FromFile (System.Web.HttpContext.Current.Server.MapPath ("~/IncomingData /"+ GuidFileName)); b.MakeTransparent (Color.White); graphics.DrawImage (b, x, y - 10, newWidth, newHeight); – David

+0

두 가지 시도 중 하나가 효과가 있었는지 여부를 어떻게 확인 했습니까? – mkl

답변

1

결국 대답을 찾았습니다.

나는 이것을 보았습니다 ... 그리고 원래 나는 투명성 설정을 찾기 위해 투명성을 찾고있었습니다. 나는 그것을 보지 못했다. 내 코드는 지금 c# .NET CORE adding image with transparency to existing PDF using ITextSharp

... contentByte.AddImage 제거 부울을 가지고

    using (Bitmap b = new Bitmap(Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("~/IncomingData/" + ImageFileName)))) 
        { 
         b.MakeTransparent(Color.White); 

         iTextSharp.text.Image savedImage = iTextSharp.text.Image.GetInstance(b, System.Drawing.Imaging.ImageFormat.Png); 

         savedImage.SetAbsolutePosition(Convert.ToSingle(x + 1.0), Convert.ToSingle(imageY + 12) - Convert.ToSingle(h)); 
         savedImage.ScaleToFit(Convert.ToSingle(w), Convert.ToSingle(h)); 

         contentByte.AddImage(savedImage); 
        } 

참고.

+1

아, 그 부울은 당신의 질문에서 내 눈을 잡지 못했습니다. 그것이 무엇인지 궁금하다면 : true이면 이미지가 내용 스트림에 삽입됩니다. 그렇지 않으면 리소스로 추가되고 콘텐츠 스트림에서 참조하기 만합니다. 투명성을 위해서는 투명 마스크를 별도의 리소스로 생성해야합니다. 이 때문에 아마도 투명성이 테스트에서 사라졌습니다. – mkl

관련 문제