Получение проблемы ремонта в генерации PPT в приложении C# ASP.NET MVC с использованием OpenXML и HTMLagilityPack [закрыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получение проблемы ремонта в генерации PPT в приложении C# ASP.NET MVC с использованием OpenXML и HTMLagilityPack [закры

Сообщение Anonymous »

Кодовая часть 1: < /p>

Код: Выделить всё

using (MemoryStream stream = new MemoryStream())
{
using (PresentationDocument ppt = PresentationDocument.Create(stream, PresentationDocumentType.Presentation))
{
var presentationPart = ppt.AddPresentationPart();
presentationPart.Presentation = new P.Presentation();
EnsureSlideMaster(presentationPart);

var slideIdList = new SlideIdList();
uint slideId = 256U;

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlContent);

SlidePart slidePart = null;
int yOffset = 1000000;
uint shapeId = 2U;
const int MaxY = 6000000;

var nodes = doc.DocumentNode.SelectNodes("//h1|//h2|//h3|//p|//img|//ul|//ol");
if (nodes != null)
{
int listIndex = 0;
foreach (var node in nodes)
{
if (slidePart == null || yOffset > MaxY)
{
slidePart = AddNewSlide(presentationPart, slideIdList, ref slideId);
yOffset = 1000000;
shapeId = 2U;
listIndex = 0;
}

if (node.Name == "img")
{
string src = node.GetAttributeValue("src", "");
AddScaledImageToSlide(slidePart, slidePart.Slide.CommonSlideData.ShapeTree, src, shapeId++, yOffset);
yOffset += 3000000;
}
else if (node.Name.StartsWith("h") || node.Name == "p")
{
string paragraphText = node.InnerText.Trim();
var chunks = SplitIntoChunks(paragraphText, 300);

foreach (string chunk in chunks)
{
if (yOffset > MaxY)
{
slidePart = AddNewSlide(presentationPart, slideIdList, ref slideId);
yOffset = 1000000;
shapeId = 2U;
}

var para = new A.Paragraph();
para.ParagraphProperties = new A.ParagraphProperties() { Alignment = A.TextAlignmentTypeValues.Left };
ParseInlineFormatting(HtmlNode.CreateNode("
" + HttpUtility.HtmlEncode(chunk) + "
"), para);

int fontSize = 2400;
if (node.Name == "h1") fontSize = 4400;
else if (node.Name == "h2") fontSize = 3600;
else if (node.Name == "h3") fontSize = 3200;

foreach (var run in para.Elements())
{
run.RunProperties.FontSize = fontSize;
// Text color styling removed for compatibility with older SDK versions
}

AddTextShape(slidePart, para, shapeId++, yOffset);
yOffset += 1200000;
}
}
else if (node.Name == "ul" || node.Name == "ol")
{
bool isOrdered = node.Name == "ol";
var items = node.SelectNodes(".//li");
foreach (var item in items)
{
if (yOffset > MaxY)
{
slidePart = AddNewSlide(presentationPart, slideIdList, ref slideId);
yOffset = 1000000;
shapeId = 2U;
listIndex = 0;
}

var para = new A.Paragraph();
para.ParagraphProperties = new A.ParagraphProperties() { Alignment = A.TextAlignmentTypeValues.Left };
string bullet = isOrdered ? (++listIndex).ToString() + ".  " : "• ";
para.Append(new A.Run(new A.RunProperties() { FontSize = 2400 }, new A.Text(bullet)));
ParseInlineFormatting(item, para);

foreach (var run in para.Elements())
{
if (run.RunProperties == null) run.RunProperties = new A.RunProperties();
run.RunProperties.FontSize = 2400;
// Text color styling removed for compatibility with older SDK versions
}

AddTextShape(slidePart, para, shapeId++, yOffset);
yOffset += 1000000;
}
}
}
}
presentationPart.Presentation.SlideSize = new P.SlideSize() { Cx = 9144000, Cy = 6858000 };
presentationPart.Presentation.NotesSize = new NotesSize() { Cx = 6858000, Cy = 9144000 };
//presentationPart.Presentation.SlideIdList = slideIdList;
presentationPart.Presentation.Append(slideIdList);
presentationPart.Presentation.Save();
}

return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.presentationml.presentation", "GeneratedPresentation.pptx");
}
Кодовая часть 1 содержит первую часть метода создания презентации, а вторая часть содержит 2 -ю часть кода и добавление кода слайда, показанную ниже. Проблема.
Я хочу загрузить PPT без проблем с ремонтом.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-openxml
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Получение проблемы ремонта в генерации PPT в C# .NET MVC с использованием OpenXML и HTMLagilityPack
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Невозможно создать вторую таблицу в отчете PPT с помощью OpenXML.
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Автоматизация использования Autogen AI для извлечения Azure Migrate Resport и генерации PPT
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Автоматизация использования Autogen AI для извлечения Azure Migrate Resport и генерации PPT
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как добиться того же эффекта, что и ASP.Net MVC Server.Transfer в ASP.Net Core MVC?
    Anonymous » » в форуме C#
    0 Ответы
    98 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»