pptxファイルから発表者ノートを一括削除する方法
カンペとしてスライドに発表者ノートを書くことはままあるとおもうんですが,そのスライドを共有する際には発表者ノートを削除したくなるのが人情というものです (カンペを見られるのは恥ずかしい).
Windows版のPowerPointであれば発表者ノートを一括削除するメニューがあるのですが,一方macOS版のPowerPointにはなぜかそのメニューが無いため手でポチポチやるしか方法は無いのか……と途方に暮れていたところ,pptxはそもそもzipでアーカイブされたxmlの集合体ということを思い出し,unzipしてxmlを書き換えてzipし直すという手法を思いつきました.
以下スクリプト:
#!/bin/bash set -eu PPTX_FILE_PATH="$1" PPTX_FILE="$(basename "$PPTX_FILE_PATH")" TMP_DIR="$(mktemp -d)" trap 'rm -rf $TMP_DIR' EXIT cp "$PPTX_FILE_PATH" "$TMP_DIR" pushd "$TMP_DIR" unzip "$PPTX_FILE" rm "$PPTX_FILE" gfind ./ppt/notesSlides/*.xml | xargs gsed -i'' -e's/<a:t>[^<]*<\/a:t>/<a:t><\/a:t>/g' # remove slide note contents zip -0 -r "$PPTX_FILE" ./* # do not compress (-0) popd cp "$TMP_DIR/$PPTX_FILE" "note-removed-$PPTX_FILE"
これで発表者ノートを消すべきpptxファイルがたくさんあっても安心! よかったですね.