도형 잠금을 사용하여 프레젠테이션 편집 방지
배경
Aspose.Slides의 일반적인 사용 사례는 자동화된 워크플로의 일부로 Microsoft PowerPoint(PPTX) 프레젠테이션을 생성, 업데이트 및 저장하는 것입니다. 이러한 방식으로 Aspose.Slides를 사용하는 애플리케이션의 사용자는 생성된 프레젠테이션에 접근할 수 있으므로, 편집으로부터 보호하는 것이 일반적인 우려 사항입니다. 자동 생성된 프레젠테이션이 원래 서식과 내용을 유지하는 것이 중요합니다.
이 문서는 프레젠테이션과 슬라이드의 구조를 설명하고 Aspose.Slides for Java가 프레젠테이션에 보호를 적용한 다음 제거하는 방법을 안내합니다. 개발자가 애플리케이션이 생성하는 프레젠테이션의 사용 방식을 제어할 수 있는 방법을 제공합니다.
슬라이드 구성
프레젠테이션 슬라이드는 자동 도형, 표, OLE 개체, 그룹형 도형, 그림 프레임, 비디오 프레임, 커넥터 및 프레젠테이션을 구성하는 데 사용되는 기타 요소와 같은 구성 요소로 이루어집니다. Aspose.Slides for Java에서는 슬라이드의 각 요소가 IShape 인터페이스를 구현하거나 해당 클래스를 상속하는 객체로 표시됩니다.
PPTX의 구조는 복잡하기 때문에 PPT와 달리 모든 종류의 도형에 대해 일반적인 잠금만 사용할 수 없으며, 도형 유형마다 다른 잠금이 필요합니다. IBaseShapeLock 인터페이스는 PPTX용 일반 잠금 클래스입니다. Aspose.Slides for Java는 PPTX에서 다음 유형의 잠금을 지원합니다.
- IAutoShapeLock 은 자동 도형을 잠급니다.
- IConnectorLock 은 커넥터 도형을 잠급니다.
- IGraphicalObjectLock 은 그래픽 개체를 잠급니다.
- IGroupShapeLock 은 그룹 도형을 잠급니다.
- IPictureFrameLock 은 그림 프레임을 잠급니다.
Presentation 객체의 모든 도형 객체에 수행되는 작업은 전체 프레젠테이션에 적용됩니다.
보호 적용 및 제거
보호를 적용하면 프레젠테이션을 편집할 수 없게 됩니다. 이는 프레젠테이션 내용 보호에 유용한 기술입니다.
PPTX 도형에 보호 적용
Aspose.Slides for Java는 슬라이드의 도형을 다루기 위해 IShape 인터페이스를 제공합니다.
앞서 언급했듯이 각 도형 클래스에는 보호를 위한 도형‑잠금 클래스가 연결되어 있습니다. 이 문서에서는 NoSelect, NoMove 및 NoResize 잠금에 초점을 맞춥니다. 이러한 잠금은 도형을 선택(마우스 클릭 또는 기타 선택 방법)하거나 이동·크기 조정할 수 없도록 합니다.
다음 코드 샘플은 프레젠테이션의 모든 도형 유형에 보호를 적용합니다.
// PPTX 파일을 나타내는 Presentation 클래스를 인스턴스화합니다.
Presentation presentation = new Presentation("Sample.pptx");
// 프레젠테이션의 모든 슬라이드를 순회합니다.
for (ISlide slide : presentation.getSlides()) {
// 슬라이드의 모든 도형을 순회합니다.
for (IShape shape : slide.getShapes()) {
if (shape instanceof IAutoShape) {
// 도형을 자동 도형으로 형변환하고 해당 도형 잠금을 가져옵니다.
IAutoShape autoShape = (IAutoShape) shape;
IAutoShapeLock autoShapeLock = (IAutoShapeLock) autoShape.getShapeLock();
autoShapeLock.setPositionLocked(true);
autoShapeLock.setSelectLocked(true);
autoShapeLock.setSizeLocked(true);
} else if (shape instanceof IGroupShape) {
// 도형을 그룹 도형으로 형변환하고 해당 도형 잠금을 가져옵니다.
IGroupShape groupShape = (IGroupShape) shape;
IGroupShapeLock groupShapeLock = (IGroupShapeLock) groupShape.getShapeLock();
groupShapeLock.setGroupingLocked(true);
groupShapeLock.setPositionLocked(true);
groupShapeLock.setSelectLocked(true);
groupShapeLock.setSizeLocked(true);
} else if (shape instanceof IConnector) {
// 도형을 커넥터 도형으로 형변환하고 해당 도형 잠금을 가져옵니다.
IConnector connectorShape = (IConnector) shape;
IConnectorLock connectorShapeLock = connectorShape.getShapeLock();
connectorShapeLock.setPositionMove(true);
connectorShapeLock.setSelectLocked(true);
connectorShapeLock.setSizeLocked(true);
} else if (shape instanceof IPictureFrame) {
// 도형을 그림 프레임으로 형변환하고 해당 도형 잠금을 가져옵니다.
IPictureFrame pictureFrame = (IPictureFrame) shape;
IPictureFrameLock pictureFrameLock = (IPictureFrameLock) pictureFrame.getShapeLock();
pictureFrameLock.setPositionLocked(true);
pictureFrameLock.setSelectLocked(true);
pictureFrameLock.setSizeLocked(true);
}
}
}
// 프레젠테이션 파일을 저장합니다.
presentation.save("ProtectedSample.pptx", SaveFormat.Pptx);
presentation.dispose();
보호 제거
도형의 잠금을 해제하려면 적용된 잠금의 값을 false 로 설정합니다. 다음 코드 샘플은 잠긴 프레젠테이션에서 도형의 잠금을 해제하는 방법을 보여줍니다.
// PPTX 파일을 나타내는 Presentation 클래스를 인스턴스화합니다.
Presentation presentation = new Presentation("ProtectedSample.pptx");
// 프레젠테이션의 모든 슬라이드를 순회합니다.
for (ISlide slide : presentation.getSlides()) {
// 슬라이드의 모든 도형을 순회합니다.
for (IShape shape : slide.getShapes()) {
if (shape instanceof IAutoShape) {
// 도형을 자동 도형으로 형변환하고 해당 도형 잠금을 가져옵니다.
IAutoShape autoShape = (IAutoShape) shape;
IAutoShapeLock autoShapeLock = (IAutoShapeLock) autoShape.getShapeLock();
autoShapeLock.setPositionLocked(false);
autoShapeLock.setSelectLocked(false);
autoShapeLock.setSizeLocked(false);
} else if (shape instanceof IGroupShape) {
// 도형을 그룹 도형으로 형변환하고 해당 도형 잠금을 가져옵니다.
IGroupShape groupShape = (IGroupShape) shape;
IGroupShapeLock groupShapeLock = (IGroupShapeLock) groupShape.getShapeLock();
groupShapeLock.setGroupingLocked(false);
groupShapeLock.setPositionLocked(false);
groupShapeLock.setSelectLocked(false);
groupShapeLock.setSizeLocked(false);
} else if (shape instanceof IConnector) {
// 도형을 커넥터 도형으로 형변환하고 해당 도형 잠금을 가져옵니다.
IConnector connectorShape = (IConnector) shape;
IConnectorLock connectorShapeLock = connectorShape.getShapeLock();
connectorShapeLock.setPositionMove(false);
connectorShapeLock.setSelectLocked(false);
connectorShapeLock.setSizeLocked(false);
} else if (shape instanceof IPictureFrame) {
// 도형을 그림 프레임으로 형변환하고 해당 도형 잠금을 가져옵니다.
IPictureFrame pictureFrame = (IPictureFrame) shape;
IPictureFrameLock pictureFrameLock = (IPictureFrameLock) pictureFrame.getShapeLock();
pictureFrameLock.setPositionLocked(false);
pictureFrameLock.setSelectLocked(false);
pictureFrameLock.setSizeLocked(false);
}
}
}
// 프레젠테이션 파일을 저장합니다.
presentation.save("RemovedProtectionSample.pptx", SaveFormat.Pptx);
presentation.dispose();
결론
Aspose.Slides는 프레젠테이션 내 도형을 보호하는 여러 옵션을 제공합니다. 개별 도형을 잠그거나 프레젠테이션의 모든 도형을 순회하면서 각각을 잠가 파일 전체를 효과적으로 보호할 수 있습니다. 잠금 값을 false 로 설정하면 보호를 제거할 수 있습니다.
FAQ
같은 프레젠테이션에서 도형 잠금과 비밀번호 보호를 함께 사용할 수 있나요?
예. 잠금은 파일 내부 객체의 편집을 제한하고, password protection은 열기 및/또는 저장 시 변경을 제어합니다. 이 두 메커니즘은 상호 보완적으로 작동합니다.
특정 슬라이드만 편집을 제한하고 다른 슬라이드는 그대로 두고 싶나요?
예. 선택된 슬라이드의 도형에만 잠금을 적용하면 나머지 슬라이드는 계속 편집할 수 있습니다.
도형 잠금이 그룹 객체와 커넥터에도 적용되나요?
예. 그룹, 커넥터, 그래픽 객체 및 기타 도형 종류에 대해 전용 잠금 유형이 지원됩니다.