Я должен заменить слово в существующем PDF AcroField другим словом. Я использую PDFStamper из iTEXTSHARP, чтобы сделать то же самое, и он работает нормально. Но при этом требуется создать новый 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: строка 150Access к пути 'E: \ Web \ Compliance \ NonPCI \ SDL \ wwwroot \ xyzrights \ Images \ ListPrograming_Part1_AcroForm.pdf 'отклоняется. Пожалуйста, помогите .. – tk2013
Если у вас нет разрешения на удаление файла, у вас, вероятно, также нет разрешения на его обновление. Его разрешения, вероятно, установлены только для чтения. Вам нужно связаться с системным администратором. Это уже не вопрос iText, а вопрос о разрешениях файлов. –
@BrunoLowagie не могли бы вы объяснить это немного больше, пожалуйста? => ** используйте путь к исходному файлу для PdfStamper. ** – jason