ITextSharp «В документе нет страниц». ошибкаC#

Место общения программистов C#
Ответить
Anonymous
 ITextSharp «В документе нет страниц». ошибка

Сообщение Anonymous »

Я создаю PDF-файл с изображением. Я получаю изображение, сначала сохраняю его на сервере, а затем создаю с его помощью изображение iTextSharp;

iTextSharp.text.Image backgroundImage = iTextSharp.text.Image.GetInstance(path);


В этой строке появляется ошибка «В документе нет страниц».

Вот StackTrace:

location: iTextSharp.text.pdf.PdfPages.WritePageTree()
location: iTextSharp.text.pdf.PdfWriter.Close()
location: iTextSharp.text.pdf.PdfDocument.Close()
location: iTextSharp.text.pdf.PdfWriter.Close()
location: iTextSharp.text.DocWriter.Dispose()
location: MyProject.Helpers.FileUploadHelper.SaveMarathonCertificateTemplate(HttpRequestBase Request, String _fileName, CertificateOrientation orientation) c:\MyProject\Helpers\FileUploadHelper.cs : line 68
location: MyProject.Controllers.CertificateController.Add(Int32 marathonId, MarathonCertificate marathonCertificate) c:\MyProject\Controllers\CertificateController.cs: line 74


Вчера код работал хорошо, но сегодня, как ни странно, я получаю эту ошибку. Вот мой код:

using (var fs = new FileStream(pdfFileName, FileMode.Create))
{
using (var pdfDoc = new iTextSharp.text.Document())
{
if (orientation == CertificateOrientation.HORIZONTAL)
pdfDoc.SetPageSize(PageSize.A4.Rotate());
using (var w = PdfWriter.GetInstance(pdfDoc, fs))
{
pdfDoc.Open();
pdfDoc.NewPage(); // add Page here

iTextSharp.text.Image backgroundImage = iTextSharp.text.Image.GetInstance(path);

if (orientation == CertificateOrientation.HORIZONTAL)
{
backgroundImage.ScaleAbsoluteWidth(Config.PdfActualSizeHorizontal[0]);
backgroundImage.ScaleAbsoluteHeight(Config.PdfActualSizeHorizontal[1]);
}
else if (orientation == CertificateOrientation.VERTICAL)
{
backgroundImage.ScaleAbsoluteWidth(Config.PdfActualSizeVertical[0]);
backgroundImage.ScaleAbsoluteHeight(Config.PdfActualSizeVertical[1]);
}
backgroundImage.SetAbsolutePosition(0, 0);
pdfDoc.Add(backgroundImage);

pdfDoc.Close();
}
}
}


Я не могу понять, в чем проблема. Есть ли какое-нибудь решение?


РЕДАКТИРОВАТЬ:


Я добавил строку перед получением экземпляра изображения

pdfDoc.Add(new Paragraph(" "));


После этого ошибка становится такой:


Обнаружено исключение System.ObjectDisposeException Сообщение=Невозможно получить доступ к
закрытому файлу.


Новый StackTrace:

location: System.IO.__Error.FileNotOpen()
location: System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)
location: iTextSharp.text.pdf.OutputStreamCounter.Write(Byte[] buffer, Int32 offset, Int32 count)
location: iTextSharp.text.pdf.PdfIndirectObject.WriteTo(Stream os)
location: iTextSharp.text.pdf.PdfWriter.PdfBody.Write(PdfIndirectObject indirect, Int32 refNumber, Int32 generation)
location: iTextSharp.text.pdf.PdfWriter.PdfBody.Add(PdfObject objecta, Int32 refNumber, Int32 generation, Boolean inObjStm)
location: iTextSharp.text.pdf.PdfWriter.PdfBody.Add(PdfObject objecta, PdfIndirectReference refa, Boolean inObjStm)
location: iTextSharp.text.pdf.PdfWriter.PdfBody.Add(PdfObject objecta, PdfIndirectReference refa)
location: iTextSharp.text.pdf.PdfWriter.AddToBody(PdfObject objecta, PdfIndirectReference refa)
location: iTextSharp.text.pdf.Type1Font.WriteFont(PdfWriter writer, PdfIndirectReference piref, Object[] parms)
location: iTextSharp.text.pdf.FontDetails.WriteFont(PdfWriter writer)
location: iTextSharp.text.pdf.PdfWriter.AddSharedObjectsToBody()
location: iTextSharp.text.pdf.PdfWriter.Close()
location: iTextSharp.text.DocWriter.Dispose()
location: MyProject.Helpers.FileUploadHelper.SaveMarathonCertificateTemplate(HttpRequestBase Request, String _fileName, CertificateOrientation orientation) c:\MyProject\Helpers\FileUploadHelper.cs: line 70
location: MyProject.Controllers.CertificateController.Add(Int32 marathonId, MarathonCertificate marathonCertificate) c:\MyProject\Controllers\CertificateController.cs: line 74


Подробнее здесь: https://stackoverflow.com/questions/280 ... ages-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»