亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不創建新PDF的情況下更新PDF?

如何在不創建新PDF的情況下更新PDF?

九州編程 2019-10-12 14:04:28
我需要用另一個單詞替換現有PDF AcroField中的一個單詞。我正在使用iTEXTSHARP的PDFStamper做同樣的事情,并且工作正常。但是,這樣做需要創建一個新的PDF,我希望所做的更改能夠反映在現有PDF本身中。如果我將目標文件名設置為與原始文件名相同,則不會反映任何更改。我是iTextSharp的新手,我在做錯什么嗎?請幫助..我正在提供我正在使用的代碼段  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();                }            }        }
查看完整描述

2 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

如我的《iText in Action》一書中所述,您不能同時讀取和寫入文件。想一想Word的工作原理:您無法打開Word文檔并直接對其進行寫入。Word總是創建一個臨時文件,將更改寫入其中,然后用它替換原始文件,然后丟棄該臨時文件。


你也能做到:


閱讀與原來的文件PdfReader,

為創建一個臨時文件PdfStamper,完成后,

用臨時文件替換原始文件。

要么:


將原始文件讀入byte[],

創建PdfReader與此byte[],和

將原始文件的路徑用于PdfStamper。

第二種選擇更為危險,因為如果您執行某些操作會導致中的異常,則您將丟失原始文件PdfStamper。


查看完整回答
反對 回復 2019-10-12
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

我遵循了您的第一種方法,并使用壓模創建了一個臨時文件,該文件后來用于替換原始文件。但是,由于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'被拒絕。請幫助.

查看完整回答
反對 回復 2019-10-12
  • 2 回答
  • 0 關注
  • 500 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號