为什么ITextsharp第一次在此调试函数上抛出超时异常?

时间:2016-12-09 15:31:26

标签: c# itext immediate-window

我花了很多时间来调整我正在整理的PDF表,所以不要等到整个报告完成,下载它,打开它,向下滚动到相关部分...我把以下调试放在一起功能:

        public static void PreviewItextObject(PdfPTable table, PageStyle pageStyle)
        {
            using (PdfWriterChunk writerChunk = new PdfWriterChunk(pageStyle))
            {
                writerChunk.Document.NewPage();                    
                writerChunk.Document.Add(table);
                PreviewDocument(writerChunk.Document, writerChunk.memoryStream);
            }
        }
        public static void PreviewDocument(Document doc, MemoryStream ms)
        {
            doc.Close(); // have to close doc before embedding PDF
            var data = ms.ToArray();
            var filename = Path.GetTempFileName();
            filename += ".pdf";
            System.IO.File.WriteAllBytes(filename, data);
            System.Diagnostics.Process.Start(filename);
        }

我的PDFWriterChunk类看起来像这样:

        public PdfWriterChunk(PageStyle pageStyle)
        {
            memoryStream = new MemoryStream();
            var margin = GetMarginFromStyle(pageStyle);


            Document = new Document(pageStyle == PageStyle.LandScape ? PageSize.A4.Rotate() : PageSize.A4,
                margin.Left, margin.Right, margin.Top,
                margin.Bottom);
            Writer = PdfWriter.GetInstance(Document, memoryStream);
            Writer.SetPdfVersion(PDF_VERSION);
            Writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
            Writer.SetFullCompression();

            PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, Document.PageSize.Height, 0.75f);

            Document.Open();

            PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, Writer);
            Writer.SetOpenAction(action);
      }

让我自己从眼前的窗口打来电话。然而真正令人沮丧的是,当我从即时窗口调用它时,几乎每次第一次出现以下异常时,需要很长时间才能抛出:

  

在itextsharp.dll中发生未处理的“iTextSharp.text.DocumentException”类型异常   附加信息:操作已超时

只要我忽略该错误并再次运行它就可以了!

很明显,某些东西导致了document.add上的某种等待或锁定,这会导致漫长的等待导致异常。但我不确定是什么,任何人都有任何想法如何避免它?它总是发生在添加,新页面似乎很好。我总是在代码将它添加到真实文档时调用它,这在正常运行时也可以正常工作。

0 个答案:

没有答案