Javaでプレゼンテーションを開く
ゼロからPowerPointプレゼンテーションを作成するだけでなく、Aspose.Slidesを使用すると、既存のプレゼンテーションを開くこともできます。プレゼンテーションを読み込んだ後、その情報を取得したり、プレゼンテーションを編集したり(スライド上のコンテンツ)、新しいスライドを追加したり、既存のスライドを削除したりすることができます。
プレゼンテーションを開く
既存のプレゼンテーションを開くには、Presentationクラスをインスタンス化し、開きたいプレゼンテーションのファイルパスをそのコンストラクタに渡すだけです。
このJavaコードは、プレゼンテーションを開く方法と、その中に含まれるスライドの数を取得する方法を示しています:
// Presentationクラスをインスタンス化し、ファイルパスをコンストラクタに渡します
Presentation pres = new Presentation("Presentation.pptx");
try {
// プレゼンテーションに含まれるスライドの総数を出力します
System.out.println(pres.getSlides().size());
} finally {
if (pres != null) pres.dispose();
}
パスワード保護されたプレゼンテーションを開く
パスワード保護されたプレゼンテーションを開く必要がある場合は、LoadOptionsクラスのPasswordプロパティを通じてパスワードを渡して、プレゼンテーションを復号化して読み込むことができます。このJavaコードは、その操作を示しています:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
Presentation pres = new Presentation("pres.pptx", loadOptions);
try {
// 復号化されたプレゼンテーションでいくつかの作業を行います
} finally {
if (pres != null) pres.dispose();
}
大きなプレゼンテーションを開く
Aspose.Slidesは、LoadOptionsクラスの下に、巨大なプレゼンテーションをロードするためのオプションを提供しています(特にBlobManagementOptionsプロパティ)。
このJavaは、大きなプレゼンテーション(たとえば、サイズが2GB)のロード操作を示します:
LoadOptions loadOptions = new LoadOptions();
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(0L);
Presentation pres = new Presentation("veryLargePresentation.pptx", loadOptions);
try {
// 大きなプレゼンテーションがロードされ、使用可能ですが、メモリ消費はまだ低いです。
// プレゼンテーションに変更を加えます。
pres.getSlides().get_Item(0).setName("非常に大きなプレゼンテーション");
// プレゼンテーションは別のファイルに保存されます。操作中のメモリ消費は低いままです
pres.save("veryLargePresentation-copy.pptx", SaveFormat.Pptx);
} finally {
if(pres != null) pres.dispose();
}
情報
ストリームと対話する際の特定の制限を回避するために、Aspose.Slidesはストリームの内容をコピーすることがあります。ストリームを介して大きなプレゼンテーションを読み込むと、プレゼンテーションの内容がコピーされ、読み込みが遅くなります。したがって、大きなプレゼンテーションを読み込む際には、ストリームではなく、プレゼンテーションのファイルパスを使用することを強くお勧めします。
大きなオブジェクト(ビデオ、オーディオ、大きな画像など)を含むプレゼンテーションを作成したい場合は、Blob機能を使用してメモリ消費を削減できます。
プレゼンテーションを読み込む
Aspose.Slidesは、外部リソースを管理するための単一メソッドを持つIResourceLoadingCallbackを提供しています。このJavaコードは、IResourceLoadingCallback
インターフェースを使用する方法を示しています:
LoadOptions opts = new LoadOptions();
opts.setResourceLoadingCallback(new ImageLoadingHandler());
Presentation pres = new Presentation("presentation.pptx", opts);
class ImageLoadingHandler implements IResourceLoadingCallback
{
public int resourceLoading(IResourceLoadingArgs args)
{
if (args.getOriginalUri().endsWith(".jpg"))
{
try // 代替画像を読み込みます
{
byte[] imageBytes = Files.readAllBytes(new File("aspose-logo.jpg").toPath());
args.setData(imageBytes);
return ResourceLoadingAction.UserProvided;
} catch (RuntimeException ex) {
return ResourceLoadingAction.Skip;
} catch (IOException ex) {
ex.printStackTrace();
}
} else if (args.getOriginalUri().endsWith(".png")) {
// 代替URLを設定します
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return ResourceLoadingAction.Default;
}
// 他のすべての画像をスキップします
return ResourceLoadingAction.Skip;
}
}
埋め込みバイナリオブジェクトなしでプレゼンテーションを読み込む
PowerPointプレゼンテーションには、次の種類の埋め込みバイナリオブジェクトが含まれている可能性があります:
- VBAプロジェクト (IPresentation.VbaProject);
- OLEオブジェクト埋め込みデータ (IOleEmbeddedDataInfo.EmbeddedFileData);
- ActiveXコントロールのバイナリデータ (IControl.ActiveXControlBinary);
ILoadOptions.DeleteEmbeddedBinaryObjectsプロパティを使用すると、埋め込みバイナリオブジェクトなしでプレゼンテーションを読み込むことができます。
このプロパティは、潜在的に悪意のあるバイナリコンテンツを削除するのに役立ちます。
以下は、マルウェアのない状態でプレゼンテーションを読み込み、保存する方法を示すコードです:
LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
Presentation pres = new Presentation("malware.ppt", loadOptions);
try {
pres.save("clean.ppt", SaveFormat.Ppt);
} finally {
if (pres != null) pres.dispose();
}
プレゼンテーションを開いて保存する
プレゼンテーションを開いて保存する手順:
- Presentationクラスのインスタンスを作成し、開きたいファイルを渡します。
- プレゼンテーションを保存します。
// PPTファイルを表すPresentationオブジェクトをインスタンス化します
Presentation pres = new Presentation();
try {
// ...ここでいくつかの作業を行います...
// プレゼンテーションをファイルに保存します
pres.save("demoPass.pptx", com.aspose.slides.SaveFormat.Pptx);
} finally {
if(pres != null) pres.dispose();
}