Мой веб-метод создает файл PDF в моей папке% temp%, и это работает. Затем я хочу добавить некоторые настраиваемые поля (мета) в этот файл, используя приведенный ниже код.
Класс PdfStamper
генерирует IOException
независимо от того, использую ли я его метод .Close()
или блок using
просто заканчивается. Процесс, который все еще удерживает дескриптор файла, — это сам веб-сервер webdev (я отлаживаю в VS2010 SP1).
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();
, если быть точнее:
Процесс не может получить доступ к файлу «C:\Users[мое имя пользователя]\AppData\Local\Temp\53b96eaf-74a6-49d7-a715-6c2e866a63c3.pdf», поскольку он используется другим процессом.
Либо я упускаю из виду что-то очевидное, либо есть проблема с классом PdfStamper
, о которой я пока не знаю. Используются версии itextsharp 5.3.3.0 и 5.4.0.0, проблема та же.
Мы будем очень признательны за любое понимание.
РЕДАКТИРОВАТЬ: В настоящее время я "кодирую" проблему, но не нашел решения.
filestream
доpdf reader
) - person Sayse   schedule 25.03.2013