예제 #1
0
파일: HTMLView.cs 프로젝트: kiwiroy/ApsimX
        /// <summary>
        /// Populate the view given the specified text.
        /// </summary>
        /// <param name="contents"></param>
        /// <param name="editingEnabled"></param>
        /// <returns></returns>
        private bool PopulateView(string contents, bool editingEnabled)
        {
            if (contents.Contains(@"{\rtf"))
            {
                richTextBox1.Rtf = contents;
            }
            else
            {
                var doc     = new MigraDoc.DocumentObjectModel.Document();
                var section = doc.AddSection();
                if (contents.Contains("<html>"))
                {
                    HtmlToMigraDoc.Convert(contents, section, ImagePath);
                }
                else
                {
                    MarkdownDeep.Markdown markDown = new MarkdownDeep.Markdown();
                    markDown.ExtraMode = true;
                    string html = markDown.Transform(contents);
                    editingEnabled = true;
                    HtmlToMigraDoc.Convert(html, section, ImagePath);
                }
                RtfDocumentRenderer renderer = new RtfDocumentRenderer();
                richTextBox1.Rtf = renderer.RenderToString(doc, null);
            }

            return(editingEnabled);
        }
예제 #2
0
        private MemoryStream RenderDocument()
        {
            switch (DocumentSettings.DocumentType)
            {
            case DocumentType.Rtf:
                var renderer       = new RtfDocumentRenderer();
                var documentString = renderer.RenderToString(Document, null);
                using (var stream = new MemoryStream())
                    using (var writer = new StreamWriter(stream))
                    {
                        writer.Write(documentString);
                        writer.Flush();
                        //stream.Position = 0;
                        stream.Seek(0, SeekOrigin.Begin);
                        return(stream);
                    }

            case DocumentType.Pdf:
                var pdfRenderer = new PdfDocumentRenderer(true);
                pdfRenderer.Document = Document;
                pdfRenderer.RenderDocument();
                using (var stream = new MemoryStream())
                {
                    pdfRenderer.PdfDocument.Save(stream, false);
                    stream.Seek(0, SeekOrigin.Begin);
                    return(stream);
                }

            default:
                throw new Exception("Unknown document type: " + DocumentSettings.DocumentType);
            }
        }
예제 #3
0
        public void MakeRtf(Stream stream, bool keepOpen = false, string workingDirectory = null)
        {
            var doc      = ClonedDocument();
            var renderer = new RtfDocumentRenderer();

#if MIGRADOC132
            if (!keepOpen)
            {
                renderer.Render(doc, stream, workingDirectory);
                return;
            }
            var str = renderer.RenderToString(doc, workingDirectory);

            StreamWriter strmWrtr = null;
            try
            {
                strmWrtr = new StreamWriter(stream, System.Text.Encoding.Default);
                strmWrtr.Write(str);
            }
            finally
            {
                if (strmWrtr != null)
                {
                    strmWrtr.Flush();
                    if (stream != null)
                    {
                        //if (!keepOpen)
                        //    strmWrtr.Close();
                        //else
                        stream.Position = 0; // Reset the stream position if the stream is kept open.
                    }
                }
            }
#else
            renderer.Render(doc, stream, !keepOpen, workingDirectory);
#endif
        }