注釈の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 件のコメント:
コメントを投稿