C# 签名时如何更改数字签名中显示的图像的位置?

C# 签名时如何更改数字签名中显示的图像的位置?,c#,pdf,C#,Pdf,我想知道当我签署pdf时,如何更改数字签名中显示的图像的位置。我使用的代码是这样的,但我只会让图像出现在签名的左侧,我想把它放在签名文本的右侧或下方 PdfReader reader = new PdfReader(PathDocumentWhitoutSign) var writer = new FileStream(PathsignedDocument, FileMode.Create, FileAccess.Write) var stamper = PdfStamper.CreateSig

我想知道当我签署pdf时,如何更改数字签名中显示的图像的位置。我使用的代码是这样的,但我只会让图像出现在签名的左侧,我想把它放在签名文本的右侧或下方

PdfReader reader = new PdfReader(PathDocumentWhitoutSign)
var writer = new FileStream(PathsignedDocument, FileMode.Create, FileAccess.Write)
var stamper = PdfStamper.CreateSignature(reader, writer, '\0', null, true)
var signature = stamper.SignatureAppearance;
signature.Layer2Text =
                "Signed by: " + name + "\n" +
                "Position: " + position + "\n" +
                "Reason: " + reason + "\n" +
                "Date: " + date;
Image img = Image.GetInstance(LogoPath); //get the image of the path
signature.SignatureGraphic = img;
signature.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION;

Rectangle rect = new Rectangle(positionX, positionY, 210 + positionX, 34 + positionY);

signature.SetVisibleSignature(rect, pagina, null);

//this code adds a red frame to the signature
signature.GetAppearance();
PdfTemplate layer = signature.GetLayer(2);
Rectangle rct = signature.Rect;
layer.SetRGBColorStroke(255, 0, 0);
layer.SetLineWidth(5);
layer.Rectangle(rct.Left, rct.Bottom, rct.Width, rct.Height);
layer.Stroke();

最后一个代码向签名添加边框,但如果可以修改图像的位置,则不会添加边框。默认情况下,它的顺序如图所示向左,但我希望它显示在签名文本上方。

默认情况下,itext 5仅允许从某些Acrobat签名布局派生的标准布局。但您也可以从签名外观检索第2层,并完全任意地设计它。@mkl我正在使用Layer2Text添加数据,如上面代码中所示的名称、原因等。可以在这里添加图像吗?我实际上是指直接使用第2层,而不仅仅是设置文本。像@mkl一样,我通过添加代码将框架添加到签名来编辑问题。签名图像的位置是否可以更改?默认情况下,图像显示在左侧,文本显示在右侧,如我附加的图像所示,我希望将图像放置在文本上方;也就是说,上面的图像和下面的文本
PdfReader reader = new PdfReader(PathDocumentWhitoutSign)
var writer = new FileStream(PathsignedDocument, FileMode.Create, FileAccess.Write)
var stamper = PdfStamper.CreateSignature(reader, writer, '\0', null, true)
var signature = stamper.SignatureAppearance;
signature.Layer2Text =
                "Signed by: " + name + "\n" +
                "Position: " + position + "\n" +
                "Reason: " + reason + "\n" +
                "Date: " + date;
Image img = Image.GetInstance(LogoPath); //get the image of the path
signature.SignatureGraphic = img;
signature.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION;

Rectangle rect = new Rectangle(positionX, positionY, 210 + positionX, 34 + positionY);

signature.SetVisibleSignature(rect, pagina, null);

//this code adds a red frame to the signature
signature.GetAppearance();
PdfTemplate layer = signature.GetLayer(2);
Rectangle rct = signature.Rect;
layer.SetRGBColorStroke(255, 0, 0);
layer.SetLineWidth(5);
layer.Rectangle(rct.Left, rct.Bottom, rct.Width, rct.Height);
layer.Stroke();