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 без проблем с ремонтом.>
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 }
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 }
return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.presentationml.presentation", "GeneratedPresentation.pptx"); } [/code] Кодовая часть 1 содержит первую часть метода создания презентации, а вторая часть содержит 2 -ю часть кода и добавление кода слайда, показанную ниже. Проблема. Я хочу загрузить PPT без проблем с ремонтом.>
Кодовая часть 1 содержит первую часть метода создания презентации, а вторая часть содержит 2 -ю часть кода и добавление кода слайда, показанного ниже.
Тот, кто может решить эту проблему.>
У меня есть этот код. Я могу отлично генерировать отчет pptx с текстовыми данными. В этом отчете у меня также есть 4 таблицы с динамическими данными. Я могу создать одну таблицу в PPT, но не могу создать несколько.
Требование : справа у меня есть 4...
im новичок в Autogen AI, в настоящее время используя Autogen Version 0.7 Автоматизация с использованием Autogen AI для извлечения отчета о оценке Azure Azure и генерации PPT с использованием агента Autogen Agents Group Chat Agent, но иногда все...
im новичок в Autogen AI, в настоящее время используя Autogen Version 0.7 Автоматизация с использованием Autogen AI для извлечения отчета о оценке Azure Azure и генерации PPT с использованием агента Autogen Agents Group Chat Agent, но иногда все...
Я новичок в такого рода миграции. Пожалуйста, помогите мне!
TransferResult требуется ли это в Asp.Net Core MVC .Net8 при переходе с MVC? (на основе ответа Маркуса Олссона)
Если да, то как изменить код для перехода с .net 4.8 на .net 8.0
Я получаю...