コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }