itextsharp设置背景不透明度不起作用

时间:2016-06-21 13:55:59

标签: background itext opacity

我有以下代码将背景颜色设置为我的某个字段但由于某种原因我无法控制背景的透明度。有人可以看看它,让我知道我做错了什么。感谢。

 using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
        {
            // Open existing PDF
            var pdfReader = new PdfReader(existingFileStream);

            // PdfStamper, which will create
            var stamper = new PdfStamper(pdfReader, newFileStream);

            var form = stamper.AcroFields;
            var fieldKeys = form.Fields.Keys;


            foreach (string fieldKey in fieldKeys)
            {
                if (fieldKey.Equals("Title"))
                {
                    form.SetFieldProperty(fieldKey, "bgcolor", new BaseColor(System.Drawing.Color.FromArgb(20,225,160,0)),null);
                    form.SetField(fieldKey, "Test");

                }
                else
                {
                    form.SetField(fieldKey, "REPLACED!");
                }
            }
            stamper.FormFlattening = true;
            stamper.Close();
            pdfReader.Close();
        }

1 个答案:

答案 0 :(得分:2)

以防万一其他人面临同样的问题

 var pdfReader = new PdfReader(existingFileStream);

            // PdfStamper, which will create
            var stamper = new PdfStamper(pdfReader, newFileStream);
            var form = stamper.AcroFields;
            var fieldKeys = form.Fields.Keys;
            PdfContentByte background;
            foreach (string fieldKey in fieldKeys)
            {
                if (fieldKey.Equals("Title"))
                {
                    //form.SetFieldProperty(fieldKey, "bgColor", new BaseColor(System.Drawing.Color.FromArgb(125,225,160,0)),null);
                    form.SetField(fieldKey, "Test");
                    IList<AcroFields.FieldPosition> pos = form.GetFieldPositions(fieldKey);
                    PdfContentByte contentBtye = stamper.GetOverContent(pos[0].page);
                    contentBtye.SetColorFill(new BaseColor(200, 50, 50));
                    contentBtye.Rectangle(pos.FirstOrDefault().position.Left, pos.FirstOrDefault().position.Bottom, pos.FirstOrDefault().position.Width, pos.FirstOrDefault().position.Height);
                    PdfGState state = new PdfGState();
                    state.FillOpacity = 0.5f;
                    contentBtye.SetGState(state);
                    contentBtye.Fill();                                   
                }
                else
                {
                    form.SetField(fieldKey, "REPLACED!");
                }
         }