2017-12-01 135 views
0

jpgファイルがあり、色を透明に設定できます。イメージを別のイメージに追加すると、これは完全に機能します。iTextSharpを使用したPDFの画像の透明度

iTextSharpを使用して同じ画像をPDFに追加しようとしていますが、透明性が確保できません。

私は2つの方法を試みましたが、どちらも機能していません。最初の方法は、画像をビットマップで開き、透明度を設定してから、そのBitmapオブジェクトをPDFで使用することでした。 2番目の方法(ここに示す)では、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

あなたの2つの試みのどちらが有効かどうかはどうやって確認しましたか? – 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

関連する問題