簡報鎖定
簡報鎖定
使用 Aspose.Slides 的一個常見用途是於自動化工作流程中建立、更新與儲存 Microsoft PowerPoint 2007 (PPTX) 簡報。以此方式使用 Aspose.Slides 的應用程式使用者可取得輸出簡報。保護它們免於編輯是常見的需求。自動產生的簡報必須保留其原始格式與內容,這點相當重要。
本文說明簡報與投影片的建構方式,以及 Aspose.Slides for .NET 如何對簡報加上保護,並在之後移除保護。此功能是 Aspose.Slides 所特有的,撰寫本文時 Microsoft PowerPoint 尚未提供此功能。它讓開發人員得以控制其應用程式所建立的簡報的使用方式。
投影片的組成
PPTX 投影片由多種元件組成,例如自動圖形、表格、OLE 物件、群組圖形、圖片框、影片框、連接線以及其他可用來建立簡報的各種元素。
在 Aspose.Slides for .NET 中,投影片上的每個元素都會轉換成 Shape 物件。換句話說,投影片上的每個元素要麼是 Shape 物件,要麼是繼承自 Shape 物件的類別。
PPTX 的結構相當複雜,與 PPT 不同,後者可以使用通用鎖定來對所有類型的圖形進行鎖定;在 PPTX 中,針對不同圖形類型有不同的鎖定類型。BaseShapeLock 類別是通用的 PPTX 鎖定類別。Aspose.Slides for .NET 在 PPTX 中支援以下類型的鎖定。
- AutoShapeLock 鎖定自動圖形。
- ConnectorLock 鎖定連接線圖形。
- GraphicalObjectLock 鎖定圖形物件。
- GroupshapeLock 鎖定群組圖形。
- PictureFrameLock 鎖定圖片框。
對 Presentation 物件中所有 Shape 物件執行的任何操作,都會套用至整個簡報。
套用與移除保護
套用保護可確保簡報無法被編輯。這是一種保護簡報內容的實用技術。
將保護套用至 PPTX Shape
Aspose.Slides for .NET 提供 Shape 類別來處理投影片上的圖形。
如前所述,每個圖形類別都有相對應的圖形鎖定類別以實作保護。本文聚焦於 NoSelect、NoMove 與 NoResize 鎖定。這些鎖定可確保圖形無法被選取(透過滑鼠點擊或其他選取方式),且無法移動或調整大小。
以下程式碼範例會將保護套用至簡報中所有圖形類型。
//實例化表示 PPTX 檔案的 Presentation 類別
PresentationEx pTemplate = new PresentationEx("Applying Protection.pptx");//實例化表示 PPTX 檔案的 Presentation 類別
//用於存取簡報中投影片的 ISlide 物件
SlideEx slide = pTemplate.Slides[0];
//用於保存暫時形狀的 IShape 物件
ShapeEx shape;
//遍歷簡報中的所有投影片
for (int slideCount = 0; slideCount < pTemplate.Slides.Count; slideCount++)
{
slide = pTemplate.Slides[slideCount];
//遍歷投影片中的所有圖形
for (int count = 0; count < slide.Shapes.Count; count++)
{
shape = slide.Shapes[count];
//如果圖形是自動圖形
if (shape is AutoShapeEx)
{
//將類型轉換為自動圖形並取得自動圖形鎖定
AutoShapeEx Ashp = shape as AutoShapeEx;
AutoShapeLockEx AutoShapeLock = Ashp.ShapeLock;
//套用圖形鎖定
AutoShapeLock.PositionLocked = true;
AutoShapeLock.SelectLocked = true;
AutoShapeLock.SizeLocked = true;
}
//如果圖形是群組圖形
else if (shape is GroupShapeEx)
{
//將類型轉換為群組圖形並取得群組圖形鎖定
GroupShapeEx Group = shape as GroupShapeEx;
GroupShapeLockEx groupShapeLock = Group.ShapeLock;
//套用圖形鎖定
groupShapeLock.GroupingLocked = true;
groupShapeLock.PositionLocked = true;
groupShapeLock.SelectLocked = true;
groupShapeLock.SizeLocked = true;
}
//如果圖形是連接線
else if (shape is ConnectorEx)
{
//將類型轉換為連接線圖形並取得連接線圖形鎖定
ConnectorEx Conn = shape as ConnectorEx;
ConnectorLockEx ConnLock = Conn.ShapeLock;
//套用圖形鎖定
ConnLock.PositionMove = true;
ConnLock.SelectLocked = true;
ConnLock.SizeLocked = true;
}
//如果圖形是圖片框
else if (shape is PictureFrameEx)
{
//將類型轉換為圖片框圖形並取得圖片框圖形鎖定
PictureFrameEx Pic = shape as PictureFrameEx;
PictureFrameLockEx PicLock = Pic.ShapeLock;
//套用圖形鎖定
PicLock.PositionLocked = true;
PicLock.SelectLocked = true;
PicLock.SizeLocked = true;
}
}
}
//儲存簡報檔案
pTemplate.Save("ProtectedSample.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
移除保護
使用 Aspose.Slides for .NET 套用的保護只能以 Aspose.Slides for .NET 移除。若要解除圖形的鎖定,只需將已套用的鎖定值設為 false。以下程式碼範例示範如何在已鎖定的簡報中解除圖形的鎖定。
//開啟所需的簡報
PresentationEx pTemplate = new PresentationEx("ProtectedSample.pptx");
//ISlide 物件,用於存取簡報中的投影片
SlideEx slide = pTemplate.Slides[0];
//IShape 物件,用於保存暫時的圖形
ShapeEx shape;
//遍歷簡報中的所有投影片
for (int slideCount = 0; slideCount < pTemplate.Slides.Count; slideCount++)
{
slide = pTemplate.Slides[slideCount];
//遍歷投影片中的所有圖形
for (int count = 0; count < slide.Shapes.Count; count++)
{
shape = slide.Shapes[count];
//如果圖形是自動圖形
if (shape is AutoShapeEx)
{
//將類型轉換為自動圖形並取得自動圖形鎖定
AutoShapeEx Ashp = shape as AutoShapeEx;
AutoShapeLockEx AutoShapeLock = Ashp.ShapeLock;
//套用圖形鎖定
AutoShapeLock.PositionLocked = false;
AutoShapeLock.SelectLocked = false;
AutoShapeLock.SizeLocked = false;
}
//如果圖形是群組圖形
else if (shape is GroupShapeEx)
{
//將類型轉換為群組圖形並取得群組圖形鎖定
GroupShapeEx Group = shape as GroupShapeEx;
GroupShapeLockEx groupShapeLock = Group.ShapeLock;
//套用圖形鎖定
groupShapeLock.GroupingLocked = false;
groupShapeLock.PositionLocked = false;
groupShapeLock.SelectLocked = false;
groupShapeLock.SizeLocked = false;
}
//如果圖形是連接線圖形
else if (shape is ConnectorEx)
{
//將類型轉換為連接線圖形並取得連接線圖形鎖定
ConnectorEx Conn = shape as ConnectorEx;
ConnectorLockEx ConnLock = Conn.ShapeLock;
//套用圖形鎖定
ConnLock.PositionMove = false;
ConnLock.SelectLocked = false;
ConnLock.SizeLocked = false;
}
//如果圖形是圖片框
else if (shape is PictureFrameEx)
{
//將類型轉換為圖片框圖形並取得圖片框圖形鎖定
PictureFrameEx Pic = shape as PictureFrameEx;
PictureFrameLockEx PicLock = Pic.ShapeLock;
//套用圖形鎖定
PicLock.PositionLocked = false;
PicLock.SelectLocked = false;
PicLock.SizeLocked = false;
}
}
}
//儲存簡報檔案
pTemplate.Save("RemoveProtectionSample.pptx", Aspose.Slides.Export.SaveFormat.Pptx);