기존 PDF AcroField의 단어를 다른 단어로 바꿔야합니다. 나는 iTEXTSHARP의 PDFStamper를 사용하여 동일한 작업을 수행하고 있으며 정상적으로 작동합니다. 그러나 그렇게 할 때 새로운 PDF를 작성해야하며 기존 PDF 자체에 변경 사항을 반영하고 싶습니다. 대상 파일 이름을 원래 파일 이름과 동일하게 설정하면 변경 사항이 반영되지 않습니다. iTextSharp에 익숙하지 않은 경우, 잘못된 작업이 있습니까? 내 책 iText in Action에 설명 된대로새 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
파일을 삭제할 수있는 권한이 없으면 파일을 업데이트 할 수있는 권한이 없을 수도 있습니다. 그 사용 권한은 아마도 읽기 전용으로 설정됩니다. sysadmin에게 문의해야합니다. 이것은 더 이상 iText 질문이 아니라 파일 권한에 관한 질문입니다. –
@ BrunoLowagie 좀 더 설명해 주시겠습니까? => ** PdfStamper에 원본 파일의 경로를 사용 ** ** – jason