ITextSharp / Pdftk:将来自Web的Base64图像放在PDF上作为Pseude-Signature

时间:2015-05-14 15:33:39

标签: c# itextsharp pdftk

我正在尝试概念化将base64图像转换为iText中已呈现的PDF的方法。目标是让PDF保存到磁盘然后重新打开以应用"签名"在正确的位置。

我在网上找到其他例子并没有取得任何成功,所以我问Stack。

我的应用使用.net c#。

关于如何开始的任何建议?

1 个答案:

答案 0 :(得分:2)

正如@mkl所提到的那样,问题很混乱,特别是标题 - 通常 base64 signature不能一起使用。猜猜你想把base64 image from web作为伪签名放在PDF上吗?!?!

让您入门的快速工作示例:

 new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
                            .setMessage("Are you sure you want to exit?")
                            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    finish();
                                    super.onBackPressed();
                                }
                            }).setNegativeButton("No", null).show();

如果您没有使用PDF表单模板,(代码段中的static void Main(string[] args) { string currentDir = AppDomain.CurrentDomain.BaseDirectory; // 'INPUT' => already rendered pdf in iText PdfReader reader = new PdfReader(INPUT); string outputFile = Path.Combine(currentDir, OUTPUT); using (var stream = new FileStream(outputFile, FileMode.Create)) { using (PdfStamper stamper = new PdfStamper(reader, stream)) { AcroFields form = stamper.AcroFields; var fldPosition = form.GetFieldPositions("lname")[0]; Rectangle rectangle = fldPosition.position; string base64Image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; Regex regex = new Regex(@"^data:image/(?<mediaType>[^;]+);base64,(?<data>.*)"); Match match = regex.Match(base64Image); Image image = Image.GetInstance( Convert.FromBase64String(match.Groups["data"].Value) ); // best fit if image bigger than form field if (image.Height > rectangle.Height || image.Width > rectangle.Width) { image.ScaleAbsolute(rectangle); } // form field top left - change parameters as needed to set different position image.SetAbsolutePosition(rectangle.Left + 2, rectangle.Top - 2); stamper.GetOverContent(fldPosition.page).AddImage(image); } } } )明确设置绝对位置并根据需要缩放图像。