Skip to content

Commit 8a993b3

Browse files
Merge pull request #41 from groupdocs-editor/edit-slide-by-number
[WIP] Add slide number usage on save, update slides dimensions values…
2 parents e16aaec + 87f6459 commit 8a993b3

2 files changed

Lines changed: 56 additions & 10 deletions

File tree

Demos/MVC/src/Products/Editor/Controllers/EditorApiController.cs

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using System.Net;
1616
using System.Net.Http;
1717
using System.Net.Http.Headers;
18+
using System.Text.RegularExpressions;
1819
using System.Web;
1920
using System.Web.Http;
2021
using System.Web.Http.Cors;
@@ -286,6 +287,11 @@ public HttpResponseMessage SaveFile(EditDocumentRequest postedData)
286287
saveOptions.EnablePagination = true;
287288
}
288289

290+
if (saveOptions is PresentationSaveOptions)
291+
{
292+
saveOptions.SlideNumber = postedData.getPageNumber() + 1;
293+
}
294+
289295
using (FileStream outputStream = File.Create(tempPath))
290296
{
291297
editor.Save(htmlContentDoc, outputStream, saveOptions);
@@ -670,16 +676,43 @@ private LoadDocumentEntity LoadDocument(string guid, string password)
670676
PresentationEditOptions presentationEditOptions = new PresentationEditOptions();
671677
// Specify slide index from original document.
672678
editOptions.SlideNumber = i; // Because index is 0-based, it is 1st slide
673-
EditableDocument slideBeforeEdit = editor.Edit(presentationEditOptions);
674-
675-
// Get document as a single base64-encoded string, where all resources (images, fonts, etc)
676-
// are embedded inside this string along with main textual content
677-
string allEmbeddedInsideString = slideBeforeEdit.GetEmbeddedHtml();
678-
PageDescriptionEntity page = new PageDescriptionEntity();
679-
page.SetData(allEmbeddedInsideString);
680-
page.number = i + 1;
681-
loadDocumentEntity.SetPages(page);
682-
slideBeforeEdit.Dispose();
679+
using (EditableDocument slideBeforeEdit = editor.Edit(editOptions))
680+
{
681+
// Get document as a single base64-encoded string, where all resources (images, fonts, etc)
682+
// are embedded inside this string along with main textual content
683+
string allEmbeddedInsideString = slideBeforeEdit.GetEmbeddedHtml();
684+
PageDescriptionEntity page = new PageDescriptionEntity();
685+
if (allEmbeddedInsideString.IndexOf(".slide", StringComparison.Ordinal) > -1)
686+
{
687+
// TODO: extract from controller
688+
string regex = @"\.slide.{(.*?)}";
689+
Match match = Regex.Match(allEmbeddedInsideString, regex, RegexOptions.IgnoreCase);
690+
if (match.Success)
691+
{
692+
string rules = match.Groups[1].Value.Trim().TrimEnd(';');
693+
Dictionary<string, string> keyValuePairs = rules.Split(';')
694+
.Select(value => value.Split(':'))
695+
.ToDictionary(pair => pair[0].Trim(), pair => pair[1].Trim());
696+
697+
if (keyValuePairs.ContainsKey("height"))
698+
{
699+
string height = string.Empty;
700+
keyValuePairs.TryGetValue("height", out height);
701+
page.height = Convert.ToDouble(height.Replace("pt", "").Replace("px", ""));
702+
}
703+
704+
if (keyValuePairs.ContainsKey("width"))
705+
{
706+
string width = string.Empty;
707+
keyValuePairs.TryGetValue("width", out width);
708+
page.width = Convert.ToDouble(width.Replace("pt", "").Replace("px", ""));
709+
}
710+
}
711+
}
712+
page.SetData(allEmbeddedInsideString);
713+
page.number = i + 1;
714+
loadDocumentEntity.SetPages(page);
715+
}
683716
}
684717
}
685718
}

Demos/MVC/src/Products/Editor/Entity/Web/Request/EditDocumentRequest.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ public class EditDocumentRequest : LoadDocumentEntity
1515
[JsonProperty]
1616
private String password;
1717

18+
[JsonProperty]
19+
private int pageNumber;
20+
1821
public String getContent()
1922
{
2023
return content;
@@ -34,5 +37,15 @@ public void setPassword(String password)
3437
{
3538
this.password = password;
3639
}
40+
41+
public int getPageNumber()
42+
{
43+
return pageNumber;
44+
}
45+
46+
public void setPageNumber(int pageNumber)
47+
{
48+
this.pageNumber = pageNumber;
49+
}
3750
}
3851
}

0 commit comments

Comments
 (0)