public void HandleCandidateDocument(string filepath) { collectOnTimeoutEvent.WaitOne(); Document document = null; FileStream stream = null; try { stream = fileReader.AttemptToReadFile(filepath); document = new Document(filepath, stream); foreach (var handler in handlersChain) { if (handler.Value.Handle(document)) { break; } } } catch (Exception e) { SimpleLog.WriteLine($"exception during handling {e.Message}"); if (document != null) { exceptionsHandler.Handle(document, e); } } finally { stream?.Dispose(); timeoutTimer.Change(timeout, Timeout.Infinite); } }
public Stream Join(IEnumerable <Document> documents) { var documentStream = new MemoryStream(); var outputDocument = new PdfDocument(); foreach (var document in documents) { if (token.IsCancellationRequested) { break; } var page = new PdfPage(outputDocument); var context = XGraphics.FromPdfPage(page); using (var file = fileReader.AttemptToReadFile(document.FullPath)) using (var image = XImage.FromStream(file)) { context.DrawImage(image, new XPoint(0D, 0D)); outputDocument.AddPage(page); } } if (outputDocument.PageCount > 0) { outputDocument.Save(documentStream, closeStream: false); } documentStream.Seek(0L, SeekOrigin.Begin); return(documentStream); }