public void DrawButton(float llx, float lly, float urx, float ury, string text, BaseFont bf, float size)
{
if (llx > urx) { float x = llx; llx = urx; urx = x; }
if (lly > ury) { float y = lly; lly = ury; ury = y; }
SaveState();
// black rectangle not filled
SetColorStroke(new BaseColor(0x00, 0x00, 0x00));
SetLineWidth(1);
SetLineCap(0);
Rectangle(llx, lly, urx - llx, ury - lly);
Stroke();
// silver rectangle filled
SetLineWidth(1);
SetLineCap(0);
SetColorFill(new BaseColor(0xC0, 0xC0, 0xC0));
Rectangle(llx + 0.5f, lly + 0.5f, urx - llx - 1f, ury -lly - 1f);
Fill();
// white lines
SetColorStroke(new BaseColor(0xFF, 0xFF, 0xFF));
SetLineWidth(1);
SetLineCap(0);
MoveTo(llx + 1f, lly + 1f);
LineTo(llx + 1f, ury - 1f);
LineTo(urx - 1f, ury - 1f);
Stroke();
// dark grey lines
SetColorStroke(new BaseColor(0xA0, 0xA0, 0xA0));
SetLineWidth(1);
SetLineCap(0);
MoveTo(llx + 1f, lly + 1f);
LineTo(urx - 1f, lly + 1f);
LineTo(urx - 1f, ury - 1f);
Stroke();
// text
ResetRGBColorFill();
BeginText();
SetFontAndSize(bf, size);
ShowTextAligned(PdfContentByte.ALIGN_CENTER, text, llx + (urx - llx) / 2, lly + (ury - lly - size) / 2, 0);
EndText();
RestoreState();
}