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(); }
/// <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; }
/// <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>()); } }
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 }
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); }
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); }