у меня есть этот код:.iTextSharp: «Документ не открыт» ошибка - когда это на самом деле
private static byte[] ConvertPdfDocument(Document document, PdfPTable headerTable, PdfPTable affidavitsTable)
{
byte[] b;
using (MemoryStream ms = new MemoryStream())
{
PdfWriter writer = PdfWriter.GetInstance(document, ms);
if (document.IsOpen() == false)
{
document.Open();
}
document.Add(headerTable);
document.Add(affidavitsTable);
document.Close();
writer.Close();
b = ms.ToArray();
}
return b;
}
Открыта «документ» объект (используя document.Open()
вне этого метода затем передается в
условия document.IsOpen()
имеет значение правда, я еще раз подтвердил, что документ фактически открыт, глядя на частные свойствах «документ» объект в отладчике;. он показывает, что «Open» является «истинным»
. Соответственно, выполнение переходит к линия document.Add(headerTable)
.
И в этот момент выдается исключение: «Документ не открыт». И хотя отладчик остановлен (из-за того, что это исключение выбрасывается), используя те же два способа, которые описаны выше, я могу еще см. Документ открыт.
Как это могло быть?
Я погуглить на некоторое время, но не могу найти ничего, кроме того же вопроса, публикуемую here без ответа ...
Любая помощь будет принята с благодарностью.
Спасибо большое, Элиэзер
Пауло, вы правы; открытие документа «снова» (например, document.Open();) действительно работает. Но почему метод IsOpen() возвращает True, когда это, по-видимому, не так? ... – Eliezer