Создание файлов Docx с использованием HTML и CSS с DocumentFormat.OpenXml в ASP.Net Core 2.2 - PullRequest
1 голос
/ 14 апреля 2019

Можно ли создавать файлы Docx из HTML и CSS с помощью DocumentFormat.OpenXml?

Я хочу создать приложение Web API с использованием ASP.Net Core 2.2, которое генерирует файлы Docx, и другие приложения, которым необходимосгенерируйте Docx, вызовите мое приложение генератора Docx.

Другими словами, я хочу создать генератор Docx, чтобы другие приложения могли получить помощь от него (другие приложения, которые хотят получить помощь от моего генератора Docx, могут быть реализованы с помощьюлюбой язык программирования, например JavaScript).

Единственный способ, с помощью которого я нахожу связь между моими приложениями, - это использование строк HTML и CSS для генерации файлов Docx из их.

вне курса, если это возможно, другим способом.лучший способ сделать эту работу, пожалуйста, объясните это для меня.

в настоящее время я использую DocumentFormat.OpenXml для генерации файлов Docx.

        using (MemoryStream mem = new MemoryStream())
        {
            using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(mem, DocumentFormat.OpenXml.WordprocessingDocumentType.Document, true))
            {
                wordDoc.AddMainDocumentPart();
                // siga a ordem
                Document doc = new Document();
                Body body = new Body();


                // 1 paragrafo
                Paragraph para = new Paragraph();

                ParagraphProperties paragraphProperties1 = new ParagraphProperties();
                ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId() { Val = "Normal" };
                Justification justification1 = new Justification() { Val = JustificationValues.Center };
                ParagraphMarkRunProperties paragraphMarkRunProperties1 = new ParagraphMarkRunProperties();

                paragraphProperties1.Append(paragraphStyleId1);
                paragraphProperties1.Append(justification1);
                paragraphProperties1.Append(paragraphMarkRunProperties1);

                Run run = new Run();
                RunProperties runProperties1 = new RunProperties();

                Text text = new Text() { Text = "The OpenXML SDK rocks!" };

                // siga a ordem 
                run.Append(runProperties1);
                run.Append(text);
                para.Append(paragraphProperties1);
                para.Append(run);

                // 2 paragrafo
                Paragraph para2 = new Paragraph();

                ParagraphProperties paragraphProperties2 = new ParagraphProperties();
                ParagraphStyleId paragraphStyleId2 = new ParagraphStyleId() { Val = "Normal" };
                Justification justification2 = new Justification() { Val = JustificationValues.Start };
                ParagraphMarkRunProperties paragraphMarkRunProperties2 = new ParagraphMarkRunProperties();

                paragraphProperties2.Append(paragraphStyleId2);
                paragraphProperties2.Append(justification2);
                paragraphProperties2.Append(paragraphMarkRunProperties2);

                Run run2 = new Run();
                RunProperties runProperties3 = new RunProperties();
                Text text2 = new Text();
                text2.Text = "Teste aqui";

                run2.AppendChild(new Break());
                run2.AppendChild(new Text("Hello"));
                run2.AppendChild(new Break());
                run2.AppendChild(new Text("world"));

                para2.Append(paragraphProperties2);
                para2.Append(run2);

                // todos os 2 paragrafos no main body
                body.Append(para);
                body.Append(para2);

                doc.Append(body);

                wordDoc.MainDocumentPart.Document = doc;

                wordDoc.Close();
            }
            return File(mem.ToArray(), "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "ABC.docx");
        }
...