Batasi Pengeditan Presentasi dengan Kunci Shape di PHP
Gambaran Umum
Penggunaan umum Aspose.Slides for PHP via Java adalah untuk membuat, memperbarui, dan menyimpan presentasi PowerPoint (PPTX) sebagai bagian dari alur kerja otomatis. Ketika pengguna menerima presentasi ini, membatasi perubahan pada shape dapat membantu mempertahankan tata letak dan konten yang dimaksud.
Artikel ini menjelaskan bagaimana shape diatur pada slide dan cara menerapkan serta menghapus kunci shape dalam presentasi PPTX. Kunci ini memungkinkan Anda membatasi operasi pengeditan tertentu pada shape individu.
Komposisi Slide
Sebuah slide presentasi terdiri dari komponen seperti autoshape, tabel, objek OLE, shape yang dikelompokkan, bingkai gambar, bingkai video, konektor, dan elemen lain yang digunakan untuk membangun presentasi. Dalam Aspose.Slides for PHP via Java, setiap elemen pada slide diwakili oleh objek yang mewarisi dari kelas Shape .
Berbagai tipe shape memiliki opsi kunci yang berbeda. Kelas BaseShapeLock adalah kelas dasar untuk kunci shape. Aspose.Slides for PHP via Java menyediakan kelas kunci berikut:
- AutoShapeLock mengunci autoshape.
- ConnectorLock mengunci shape konektor.
- GraphicalObjectLock mengunci objek grafik.
- GroupShapeLock mengunci shape grup.
- PictureFrameLock mengunci bingkai gambar.
Untuk menerapkan kunci pada seluruh Presentation, iterasikan slide-nya dan tetapkan kunci yang sesuai pada setiap shape yang didukung.
Terapkan dan Hapus Perlindungan
Kunci shape membatasi operasi seperti memilih, memindahkan, dan mengubah ukuran shape. Kunci ini tidak membuat seluruh presentasi tidak dapat diedit.
Terapkan Perlindungan pada Shape PPTX
Aspose.Slides for PHP via Java menyediakan kelas Shape untuk bekerja dengan shape pada slide.
Contoh memanggil setSelectLocked, setPositionLocked, dan setSizeLocked dengan true untuk autoshape, serta kunci yang setara untuk shape grup, konektor, dan bingkai gambar. Konektor menggunakan setPositionMove untuk pergerakan; grup juga menggunakan setGroupingLocked untuk membatasi pengelompokan.
Contoh memuat presentasi PPTX yang ada, memeriksa shape dalam koleksi shape setiap slide, dan menyimpan salinan dengan pembatasan ini diterapkan. Shape di luar empat tipe yang ditangani dibiarkan tidak berubah. Loop tidak menelusuri shape anak di dalam grup.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("Sample.pptx");
try {
foreach ($presentation->getSlides()->toArray() as $slide) {
foreach ($slide->getShapes()->toArray() as $shape) {
if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setPositionLocked(true);
$shapeLock->setSelectLocked(true);
$shapeLock->setSizeLocked(true);
} elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.GroupShape"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setGroupingLocked(true);
$shapeLock->setPositionLocked(true);
$shapeLock->setSelectLocked(true);
$shapeLock->setSizeLocked(true);
} elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.Connector"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setPositionMove(true);
$shapeLock->setSelectLocked(true);
$shapeLock->setSizeLocked(true);
} elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.PictureFrame"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setPositionLocked(true);
$shapeLock->setSelectLocked(true);
$shapeLock->setSizeLocked(true);
}
}
}
$presentation->save("ProtectedSample.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Hapus Perlindungan
Untuk menghapus kunci shape, setel nilainya menjadi false. Contoh berikut memuat presentasi dengan kunci shape dan menghapus pembatasan pemilihan, pergerakan, serta pengubahan ukuran melalui AutoShapeLock, GroupShapeLock, ConnectorLock, dan PictureFrameLock. Ini juga menghapus pembatasan pengelompokan dengan memberikan false ke GroupShapeLock::setGroupingLocked dan menyimpan salinan presentasi. Pengaturan kunci lain dibiarkan tidak berubah.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("ProtectedSample.pptx");
try {
foreach ($presentation->getSlides()->toArray() as $slide) {
foreach ($slide->getShapes()->toArray() as $shape) {
if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setPositionLocked(false);
$shapeLock->setSelectLocked(false);
$shapeLock->setSizeLocked(false);
} elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.GroupShape"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setGroupingLocked(false);
$shapeLock->setPositionLocked(false);
$shapeLock->setSelectLocked(false);
$shapeLock->setSizeLocked(false);
} elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.Connector"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setPositionMove(false);
$shapeLock->setSelectLocked(false);
$shapeLock->setSizeLocked(false);
} elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.PictureFrame"))) {
$shapeLock = $shape->getShapeLock();
$shapeLock->setPositionLocked(false);
$shapeLock->setSelectLocked(false);
$shapeLock->setSizeLocked(false);
}
}
}
$presentation->save("RemovedProtectionSample.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Kesimpulan
Aspose.Slides for PHP via Java memungkinkan Anda membatasi operasi pengeditan tertentu pada shape individu atau menerapkan pembatasan yang sama pada seluruh slide. Pilih kunci yang didukung oleh masing-masing tipe shape, dan setel nilainya menjadi false ketika Anda perlu menghapus pembatasan tersebut.
FAQ
Apakah saya dapat menggabungkan kunci shape dan perlindungan kata sandi dalam presentasi yang sama?
Ya. Kunci shape membatasi operasi pengeditan tertentu, sementara password protection dapat membatasi pembukaan atau pengubahan presentasi. Anda dapat menggunakan keduanya dalam file yang sama.
Apakah saya dapat membatasi pengeditan pada slide tertentu tanpa memengaruhi slide lain?
Ya. Terapkan kunci hanya pada shape di slide yang dipilih. Ini tidak mengubah pengaturan kunci pada slide lain.
Bagaimana cara saya menerapkan kunci pada shape individu di dalam grup?
Iterasikan koleksi yang dikembalikan oleh metode getShapes milik grup dan terapkan kunci yang sesuai pada setiap shape anak. Ulangi ini untuk setiap grup bersarang. Contoh di atas hanya memproses koleksi shape slide, sehingga tidak menetapkan kunci pada anggota grup secara individu.