2
我需要用另一個單詞替換現有PDF AcroField中的單詞。我正在使用iTEXTSHARP的PDFStamper來做同樣的事情,它工作正常。但是,這樣做需要創建一個新的PDF,我希望這些更改能夠反映在現有的PDF本身中。如果我將目標文件名設置爲與原始文件名相同,則不會有任何變化。我是iTextSharp的新手,有什麼我做錯了嗎?請幫助..我我使用如何在不創建新PDF的情況下更新PDF?
private void ListFieldNames(string s)
{
try
{
string pdfTemplate = @"z:\TEMP\PDF\PassportApplicationForm_Main_English_V1.0.pdf";
string newFile = @"z:\TEMP\PDF\PassportApplicationForm_Main_English_V1.0.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
PdfReader reader = new PdfReader((string)pdfTemplate);
using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create, FileAccess.ReadWrite)))
{
AcroFields form = stamper.AcroFields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys)
{
//Replace Address Form field with my custom data
if (fieldKey.Contains("Address"))
{
form.SetField(fieldKey, s);
}
}
stamper.FormFlattening = true;
stamper.Close();
}
}
}
我遵循你的第一個方法,並使用壓模創建一個臨時文件,後來用它來替換原始文件。但是,由於PDF是從SDL Tridion發佈並存儲在Tridion文件系統中的,因此我們無法對原始編輯/刪除進行任何更改。 Evrytime我嘗試刪除原來的以下錯誤: e:\ Web \ Compliance \ NonPCI \ SDL \ wwwroot \ xyzrights \ updatePdf.aspx:line 150訪問路徑'E:\ Web \ Compliance \ NonPCI \ SDL \ wwwroot \ xyzrights \ Images \ ListPrograming_Part1_AcroForm.pdf'被拒絕。 請幫忙.. – tk2013
如果您沒有刪除文件的權限,您可能沒有權限更新它。其權限可能設置爲只讀。您需要聯繫系統管理員。這不再是一個iText問題,而是一個關於文件權限的問題。 –
@BrunoLowagie你能解釋一下這一點嗎? => **使用原始文件的路徑作爲PdfStamper ** – jason