【发布时间】:2015-07-27 16:45:11
【问题描述】:
我对编程仍然很陌生,我把自己装进了一个角落,看起来就像我制作的这个 WPF 应用程序一样。我创建了一个试图覆盖正在读入的文件的进程,所以我遇到了访问冲突。不过我的问题是……如果我对这个应用程序的要求是简单地标记一个对文件名最终兴趣为零的 pdf,我怎样才能读取文件并同时更改它,我不能有复制 pdf 的过程,它必须覆盖现有的 pdf 并且不创建重复文件,尽管文件名不同。我希望将文件读入内存流是答案,但我很难找到不在 java 中的文档,我无法从他们的示例中移植到 c#。
这是完成这项工作的代码。
for (int i = 0; i < filePaths.Length; ++i)
{
PdfReader reader = new PdfReader(filePaths[i]);
PdfStamper stamper = new PdfStamper(reader, new FileStream(filePaths[i], FileMode.Create, FileAccess.Write));
BaseFont font = BaseFont.CreateFont(); // Helvetica, WinAnsiEncoding
for (int j = 0; j < reader.NumberOfPages; ++j)
{
PdfContentByte overContent = stamper.GetOverContent(j + 1);
overContent.SaveState();
overContent.BeginText();
overContent.SetFontAndSize(font, 10.0f);
overContent.SetTextMatrix(10, 5);
overContent.ShowText(clientName
+ " #" + clientID
+ " DOB:" + dobDate
+ " " + admitType
+ " @" + admitDate);
overContent.EndText();
overContent.RestoreState();
}
stamper.Close();
}
//reset form
inputBox.Text = "";
clientNameText.Text = "";
clientIDText.Text = "";
dobDateText.Text = "";
admitTypeText.Text = "";
admitDateText.Text = "";
errorLabel.Text = "";
doneImage.Visibility = Visibility.Visible;
}
【问题讨论】:
标签: c# wpf pdf itextsharp