Пример #1
0
 internal ParagraphSearchResult(int startIndex, int length, RunSearchResult[] runs, DocumentContentContainer container)
 {
     this.container = container;
     StartIndex     = startIndex;
     Length         = length;
     Runs           = runs;
 }
Пример #2
0
 public RunDrawing(XElement xml, DocumentContentContainer documentContentContainer) : base(xml)
 {
     if (xml.Name != Namespaces.w + "drawing")
     {
         throw new ArgumentException($"XML element must be drawing but was {xml.Name}", nameof(xml));
     }
     this.documentContentContainer = documentContentContainer;
 }
Пример #3
0
 internal Paragraph(XElement xml, DocumentContentContainer parent) : base(xml, parent)
 {
 }
Пример #4
0
        internal static Table Create(CreateTableParameters parameters, DocumentContentContainer parent)
        {
            if (parameters.Rows < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(parameters.Rows), parameters.Rows, "Rows must be greater than 0");
            }

            if (parameters.ColumnWidths.Length < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(parameters.ColumnWidths), parameters.ColumnWidths.Length, "ColumnWidths must not be empty");
            }

            var columnWidths    = parameters.ColumnWidths;
            var columnWidthUnit = parameters.ColumnWidthUnit;

            int[] computedColumnWidths = columnWidths.Select(value => ComputeWidth(columnWidthUnit, value)).ToArray();

            if (columnWidthUnit == WidthUnit.Pc)             // Fixing the last width so the sum of Pct widths equals 5000 for LibreOffice
            {
                computedColumnWidths[computedColumnWidths.Length - 1] += 5000 - computedColumnWidths.Sum();
            }

            var tbl = new XElement(Namespaces.w + "tbl");

            // //This code below is commented out as it does not actually impact behavior
            // if (parameters.ColumnWidthUnit != WidthUnit.Pc)
            // {
            //  var tableGrid = new XElement(Namespaces.w + "tblGrid");
            //  foreach (var c in computedColumnWidths)
            //      tableGrid.Add(new XElement(Namespaces.w + "gridCol", new XAttribute(Namespaces.w + "w", c)));
            //
            //  tbl.Add(tableGrid);
            // }

            for (var r = 0; r < parameters.Rows; r++)
            {
                var row = new XElement(Namespaces.w + "tr");

                foreach (var c in computedColumnWidths)
                {
                    var cell = CreateTableCell(columnWidthUnit == WidthUnit.Pc, c);
                    row.Add(cell);
                }

                tbl.Add(row);
            }

            var table = new Table(tbl, parent);

            var properties = table.Properties;

            properties.StyleId    = parameters.Style;
            properties.LayoutType = TableLayoutType.Fixed;

            if (parameters.TableWidth.HasValue && parameters.TableWidthUnit.HasValue)
            {
                if (parameters.TableWidthUnit == WidthUnit.Pc)
                {
                    properties.PreferredWidthFp = ComputeWidth(WidthUnit.Pc, parameters.TableWidth.Value);
                }
                else
                {
                    properties.PreferredWidthTw = ComputeWidth(parameters.TableWidthUnit.Value, parameters.TableWidth.Value);
                }
            }

            return(table);
        }
Пример #5
0
 internal Table(XElement xml, DocumentContentContainer parent) : base(xml, parent)
 {
 }
Пример #6
0
 internal Run(XElement xml, DocumentContentContainer contentContainer) : base(xml)
 {
     this.contentContainer = contentContainer;
 }
Пример #7
0
        internal static Run Create(string text, DocumentContentContainer contentContainer)
        {
            var xml = new XElement(Namespaces.w + "r", BuildContent(text).Select(e => e.Xml));

            return(new Run(xml, contentContainer));
        }
Пример #8
0
        internal static Run CreateEmpty(DocumentContentContainer contentContainer)
        {
            var xml = new XElement(Namespaces.w + "r");

            return(new Run(xml, contentContainer));
        }