c# - PDFSharp 使用 PdfTextField 作为位置和大小引用在 pdf 中插入图像

我们想使用 PDFSharp 将带有(绘制的)签名的 png 图像插入到 PDF 中。图像的位置和大小由我们之前在 PDF 中创建的不可见 PdfTextField 确定。使用我们当前的代码,问题是:我们如何从我们的 PdfTextField(包含此字段的页面)获取页面引用?

代码:

PdfDocument document = PdfReader.Open("C:\\filex.pdf", PdfDocumentOpenMode.Modify);

// Get the root object of all interactive form fields
PdfAcroForm form = document.AcroForm;

// Get all form fields of the whole document
PdfAcroField.PdfAcroFieldCollection fields = form.Fields;

//Get the invisible PdfTextField used as position and size reference
PdfTextField signatureposition= (PdfTextField)fields["thesignature"];

PdfArray signaturerect= (PdfArray)signatureposition.Elements["/Rect"];
string x = signaturerect.Elements[0].ToString();
string y = signaturerect.Elements[1].ToString();
string w = signaturerect.Elements[2].ToString();
string h = signaturerect.Elements[3].ToString();

string imagepath= "C:\\signature.png";

//how to get the correct page reference respect the especified field?
PdfPage page= signatureposition.Owner.Pages[???];

XGraphics gfx = XGraphics.FromPdfPage(page);
XImage image = XImage.FromFile(imagepath);
gfx.DrawImage(image, x, y, width, height);

最佳答案

最后我们通过创建这个函数解决了这个问题:

   protected int PaginaCampo(string campofirma, PdfDocument document)
{
    for (int i = 0; i < document.Pages.Count; i++)
    {
        PdfAnnotations anotations = document.Pages[i].Annotations;
        for (int j = 0; j < anotations.Count; j++)
        {
            if (anotations[j].Title != campofirma) continue;
            return i;
        }
    }
    return -1;
}

不是最好的解决方案,但它有效...如果有人添加更好的解决方案,我们将给他/她正确的答案

https://stackoverflow.com/questions/13120562/

相关文章:

winapi - 使用 NtOpenKey 时重定向注册表访问的正确方法是什么?

nginx - 在 nginx 托管上出现 502 错误网关错误

authentication - 如何使用 JavaMail 调试 SMTP 身份验证错误?

python - 组装字节码 - PyCode New

html5-video - HTML5 视频自动播放是否适用于三星智能电视?

c# - 执行相机预览镜像模式的正确方法

python - 是否可以在 Pandas 中将 searchsorted 与 MultiIndex

.net - 即使所有新发布者都有签名证书,未知发布者警告是否真的会出现?

c# - 将 DependencyProperty 转发到用户控件中包含的控件

ruby-on-rails - 在 rails 3 中连接两个表