私のWebメソッドは、%temp%フォルダにpdfファイルを作成し、それが動作します。次に、以下のコードを使用して、カスタムフィールド(メタ)をそのファイルに追加します。ファイルが別のプロセスで使用されているため、ファイルにアクセスできません。
クラスPdfStamper
は、.Close()
メソッドを使用するか、using
ブロックを終了するかにかかわらず、IOException
を生成します。まだファイルハンドルを保持しているプロセスはwebdev Webサーバーそのものです(私はVS2010 SP1でデバッグしています)。
ファイルにアクセスすることはできませんプロセスのC:\ユーザー[私の ユーザー名] \のAppData
private string AddCustomMetaData(string guid, int companyID, string filePath) { try { PdfReader reader = new PdfReader(filePath); using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { PdfStamper st = new PdfStamper(reader, fs); Dictionary<string, string> info = reader.Info; info.Add("Guid", guid); info.Add("CompanyID", companyID.ToString()); st.MoreInfo = info; st.Close(); } reader.Close(); return guid; } catch (Exception e) { return e.Message; } }
は、どんなに私がしようとするもの、それは、より正確には、
st.Close();
で例外を投げ続けるん\ Local \ Temp \ 53b96eaf-74a6-49d7-a715-6c2e866a63c3.pdf ' 他のプロセスで使用されているためです。
明らかに何かが見落とされているか、またはPdfStamper
クラスに問題があります。私はまだ気づいていません。使用されるitextsharpのバージョンは5.3.3.0と5.4.0.0ですが、問題は同じです。
洞察力があれば幸いです。
EDIT:私は現在、この問題を「コーディング」していますが、解決策は見つかりませんでした。
pdfリーダーが開く前にファイルが使用されていないことを確認してください。 (これ以前にこのファイルを使って何をやっていたのか) – Sayse
ファイルの順番を入れ替えるほうが良いです( 'filestream'の前に 'pdf reader') – Sayse