我需要一个示例代码或参考,通过使用itextsharp动态读取签名字段名称,将签名图像放置在签名字段中。图像应放在签名字段上方,并带有相应大小的签名字段..任何人都可以帮助我..
我正在尝试将签名图像放置在签名字段中,但图像不会放置在签名字段中。签名字段矩形的宽度和高度不同,如果将比例更改为适合,则图像大小会有所不同。这是我的代码:
PdfContentByte pdfContentByte = stamper.GetOverContent(1);
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);
iTextSharp.text.pdf.AcroFields fields = stamper.AcroFields;
IList<iTextSharp.text.pdf.AcroFields.FieldPosition> signatureArea = fields.GetFieldPositions("DoctorSign");
TextSharp.text.Rectangle rect = signatureArea.First().position;
image.ScaleAbsolute(rect.Width, rect.Height);
image.SetAbsolutePosition(rect.Left -image.ScaledWidth +(rect.Width -image.ScaledWidth )/2, rect.Bottom+ (rect.Height-image.ScaledHeight)/2 );
pdfContentByte.AddImage(image)
答案 0 :(得分:1)
您可以使用PDFContentbyte添加图片。
Foll是VB .NET中的代码示例,您可以使用converter.telerik.com将其转换为c#。
Imports iTextSharp.text
Imports iTextSharp.text.pdf
' Set the File Details
Dim fs As New FileStream("FILE_NAME", FileMode.Create, FileAccess.Write)
Dim reader As New PdfReader(inPDF)
Dim document As New iTextSharp.text.Document(PageSize.A4)
' open writer
Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs)
document.Open()
Dim cb As PdfContentByte = writer.DirectContent
' create the new page and add it to the pdf
Dim page As PdfImportedPage = writer.GetImportedPage(reader, 1)
cb.AddTemplate(page, 0, 0)
'Add Image
Dim hdImg As iTextSharp.text.Image
hdImg = iTextSharp.text.Image.GetInstance(AppDomain.CurrentDomain.BaseDirectory & "Images\sample.png")
Dim wid As Integer = page.Width
hdImg.ScalePercent(50)
hdImg.SetAbsolutePosition(30, 775)
cb.AddImage(hdImg)
' close the streams
document.Close()
fs.Close()
writer.Close()
reader.Close()
此外,请注意您需要对“SetAbsolutePosition(30,775)”中图像坐标的各种组合进行位测试,以将签名设置在正确的位置。
另请注意,这里的坐标是点而不是像素。我添加了wid变量,以便您知道pdf页面的宽度是什么