0

次のコードを使用して古い PDF を削除し、古い PDF を新しいものに置き換えていますが、結果はありません。PDFファイルでこの操作を実行することは可能ですか? ネット全体で、これらの関数が.txt、.xls.doc ...などのファイルタイプに使用されていることがわかります。私のコードに何か問題がありますか? 助けてください...

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);
    }
4

1 に答える 1

1

すべてが私には良さそうに見えますが、変更するだけです:

File.Copy(newFile, pdfTemplate);
File.Delete(pdfTemplate);

への変更:

File.Delete(pdfTemplate);
File.Copy(newFile, pdfTemplate);

同じ名前のファイルがその場所に既に存在する場合、ファイルをコピーすることはできません。最初に既存のファイルを削除します。

于 2013-04-19T14:58:30.353 に答える