Простой PDF, созданный с помощью iTextSharp, не может быть открыт Acrobat Reader? - PullRequest
5 голосов
/ 13 августа 2010

Я создаю простой тестовый PDF-документ, используя iTextSharp.Я просто использую PdfContentByte, чтобы показать текст.Это код:

    Document document = new Document();
    Stream outStream = new FileStream("D:\\aaa\\test.pdf", FileMode.OpenOrCreate);
    PdfWriter writer = PdfWriter.GetInstance(document, outStream);
    document.Open();
    PdfContentByte to = writer.DirectContent;
    to.BeginText();
    to.SetFontAndSize(BaseFont.CreateFont(), 12);
    to.SetTextMatrix(0, 0);
    to.ShowText("aaa");
    to.EndText();
    document.Close();
    outStream.Close();

Файл создан, но когда я пытаюсь открыть его (с помощью Acrobat Reader), все, что я получаю, это следующее сообщение:

Ошибка при открытии этого документа.При чтении этого документа возникла проблема (14).

Где проблема?Как мне это исправить?Спасибо

Ответы [ 2 ]

3 голосов
/ 20 августа 2010

Проблема была решена после перезапуска VS. Изменение кода не было сделано.

2 голосов
/ 13 августа 2010

Я не могу воспроизвести проблему, с которой вы столкнулись, но, пожалуйста, примите во внимание потенциальную утечку ресурсов из-за любых исключительных условий, с которыми вы можете столкнуться, и правильно Dispose() эти объекты как таковые:

    using (Stream outStream = new FileStream("D:\\aaa\\test.pdf", FileMode.OpenOrCreate))
    {
        Document document = new Document();
        PdfWriter writer = PdfWriter.GetInstance(document, outStream);

        document.Open();
        try
        {
            PdfContentByte to = writer.DirectContent;

            to.BeginText();
            try
            {
                to.SetFontAndSize(BaseFont.CreateFont(), 12);
                to.SetTextMatrix(0, 0);
                to.ShowText("aaa");
            }
            finally
            {
                to.EndText();
            }
        }
        finally
        {
            document.Close();
        }
    }
...