0
다음 코드를 사용하여 이전 PDF를 삭제하고 이전 PDF를 새로운 것으로 바꾸 겠지만 결과는 없습니다. 이 작업을 PDF 파일에서 수행 할 수 있습니까? 마찬가지로, 그물 전체에 나는이 기능들이 .txt, .xls.doc ... 등의 파일 유형에 사용되는 것을 볼 수 있습니다. 내 코드에 문제가 있습니까?PDF 파일 바꾸기 및 삭제
private void ListFieldNames(string s)
{
try
{
string pdfTemplate = @"z:\TEMP\PDF\PassportApplicationForm_Main_English_V1.0.pdf";
//var newFile = pdfTemplate;
string newFile = @"z:\TEMP\PDF\_PassportApplicationForm_Main_English_V1.0.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
//ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();
PdfReader reader = new PdfReader((string)pdfTemplate);
//PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create));
using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create)))
{
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("Surname"))
{
form.SetField(fieldKey, s);
}
}
// set form fields
//form.SetField("Address", s);
stamper.FormFlattening = true;
stamper.Close();
}
}
File.Copy(newFile, pdfTemplate);
File.Delete(pdfTemplate);
}
코드를 디버그하려고했는데 코드를 분석 했습니까? –
iText 또는 iTextSharp에 대한 경험이 없지만이 코드에는 다소 이상한 점이 있습니다. 왜 모든 페이지에서 반복하고 있지만 페이지 번호를 사용하지 않습니까? 루프의 각 반복에서'new FileStream (newFile, FileMode.Create)'를 실행하여 정확히 동일한 데이터 'NumberofPages - 1' 번으로 새 파일을 덮어 쓰는 것 같습니다. 또한 왜 두 개의'PdfReader'를 열고'string'을'string'으로 형 변환합니까? – jerry