[英]Insert Picture to an existing shape
我在 PPTX 文檔中插入圖像時遇到問題。
我想創建一個基於幻燈片蒙版的新幻燈片。 我使用此代碼在現有形狀中設置圖片
class Program
{
public static void Run()
{
string dataDir = ConfigurationManager.AppSettings["directoryToSave"];
string srcDir = String.Concat(ConfigurationManager.AppSettings["Source"], "Master.pptx");
string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
//string file = Path.Combine(appData, srcDir);
using (Presentation presentation = new Presentation(srcDir))
{
IMasterLayoutSlideCollection layoutSlides = presentation.Masters[0].LayoutSlides;
ILayoutSlide layoutSlide = null;
foreach (ILayoutSlide titleAndObjectLayoutSlide in layoutSlides)
{
if (titleAndObjectLayoutSlide.Name == "TITRE_CONTENU")
{
layoutSlide = titleAndObjectLayoutSlide;
break;
}
}
string filePath = String.Concat(ConfigurationManager.AppSettings["Source"], @"Logos\bp.png");
Image imgs = (Image)new Bitmap(filePath);
setShapePicture(presentation, layoutSlide, "picture", imgs);
presentation.Slides.InsertEmptySlide(0, layoutSlide);
presentation.Save(dataDir + "AddLayoutSlides_out.pptx", SaveFormat.Pptx);
}
}
public static void setShapePicture(Presentation doc, ILayoutSlide layoutSlide, string shapeName, Image image)
{
var logo_shape = layoutSlide.Shapes.SingleOrDefault(r => r.Name.Equals(shapeName));
IPPImage imgx = doc.Images.AddImage(image);
//Add Picture Frame with height and width equivalent of Picture
logo_shape.FillFormat.FillType = FillType.Picture;
// Set the picture fill mode
logo_shape.FillFormat.PictureFillFormat.PictureFillMode = PictureFillMode.Stretch;
// Set the picture
logo_shape.FillFormat.PictureFillFormat.Picture.Image = imgx;
}
static void Main(string[] args)
{
try
{
var path = ConfigurationManager.AppSettings["sourceAsposeLicensePath"];
License license = new License();
license.SetLicense(path);
Run();
}
catch (Exception ex)
{
Console.WriteLine("Error" + ex.Message);
}
finally
{
Console.WriteLine("Terminated");
Console.ReadKey();
}
}
}
我在生成的文件中得到的是一個帶有背景圖片和占位符的形狀。 您可以在此鏈接MasterSlide+Logos+Output中找到所有資源
我已經觀察到您分享的要求,並且喜歡分享占位符不是實際形狀,而是給出形狀的骨架。 為了您的方便,我創建了一個示例代碼,可以幫助您實現您的要求。
public static void TestPlaceholderImage()
{
String path = "C:\\Aspose Data\\";
Presentation pres = new Presentation(path + "TestPicture.pptx");
foreach (ISlide slide in pres.Slides)
{
foreach (IShape shape in slide.Shapes)
{
if (shape.Placeholder != null)
{
if (shape.Placeholder.Type == PlaceholderType.Picture)
{
// Instantiate the ImageEx class
System.Drawing.Image img = (System.Drawing.Image)new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg");
IPPImage imgx = pres.Images.AddImage(img);
shape.FillFormat.FillType = FillType.Picture;
shape.FillFormat.PictureFillFormat.Picture.Image = imgx;
if (shape is AutoShape)
{
ITextFrame text = ((IAutoShape)shape).TextFrame;
text.Text = " ";
text.Paragraphs[0].ParagraphFormat.Bullet.Type = BulletType.None;
}
}
}
}
}
pres.Save(path + "Addedpic.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
我在 Aspose 擔任支持開發人員/傳播者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.