public static void ConvertHandler(IHttpContext context)
        {
            DocumentConverterResult result;

            try
            {
                var inputDocument  = new BackSlashPath(ExamplesConfiguration.UnprotectString(context.Request["inputDocument"]));
                var outputFormat   = (DocumentFormat)Enum.Parse(typeof(DocumentFormat), context.Request["outputFormat"]);
                var fileName       = inputDocument.FileNameWithoutExtension + "." + DocumentFormatInfo.Get(outputFormat).DefaultExtension;
                var outputPath     = ConvertedPath.Append(context.Session.Id).Append(fileName);
                var outputDocument = outputPath.Append(fileName);

                if (Directory.Exists(outputPath))
                {
                    Directory.Delete(outputPath, true);
                }
                Directory.CreateDirectory(outputPath);
                result = DocumentUltimate.DocumentConverter.Convert(inputDocument, outputDocument, outputFormat);
            }
            catch (Exception exception)
            {
                context.Response.Output.Write("<span style=\"color: red; font-weight: bold\">Conversion failed</span><br/>");
                context.Response.Output.Write(exception.Message);
                return;
            }

            context.Response.Output.Write("<span style=\"color: green; font-weight: bold\">Conversion successful</span>");
            context.Response.Output.Write("<br/>Conversion time: " + result.ElapsedTime);
            context.Response.Output.Write("<br/>Output files:");

            if (result.OutputFiles.Length > 1)
            {
                context.Response.Output.Write(" - " + GetZipDownloadLink(new FileInfo(result.OutputFiles[0]).Directory));
            }

            context.Response.Output.Write("<br/><ol>");
            foreach (var outputFile in result.OutputFiles)
            {
                if (outputFile.EndsWith("\\"))
                {
                    var directoryInfo = new DirectoryInfo(outputFile);
                    context.Response.Output.Write(string.Format(
                                                      "<br/><li><b>{0}\\</b> - {1}</li>",
                                                      directoryInfo.Name,
                                                      GetZipDownloadLink(directoryInfo))
                                                  );
                }
                else
                {
                    var fileInfo = new FileInfo(outputFile);
                    context.Response.Output.Write(string.Format(
                                                      "<br/><li><b>{0}</b> ({1} bytes) - {2}</li>",
                                                      fileInfo.Name,
                                                      fileInfo.Length,
                                                      GetDownloadLink(fileInfo))
                                                  );
                }
            }
            context.Response.Output.Write("<br/></ol>");
        }
        public ActionResult Overview()
        {
            var model = new OverviewViewModel
            {
                ExampleFileSelector = new ExampleFileSelector
                {
                    ID          = "exampleFileSelector",
                    InitialFile = "Default.pdf"
                }
            };

            var inputDocument = model.ExampleFileSelector.SelectedFile;
            var fileInfo      = new FileInfo(inputDocument);
            var inputFormat   = DocumentFormatInfo.Get(inputDocument);

            model.InputFormat = inputFormat != null ? inputFormat.Description : "(not supported)";

            PopulatePossibleOutputFormats(inputDocument, model);

            model.ConvertHandlerUrl = ExamplesConfiguration.GetDynamicDownloadUrl(
                ConvertHandlerName,
                new NameValueCollection
            {
                { "inputDocument", ExamplesConfiguration.ProtectString(inputDocument) },
                { "version", fileInfo.LastWriteTimeUtc.Ticks + "-" + fileInfo.Length }
            });

            return(View(model));
        }
        private void PopulatePossibleOutputFormats(string inputDocument)
        {
            var outputFormats = new Dictionary <string, List <ListItem> >();

            foreach (var format in DocumentUltimate.DocumentConverter.EnumeratePossibleOutputFormats(inputDocument))
            {
                var formatInfo = DocumentFormatInfo.Get(format);

                List <ListItem> groupData;
                if (!outputFormats.TryGetValue(formatInfo.Group.Description, out groupData))
                {
                    groupData = new List <ListItem>();
                    outputFormats.Add(formatInfo.Group.Description, groupData);
                }
                groupData.Add(new ListItem(formatInfo.Description, formatInfo.Value.ToString()));
            }

            if (outputFormats.Count == 0)
            {
                outputFormats.Add("(not supported)", new List <ListItem>());
            }

            OutputFormats.DataSource = outputFormats;
            OutputFormats.DataBind();
        }
Example #4
0
 /// <summary>
 /// Initialize instance
 /// </summary>
 public DomTableCell()
 {
     Multiline         = true;
     Format            = new DocumentFormatInfo();
     VerticalAlignment = RtfVerticalAlignment.Top;
     PaddingBottom     = int.MinValue;
     PaddingRight      = int.MinValue;
     PaddingTop        = int.MinValue;
     PaddingLeft       = int.MinValue;
     ColSpan           = 1;
     RowSpan           = 1;
     Height            = 0;
     Width             = 0;
     Left = 0;
     Format.BorderWidth = 1;
 }
Example #5
0
 /// <summary>
 /// Initialize instance
 /// </summary>
 public DomTableCell()
 {
     Multiline = true;
     Format = new DocumentFormatInfo();
     VerticalAlignment = RtfVerticalAlignment.Top;
     PaddingBottom = int.MinValue;
     PaddingRight = int.MinValue;
     PaddingTop = int.MinValue;
     PaddingLeft = int.MinValue;
     ColSpan = 1;
     RowSpan = 1;
     Height = 0;
     Width = 0;
     Left = 0;
     Format.BorderWidth = 1;
 }
 private void PopulateOutputFormats(PossibleViewModel model)
 {
     foreach (var formatInfo in DocumentFormatInfo.Enumerate(DocumentFormatSupport.Save))
     {
         List <SelectListItem> groupData;
         if (!model.OutputFormats.TryGetValue(formatInfo.Group.Description, out groupData))
         {
             groupData = new List <SelectListItem>();
             model.OutputFormats.Add(formatInfo.Group.Description, groupData);
         }
         groupData.Add(new SelectListItem
         {
             Text  = formatInfo.Description,
             Value = formatInfo.Value.ToString()
         });
         model.OutputFormatCount++;
     }
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            var inputDocument = exampleFileSelector.SelectedFile;
            var fileInfo      = new FileInfo(inputDocument);

            var inputFormat = DocumentFormatInfo.Get(inputDocument);

            InputFormat = inputFormat != null ? inputFormat.Description : "(not supported)";

            PopulatePossibleOutputFormats(inputDocument);

            ConvertHandlerUrl = ExamplesConfiguration.GetDynamicDownloadUrl(
                ConvertHandlerName,
                new NameValueCollection
            {
                { "inputDocument", ExamplesConfiguration.ProtectString(inputDocument) },
                { "version", fileInfo.LastWriteTimeUtc.Ticks + "-" + fileInfo.Length }
            });
        }
        private void PopulateOutputFormats()
        {
            var outputFormats = new Dictionary <string, List <ListItem> >();

            foreach (var formatInfo in DocumentFormatInfo.Enumerate(DocumentFormatSupport.Save))
            {
                List <ListItem> groupData;
                if (!outputFormats.TryGetValue(formatInfo.Group.Description, out groupData))
                {
                    groupData = new List <ListItem>();
                    outputFormats.Add(formatInfo.Group.Description, groupData);
                }
                groupData.Add(new ListItem(formatInfo.Description, formatInfo.Value.ToString()));
                OutputFormatCount++;
            }

            OutputFormats.DataSource = outputFormats;
            OutputFormats.DataBind();
        }
        private void PopulatePossibleOutputFormats(string inputDocument, OverviewViewModel model)
        {
            foreach (var format in DocumentConverter.EnumeratePossibleOutputFormats(inputDocument))
            {
                var formatInfo = DocumentFormatInfo.Get(format);

                List <SelectListItem> groupData;
                if (!model.OutputFormats.TryGetValue(formatInfo.Group.Description, out groupData))
                {
                    groupData = new List <SelectListItem>();
                    model.OutputFormats.Add(formatInfo.Group.Description, groupData);
                }
                groupData.Add(new SelectListItem
                {
                    Text  = formatInfo.Description,
                    Value = formatInfo.Value.ToString()
                });
            }

            if (model.OutputFormats.Count == 0)
            {
                model.OutputFormats.Add("(not supported)", new List <SelectListItem>());
            }
        }
Example #10
0
        private void ReadContent(
            RTFDomElement parentNode,
            DomDocument doc,
            DomElementList result,
            DocumentFormatInfo format)
        {
            if (format == null)
            {
                format = new DocumentFormatInfo();
            }
            //if ( parentNode == null || parentNode.Elements == null)
            //{
            //    System.Console.WriteLine("");
            //    return;
            //}
            foreach (RTFDomElement element in parentNode.Elements)
            {
                if (element is RTFDomHeader)
                {
                    if (((RTFDomHeader)element).HasContentElement)
                    {
                        XTextDocumentHeaderElement header = new XTextDocumentHeaderElement();
                        doc.PageSettings.HeaderDistance = (int)(GraphicsUnitConvert.FromTwips(
                                                                    (double)this._RTFDocument.HeaderDistance,
                                                                    GraphicsUnit.Inch) * 100.0);
                        result.Add(header);
                        ReadContent(element, doc, header.Elements, format);
                    }
                }
                else if (element is RTFDomFooter)
                {
                    if (((RTFDomFooter)element).HasContentElement)
                    {
                        XTextDocumentFooterElement footer = new XTextDocumentFooterElement();
                        doc.PageSettings.FooterDistance = (int)(GraphicsUnitConvert.FromTwips(
                                                                    (double)this._RTFDocument.FooterDistance,
                                                                    GraphicsUnit.Inch) * 100.0);
                        result.Add(footer);
                        ReadContent(element, doc, footer.Elements, format);
                    }
                }
                else if (element is RTFDomParagraph)
                {
                    RTFDomParagraph domP = (RTFDomParagraph)element;
                    //XTextParagraph p = new XTextParagraph();
                    //p.OwnerDocument = doc;
                    DocumentContentStyle style = ToDocumentContentStyle(
                        domP.Format,
                        doc.DocumentGraphicsUnit);
                    ReadContent(element, doc, result, domP.Format);

                    if (domP.IsTemplateGenerated == false ||
                        this.ImportTemplateGenerateParagraph)
                    {
                        DomParagraphFlagElement eof = new DomParagraphFlagElement();
                        eof.StyleIndex = doc.ContentStyles.GetStyleIndex(style);
                        result.Add(eof);
                    }
                }
                else if (element is RTFDomText)
                {
                    RTFDomText domText = (RTFDomText)element;
                    if (domText.Format.Hidden == false &&
                        domText.Text != null &&
                        domText.Text.Length > 0)
                    {
                        DocumentContentStyle style = ToDocumentContentStyle(
                            domText.Format,
                            doc.DocumentGraphicsUnit);
                        int si = doc.ContentStyles.GetStyleIndex(style);
                        result.AddRange(doc.CreateChars(domText.Text, si));
                    }
                }
                else if (element is RTFDomImage)
                {
                    // 插入图片
                    RTFDomImage     domImg = (RTFDomImage)element;
                    DomImageElement img    = new DomImageElement();
                    img.OwnerDocument = doc;
                    img.Image         = new XImageValue(domImg.Data);
                    DocumentContentStyle style = ToDocumentContentStyle(
                        domImg.Format,
                        doc.DocumentGraphicsUnit);
                    img.StyleIndex = doc.ContentStyles.GetStyleIndex(style);
                    img.Width      = GraphicsUnitConvert.FromTwips(domImg.Width, doc.DocumentGraphicsUnit);
                    img.Height     = GraphicsUnitConvert.FromTwips(domImg.Height, doc.DocumentGraphicsUnit);
                    result.Add(img);
                }


                else if (element is RTFDomShape)
                {
                }
                else if (element is RTFDomShapeGroup)
                {
                }
                else if (element is RTFDomLineBreak)
                {
                    // 软回车
                    result.Add(new DomLineBreakElement());// doc.CreateLineBreak());
                }

                else if (element.Elements != null &&
                         element.Elements.Count > 0)
                {
                    ReadContent(element, doc, result, format.Clone());
                }
            }//foreach
        }
Example #11
0
        public static DocumentContentStyle ToDocumentContentStyle(
            DocumentFormatInfo format,
            GraphicsUnit documentUnit)
        {
            if (format == null)
            {
                throw new ArgumentNullException("format");
            }

            DocumentContentStyle result = new DocumentContentStyle();

            switch (format.Align)
            {
            case RTFAlignment.Left:
                result.Align = DocumentContentAlignment.Left;
                break;

            case RTFAlignment.Center:
                result.Align = DocumentContentAlignment.Center;
                break;

            case RTFAlignment.Right:
                result.Align = DocumentContentAlignment.Right;
                break;

            case RTFAlignment.Justify:
                result.Align = DocumentContentAlignment.Justify;
                break;
            }
            result.BackgroundColor = format.BackColor;
            if (format.BackColor == Color.White)
            {
                result.BackgroundColor = Color.Transparent;
            }
            result.Bold          = format.Bold;
            result.BorderColor   = format.BorderColor;
            result.BorderStyle   = format.BorderStyle;
            result.BorderLeft    = format.LeftBorder;
            result.BorderTop     = format.TopBorder;
            result.BorderBottom  = format.BottomBorder;
            result.BorderRight   = format.RightBorder;
            result.BorderWidth   = format.BorderWidth;
            result.BorderSpacing = GraphicsUnitConvert.FromTwips(
                format.BorderSpacing,
                documentUnit);
            if (format.LeftBorder ||
                format.TopBorder ||
                format.RightBorder ||
                format.BottomBorder)
            {
                if (format.BorderThickness)
                {
                    result.BorderWidth = 2;
                }
                else
                {
                    result.BorderWidth = 1;
                }
            }
            result.BulletedList = format.BulletedList;
            result.FontName     = format.FontName;
            result.FontSize     = format.FontSize;
            result.Italic       = format.Italic;
            result.LeftIndent   = GraphicsUnitConvert.FromTwips(
                format.LeftIndent,
                documentUnit);

            if (format.LineSpacing == 0)
            {
                // 单倍行距
                result.LineSpacingStyle = LineSpacingStyle.SpaceSingle;
            }
            else if (format.LineSpacing < 0)
            {
                // 行间距是固定值
                result.LineSpacingStyle = LineSpacingStyle.SpaceSpecify;
                result.LineSpacing      = GraphicsUnitConvert.FromTwips(format.LineSpacing, documentUnit);
            }
            else
            {
                if (format.MultipleLineSpacing)
                {
                    // 多倍行距
                    result.LineSpacingStyle = LineSpacingStyle.SpaceMultiple;
                    result.LineSpacing      = format.LineSpacing / 240.0f;
                }
                else
                {
                    // 最小行距
                    result.LineSpacingStyle = LineSpacingStyle.SpaceExactly;
                }
            }

            result.Link            = format.Link;
            result.NumberedList    = format.NumberedList;
            result.FirstLineIndent = GraphicsUnitConvert.FromTwips(
                format.ParagraphFirstLineIndent,
                documentUnit);
            result.Spacing = GraphicsUnitConvert.FromTwips(
                format.Spacing,
                documentUnit);
            result.SpacingBeforeParagraph = GraphicsUnitConvert.FromTwips(
                format.SpacingBefore,
                documentUnit);
            result.SpacingAfterParagraph = GraphicsUnitConvert.FromTwips(
                format.SpacingAfter,
                documentUnit);
            result.Strikeout   = format.Strikeout;
            result.Subscript   = format.Subscript;
            result.Superscript = format.Superscript;
            result.Color       = format.TextColor;
            result.Underline   = format.Underline;

            return(result);
        }
Example #12
0
        public static DocumentFormatInfo ToDocumentFormatInfo(
            DocumentContentStyle style,
            GraphicsUnit documentUnit)
        {
            if (style == null)
            {
                throw new ArgumentNullException("style");
            }
            DocumentFormatInfo result = new DocumentFormatInfo();

            switch (style.Align)
            {
            case DocumentContentAlignment.Left:
                result.Align = RTFAlignment.Left;
                break;

            case DocumentContentAlignment.Center:
                result.Align = RTFAlignment.Center;
                break;

            case DocumentContentAlignment.Right:
                result.Align = RTFAlignment.Right;
                break;

            case DocumentContentAlignment.Justify:
                result.Align = RTFAlignment.Justify;
                break;
            }
            result.BackColor    = style.BackgroundColor;
            result.Bold         = style.Bold;
            result.BulletedList = style.BulletedList;
            result.FontName     = style.FontName;
            result.FontSize     = style.FontSize;
            result.Italic       = style.Italic;

            result.LeftBorder    = style.BorderLeft;
            result.TopBorder     = style.BorderTop;
            result.RightBorder   = style.BorderRight;
            result.BottomBorder  = style.BorderBottom;
            result.BorderColor   = style.BorderColor;
            result.BorderStyle   = style.BorderStyle;
            result.BorderSpacing = (int)GraphicsUnitConvert.ToTwips(
                style.BorderSpacing,
                documentUnit);
            result.LeftIndent = (int)GraphicsUnitConvert.ToTwips(
                style.LeftIndent,
                documentUnit);
            result.LineSpacing = (int)GraphicsUnitConvert.ToTwips(
                style.LineSpacing,
                documentUnit);
            result.Link                     = style.Link;
            result.NumberedList             = style.NumberedList;
            result.ParagraphFirstLineIndent = (int)GraphicsUnitConvert.ToTwips(
                style.FirstLineIndent,
                documentUnit);
            result.Spacing = (int)GraphicsUnitConvert.ToTwips(
                style.Spacing,
                documentUnit);
            result.Strikeout   = style.Strikeout;
            result.Subscript   = style.Subscript;
            result.Superscript = style.Superscript;
            result.TextColor   = style.Color;
            result.Underline   = style.Underline;
            return(result);
        }