Esempio n. 1
0
        public void WriteWebsiteHyperlink(Paragraph paragraph, string text, Uri uri, string relationshipId)
        {
            Hyperlink link = new Hyperlink()
            {
                Id = relationshipId
            };
            Run           run           = new Run();
            RunProperties runProperties = new RunProperties();
            RunStyle      runStyle      = new RunStyle()
            {
                Val = "Hyperlink"
            };

            runProperties.Append(runStyle);
            Text text1 = new Text()
            {
                Text = text
            };

            run.Append(runProperties);
            run.Append(text1);
            link.Append(run);
            paragraph.Append(link);
            mainDocumentPart.AddHyperlinkRelationship(uri, true, relationshipId);
        }
Esempio n. 2
0
        public Hyperlink CreateUrlHyperlink(MainDocumentPart mainPart, string text, string url, string style)
        {
            RunProperties rp = new RunProperties(
                new RunStyle()
            {
                Val = style
            });

            HyperlinkRelationship rel = mainPart.AddHyperlinkRelationship(new Uri(url), true);

            var hyperlink = new Hyperlink(
                new ProofError()
            {
                Type = ProofingErrorValues.GrammarStart
            },
                new Run(
                    rp,
                    new Text(text)))
            {
                History = true,
                Id      = rel.Id
            };

            return(hyperlink);
        }
Esempio n. 3
0
        private static Hyperlink CreateHyperlink(string text, string uri, MainDocumentPart main)
        {
            var hr = main.AddHyperlinkRelationship(new Uri(uri), true);

            return(new Hyperlink(
                       new Run(
                           new RunProperties(
                               new RunPropertiesBaseStyle(
                                   new Underline {
                Val = new EnumValue <UnderlineValues>(UnderlineValues.Single)
            },
                                   new Color {
                Val = "0000FF"
            })),
                           new Text(text)))
            {
                Id = hr.Id,
                TargetFrame = "_blank"
            });
        }
Esempio n. 4
0
        private void CreateParts(WordprocessingDocument document)
        {
            DocxBase.CurrentTitle = DocxServiceProvinceRes.Title;

            ExtendedFilePropertiesPart extendedFilePropertiesPart1 = document.AddNewPart <ExtendedFilePropertiesPart>("rId3");

            DocxBase.GenerateExtendedFilePropertiesPart1Content(extendedFilePropertiesPart1);

            MainDocumentPart mainDocumentPart1 = document.AddMainDocumentPart();

            GenerateMainDocumentPart1Content(mainDocumentPart1);

            FontTablePart fontTablePart1 = mainDocumentPart1.AddNewPart <FontTablePart>("rId13");

            DocxBase.GenerateFontTablePart1Content(fontTablePart1);

            StyleDefinitionsPart styleDefinitionsPart1 = mainDocumentPart1.AddNewPart <StyleDefinitionsPart>("rId3");

            DocxBase.GenerateStyleDefinitionsPart1Content(styleDefinitionsPart1);

            EndnotesPart endnotesPart1 = mainDocumentPart1.AddNewPart <EndnotesPart>("rId7");

            DocxBase.GenerateEndnotesPart1Content(endnotesPart1);

            FooterPart footerPart1 = mainDocumentPart1.AddNewPart <FooterPart>("rId12");

            DocxBase.GenerateFooterPart1Content(footerPart1);

            NumberingDefinitionsPart numberingDefinitionsPart1 = mainDocumentPart1.AddNewPart <NumberingDefinitionsPart>("rId2");

            DocxBase.GenerateNumberingDefinitionsPart1Content(numberingDefinitionsPart1);

            CustomXmlPart customXmlPart1 = mainDocumentPart1.AddNewPart <CustomXmlPart>("application/xml", "rId1");

            DocxBase.GenerateCustomXmlPart1Content(customXmlPart1);

            CustomXmlPropertiesPart customXmlPropertiesPart1 = customXmlPart1.AddNewPart <CustomXmlPropertiesPart>("rId1");

            DocxBase.GenerateCustomXmlPropertiesPart1Content(customXmlPropertiesPart1);

            FootnotesPart footnotesPart1 = mainDocumentPart1.AddNewPart <FootnotesPart>("rId6");

            DocxBase.GenerateFootnotesPart1Content(footnotesPart1);

            HeaderPart headerPart1 = mainDocumentPart1.AddNewPart <HeaderPart>("rId11");

            DocxBase.GenerateHeaderPart1Content(headerPart1);

            WebSettingsPart webSettingsPart1 = mainDocumentPart1.AddNewPart <WebSettingsPart>("rId5");

            DocxBase.GenerateWebSettingsPart1Content(webSettingsPart1);

            //ChartPart chartPart1 = mainDocumentPart1.AddNewPart<ChartPart>("rId10");
            //DocxBase.GenerateChartPart1Content(chartPart1);

            //EmbeddedPackagePart embeddedPackagePart1 = chartPart1.AddNewPart<EmbeddedPackagePart>("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "rId3");
            //DocxBase.GenerateEmbeddedPackagePart1Content(embeddedPackagePart1);

            //ChartColorStylePart chartColorStylePart1 = chartPart1.AddNewPart<ChartColorStylePart>("rId2");
            //DocxBase.GenerateChartColorStylePart1Content(chartColorStylePart1);

            //ChartStylePart chartStylePart1 = chartPart1.AddNewPart<ChartStylePart>("rId1");
            //DocxBase.GenerateChartStylePart1Content(chartStylePart1);

            DocumentSettingsPart documentSettingsPart1 = mainDocumentPart1.AddNewPart <DocumentSettingsPart>("rId4");

            DocxBase.GenerateDocumentSettingsPart1Content(documentSettingsPart1);

            //ChartPart chartPart2 = mainDocumentPart1.AddNewPart<ChartPart>("rId9");
            //DocxBase.GenerateChartPart2Content(chartPart2);

            //EmbeddedPackagePart embeddedPackagePart2 = chartPart2.AddNewPart<EmbeddedPackagePart>("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "rId3");
            //DocxBase.GenerateEmbeddedPackagePart2Content(embeddedPackagePart2);

            //ChartColorStylePart chartColorStylePart2 = chartPart2.AddNewPart<ChartColorStylePart>("rId2");
            //DocxBase.GenerateChartColorStylePart2Content(chartColorStylePart2);

            //ChartStylePart chartStylePart2 = chartPart2.AddNewPart<ChartStylePart>("rId1");
            //DocxBase.GenerateChartStylePart2Content(chartStylePart2);

            ThemePart themePart1 = mainDocumentPart1.AddNewPart <ThemePart>("rId14");

            DocxBase.GenerateThemePart1Content(themePart1);

            foreach (UsedHyperlink usedHyperlink in DocxBase.UsedHyperlinkList)
            {
                mainDocumentPart1.AddHyperlinkRelationship(new System.Uri(usedHyperlink.URL, System.UriKind.Absolute), true, usedHyperlink.Id.ToString());
            }

            DocxBase.SetPackageProperties(document);
        }
Esempio n. 5
0
        private OpenXmlElement Process(XmlReader xmlReader, OpenXmlElement current)
        {
            Paragraph cPara      = current as Paragraph;
            Run       cRun       = current as Run;
            Hyperlink cHyperlink = current as Hyperlink;
            Table     cTable     = current as Table;
            TableRow  cTableRow  = current as TableRow;
            TableCell cTableCell = current as TableCell;

            if (xmlReader.NodeType == XmlNodeType.Element)
            {
                // Do something for elements
                switch (xmlReader.Name)
                {
                case "p":
                    if (cPara != null)
                    {
                        break;
                    }

                    Paragraph newParagraph = new Paragraph(
                        new ParagraphProperties(
                            new ParagraphStyleId()
                    {
                        Val = Properties.Settings.Default.TemplateDescriptionStyle
                    }));
                    return(NewChild(current, newParagraph));

                case "b":
                    if (cPara != null)
                    {
                        Run newRun = new Run();
                        AddBoldToRun(newRun);
                        return(NewChild(current, newRun));
                    }
                    else if (cRun != null)
                    {
                        AddBoldToRun(cRun);
                        return(cRun);
                    }
                    break;

                case "i":
                    if (cPara != null)
                    {
                        Run newRun = new Run();
                        AddItalicsToRun(newRun);
                        return(NewChild(current, newRun));
                    }
                    else if (cRun != null)
                    {
                        AddItalicsToRun(cRun);
                        return(cRun);
                    }
                    break;

                case "a":
                    string    hrefAttr     = xmlReader.GetAttribute("href");
                    Hyperlink newHyperlink = new Hyperlink(
                        new ProofError()
                    {
                        Type = ProofingErrorValues.GrammarStart
                    });

                    if (!string.IsNullOrEmpty(hrefAttr))
                    {
                        Template foundTemplate = null;

                        if (hrefAttr.StartsWith("#") && hrefAttr.Length > 1)
                        {
                            foundTemplate = this.tdb.Templates.SingleOrDefault(y => y.Oid == hrefAttr.Substring(1));
                        }

                        if (foundTemplate != null)
                        {
                            newHyperlink.Anchor = foundTemplate.Bookmark;
                            newHyperlink.Append(
                                DocHelper.CreateRun(
                                    string.Format("{0} ({1})",
                                                  foundTemplate.Name,
                                                  foundTemplate.Oid)));
                        }
                        else
                        {
                            try
                            {
                                HyperlinkRelationship rel = mainPart.AddHyperlinkRelationship(new Uri(hrefAttr), true);
                                newHyperlink.History = true;
                                newHyperlink.Id      = rel.Id;
                            }
                            catch { }
                        }
                    }

                    if (cPara != null)
                    {
                        return(NewChild(current, newHyperlink));
                    }
                    break;

                case "ul":
                    this.currentListLevel++;
                    this.currentListStyle = "ListBullet";

                    if (current is Paragraph)
                    {
                        current = current.Parent;
                    }
                    break;

                case "ol":
                    this.currentListLevel++;
                    this.currentListStyle = "ListNumber";

                    if (current is Paragraph)
                    {
                        current = current.Parent;
                    }
                    break;

                case "li":
                    Paragraph bulletPara = new Paragraph(
                        new ParagraphProperties(
                            new ParagraphStyleId()
                    {
                        Val = this.currentListStyle
                    }));
                    return(NewChild(current, bulletPara));

                case "table":
                    Table newTable = new Table(
                        new TableProperties(),
                        new TableGrid());

                    return(NewChild(current, newTable));

                case "thead":
                    this.currentIsTableHeader = true;
                    break;

                case "tr":
                    if (cTable != null)
                    {
                        TableRow newTableRow = new TableRow();

                        if (this.currentIsTableHeader)
                        {
                            newTableRow.Append(
                                new TableRowProperties(
                                    new CantSplit(),
                                    new TableHeader()));
                        }

                        return(NewChild(current, newTableRow));
                    }
                    break;

                case "td":
                    if (cTableRow != null)
                    {
                        TableCell newCell = new TableCell();

                        if (this.currentIsTableHeader)
                        {
                            newCell.Append(
                                new TableCellProperties()
                            {
                                Shading = new Shading()
                                {
                                    Val   = new EnumValue <ShadingPatternValues>(ShadingPatternValues.Clear),
                                    Color = new StringValue("auto"),
                                    Fill  = new StringValue("E6E6E6")
                                }
                            });
                        }

                        // Cells' contents should be within a paragraph
                        Paragraph newPara = new Paragraph();
                        newCell.AppendChild(newPara);

                        current.Append(newCell);
                        return(newPara);
                    }
                    break;

                case "span":
                    if (cPara != null)
                    {
                        Run newRun = new Run();
                        return(NewChild(current, newRun));
                    }
                    break;

                case "root":
                case "tbody":
                    break;

                default:
                    throw new Exception("Unsupported wiki syntax");
                }
            }
            else if (xmlReader.NodeType == XmlNodeType.Text)
            {
                string text = xmlReader.Value
                              .Replace("&nbsp;", " ");

                if (current is Paragraph || current is TableCell)
                {
                    current.Append(DocHelper.CreateRun(text));
                }
                else if (cHyperlink != null)
                {
                    if (!(cHyperlink.LastChild is Run))
                    {
                        cHyperlink.Append(DocHelper.CreateRun(text));
                    }
                }
                else if (cRun != null)
                {
                    cRun.Append(new Text(text));
                }
            }
            else if (xmlReader.NodeType == XmlNodeType.EndElement)
            {
                if (xmlReader.Name == "thead")
                {
                    this.currentIsTableHeader = false;
                    return(current);
                }
                else if (xmlReader.Name == "tbody")
                {
                    return(current);
                }
                else if (xmlReader.Name == "td")
                {
                    // Expect that we are in a paragraph within a table cell, and when TD ends, we need to return two levels higher
                    if (cPara != null && cPara.Parent is TableCell)
                    {
                        return(current.Parent.Parent);
                    }
                }
                else if (xmlReader.Name == "a")
                {
                    // Make sure all runs within a hyperlink have the correct style
                    foreach (var cChildRun in current.ChildElements.OfType <Run>())
                    {
                        cChildRun.RunProperties.RunStyle = new RunStyle()
                        {
                            Val = Properties.Settings.Default.LinkStyle
                        };
                    }
                }
                else if (xmlReader.Name == "ul")
                {
                    this.currentListLevel--;
                }

                if (current.Parent == null)
                {
                    return(current);
                }

                return(current.Parent);
            }

            return(current);
        }