winform界面
1.选择加签pdf按钮代码实现
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "PDF文件(*.pdf)|*.pdf";
bool flag = op.ShowDialog() == DialogResult.OK;
if (flag)
{
string pdfPath = Path.GetFullPath(op.FileName);
fileName = op.SafeFileName;
label2.Text = pdfPath;
}
}
每页加签按钮代码实现
private void button2_Click(object sender, EventArgs e)
{
string path = Application.StartupPath;
SignEachPage(label2.Text.ToString(), path + "/PDF/" + fileName, path + @"\InspectionSeal\电子章.png"); // 参数(原pdf地址,加签后pdf地址,电子章地址)
Process.Start("explorer", Application.StartupPath + "\\PDF");
label4.Text = path + "/PDF/" + fileName;
}
SignEachPage方法代码实现
public static void SignEachPage(string pdfPath, string outPdfPath, string imagePath)
{
//读取pdf
iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfPath);
//读取页数
int pdfPageSize = pdfReader.NumberOfPages;
//创建新pdf
System.IO.FileStream outputStream = new System.IO.FileStream(outPdfPath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
iTextSharp.text.pdf.PdfStamper pdfStamper = new iTextSharp.text.pdf.PdfStamper(pdfReader, outputStream);
//文件内容
iTextSharp.text.pdf.PdfContentByte waterMarkContent;
//读取第一页尺寸
iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
//读取盖章图片
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagePath);
//图片缩放到一定百分比
image.ScalePercent(60);
//设置图片位置,位置偏移方向为:左到右,下到上
image.SetAbsolutePosition(psize.Width / 10 * 7, psize.Height / 10);
//循环给每页盖章
for (int i = 1; i <= pdfPageSize; i++)
{
//GetUnderContent 加在内容下层
//GetOverContent 加在内容上层
waterMarkContent = pdfStamper.GetUnderContent(i);
//添加
waterMarkContent.AddImage(image);
}
pdfStamper.Close();
pdfReader.Close();
//直接打开盖章后文件
// System.Diagnostics.Process.Start(outPdfPath);
}