注釈のRESOURCES辞書に入れないといけないが、、、そんな方法は用意されていないみたいで、自分で辞書を作って、コンテンツを作文して対応しました。
参考コード、例:
var a = PdfAnnotation.CreateSquareCircle(wr1, pi.GetPDFRect(tx.Bounds), "", true); a.Put(PdfName.IC, pi.GetPdfArray(tx.Fore));//interior color a.Flags = PdfAnnotation.FLAGS_PRINT; { PdfDictionary objAP = new PdfDictionary(); { PdfContentByte wr = new PdfContentByte(wr1); var bcFore = pi.GetBaseColor(tx.Fore); bcFore = new BaseColor(bcFore.R, bcFore.G, bcFore.B, (int)(255 * 0.3)); var rc1 = pi.GetPDFRect(tx.Bounds); //PdfGState gs1 = new PdfGState(); //gs1.FillOpacity = 0.3f; wr.SaveState(); //wr.SetGState(gs1); wr.InternalBuffer.Append(" /GS1 gs "); wr.SetColorFill(bcFore); wr.SetLineWidth(0); wr.Rectangle(rc1.Left, rc1.Bottom, rc1.Width, rc1.Height); wr.Fill(); wr.RestoreState(); var bbox = pi.GetPDFRect(tx.Bounds); PdfStream objN = new PdfStream(wr.ToPdf(wr.PdfWriter)); wr.Reset(); objN.Put(PdfName.TYPE, PdfName.XOBJECT); objN.Put(PdfName.SUBTYPE, PdfName.FORM); objN.Put(PdfName.FORMTYPE, new PdfNumber(1)); objN.Put(PdfName.BBOX, new PdfArray(new float[] { bbox.Left, bbox.Bottom, bbox.Right, bbox.Top })); { PdfDictionary objRes = new PdfDictionary(); { PdfArray objProcSet = new PdfArray(); { objProcSet.Add(PdfName.PDF); } objRes.Put(PdfName.PROCSET, objProcSet); } { PdfDictionary objExtGState = new PdfDictionary(); { PdfDictionary objGS1 = new PdfDictionary(); objGS1.Put(PdfName.ca, new PdfNumber(0.3f)); objExtGState.Put(new PdfName("GS1"), objGS1); } objRes.Put(PdfName.EXTGSTATE, objExtGState); } objN.Put(PdfName.RESOURCES, objRes); } objAP.Put(PdfName.N, wr1.AddToBody(objN).IndirectReference); } a.Flags = PdfAnnotation.FLAGS_PRINT; a.Put(PdfName.AP, objAP); a.Put(PdfName.CA, new PdfNumber(0.3f)); } wr1.AddAnnotation(a);
0 件のコメント:
コメントを投稿