Содержание
0. Схема
0.1 Видео с примером работы решения
1. Описание API
- GET /files/{имя результирующего файла} — результирующий файл
- POST /run — form multipart @param(filename) — файл с программой для DC
- POST /upload — form multipart @param(filename) — файл для редактирования
2. Типовые шаблоны
2.1. Создание документа
2.1.1. Загружаем и выполняем программу
curl -sS -D - -F 'filename=@examples/docx.js' http://localhost:8080/run
Листинг файла docx.js для примера
builder.CreateFile("docx"); var oDocument = Api.GetDocument(); var oNewDocumentStyle = oDocument.GetStyle("Heading 1"); var oParagraph = oDocument.GetElement(0); var oRun = Api.CreateRun(); var EvenOdd; oParagraph.SetStyle(oNewDocumentStyle); oParagraph.SetJc("center"); oParagraph.AddText("Лев Николаевич"); oParagraph.AddLineBreak(); oParagraph.AddText("Толстой"); oParagraph.AddLineBreak(); oParagraph.AddLineBreak(); oParagraph.AddText("Война и мир"); oDocument.Push(oParagraph); oParagraph.AddPageBreak(); function MakeoParagraph(runNumber, headerText, textMessage) { if (runNumber % 2 == 0) { EvenOdd = " нечётная"; } else { EvenOdd = " чётная"; } var oParagraph3 = Api.CreateParagraph(); var oNewDocumentStyle = oDocument.GetStyle("Heading 2"); oParagraph3.SetStyle(oNewDocumentStyle); oParagraph3.AddText(headerText + " №"+ (runNumber +1) + EvenOdd); oDocument.Push(oParagraph3); oParagraph3.AddElement(oRun); oDocument.Push(oParagraph3); var oParagraph4 = Api.CreateParagraph(); oParagraph4.AddText(textMessage); oParagraph4.AddElement(oRun); oParagraph4.AddPageBreak(); oDocument.Push(oParagraph4); } for (let nRunIncrease = 0; nRunIncrease < 5; ++nRunIncrease) { MakeoParagraph (nRunIncrease, "Глава", "Князь Василий говорил всегда лениво, как актер говорит роль старой пиесы. Анна Павловна Шерер, напротив, несмотря на свои сорок лет, была преисполнена оживления и порывов."); } var oParagraph2 = Api.CreateParagraph(); oParagraph2.AddText("Последний Абзац. Абзац."); oDocument.Push(oParagraph2); var oSection = oDocument.GetFinalSection(); oFooter = oSection.GetFooter("default", true); oParagraph = oFooter.GetElement(0); oParagraph.SetJc("center"); oParagraph.AddText("Страница №"); oParagraph.AddPageNumber(); var oTocPr = {"ShowPageNums": true, "RightAlgn": true, "LeaderType": "dot", "FormatAsLinks": true, "BuildFrom": {"OutlineLvls": 9}, "TocStyle": "standard"}; oDocument.AddTableOfContents(oTocPr); builder.SaveFile("docx", "docconstructorTextEditor.docx"); builder.CloseFile();
2.1.2. Выгружаем финальный результат
curl -sS -D - 'http://localhost:8080/files/docconstructorTextEditor.docx'
Пример полученного файла
2.2. Редактирование документа
2.2.1. Загружаем шаблон для редактирования
curl -sS -D - -F 'filename=@examples/test11.xls' http://localhost:8080/upload
2.2.2. Загружаем и выполняем программу
curl -sS -D - -F 'filename=@examples/edxls.js' http://localhost:8080/run
Листинг файла edxls.js для примера
builder.OpenFile("test11.xls"); var oWorksheet = Api.GetActiveSheet(); oWorksheet.SetName("sheet 1"); oWorksheet.GetRange("B1").SetValue("Row 1"); oWorksheet.GetRange("C1").SetValue("Row 2"); oWorksheet.GetRange("D1").SetValue("Row 3"); oWorksheet.GetRange("A2").SetValue("Category 1"); oWorksheet.GetRange("A3").SetValue("Category 2"); oWorksheet.GetRange("A4").SetValue("Category 3"); oWorksheet.GetRange("A5").SetValue("Category 4"); oWorksheet.GetRange("B2").SetValue("4.3"); oWorksheet.GetRange("B3").SetValue("2.5"); oWorksheet.GetRange("B4").SetValue("3.5"); oWorksheet.GetRange("B5").SetValue("4.5"); oWorksheet.GetRange("C2").SetValue("2.4"); oWorksheet.GetRange("C3").SetValue("4.4"); oWorksheet.GetRange("C4").SetValue("1.8"); oWorksheet.GetRange("C5").SetValue("2.8"); oWorksheet.GetRange("D2").SetValue("2"); oWorksheet.GetRange("D3").SetValue("2"); oWorksheet.GetRange("D4").SetValue("3"); oWorksheet.GetRange("D5").SetValue("5"); var oChart = oWorksheet.AddChart("'sheet 1'!$A$1:$D$5", true, "bar", 2, 100 * 36000, 70 * 36000, 0, 2 * 36000, 9, 3 * 36000); oChart.SetVerAxisTitle("Vertical Title", 10); oChart.SetHorAxisTitle("Horizontal Title", 11); oChart.SetLegendPos("right"); oChart.SetShowDataLabels(false, false, true, false); oChart.SetTitle("Main Chart Title", 13); var oFill = Api.CreateSolidFill(Api.CreateRGBColor(51, 51, 51)); oChart.SetSeriesFill(oFill, 0, false); oFill = Api.CreateSolidFill(Api.CreateRGBColor(255, 111, 61)); oChart.SetSeriesFill(oFill, 1, false); oFill = Api.CreateSolidFill(Api.CreateRGBColor(128, 128, 128)); oChart.SetSeriesFill(oFill, 2, false); oFill = Api.CreateSolidFill(Api.CreateRGBColor(255, 213, 191)); oChart.SetSeriesFill(oFill, 3, false); oWorksheet.AddDefName("chart data", "Sheet1!$A$1:$D$5"); oWorksheet.GetRange("A8").SetValue("We defined a name 'chart data' for a range of cells A1:D5."); var oGs1 = Api.CreateGradientStop(Api.CreateRGBColor(255, 213, 191), 0); var oGs2 = Api.CreateGradientStop(Api.CreateRGBColor(255, 111, 61), 100000); oFill = Api.CreateLinearGradientFill([oGs1, oGs2], 5400000); var oStroke = Api.CreateStroke(0, Api.CreateNoFill()); oWorksheet.AddShape("flowChartOnlineStorage", 60 * 36000, 35 * 36000, oFill, oStroke, 0, 2 * 36000, 25, 3 * 36000); oWorksheet.FormatAsTable("A1:D5"); builder.SaveFile("xlsx", "example.xls"); builder.CloseFile();
2.2.3. Выгружаем финальный результат
curl -sS -D - 'http://localhost:8080/files/example.xls'