diff --git a/remove_watermark_self.sh b/remove_watermark_self.sh index 5195a7a..53702c8 100644 --- a/remove_watermark_self.sh +++ b/remove_watermark_self.sh @@ -1,5 +1,54 @@ #!/bin/bash +# 检查并安装 pdftk +check_install_pdftk() { + if ! command -v pdftk &> /dev/null; then + echo "未检测到 pdftk,正在尝试安装..." + + # 检测操作系统类型 + if [ -f /etc/os-release ]; then + . /etc/os-release + case "$ID" in + ubuntu|debian) + sudo apt-get update && sudo apt-get install -y pdftk + ;; + fedora) + sudo dnf install -y pdftk + ;; + centos|rhel) + sudo yum install -y pdftk + ;; + *) + echo "无法确定操作系统类型,请手动安装 pdftk" + exit 1 + ;; + esac + elif [ "$(uname)" == "Darwin" ]; then + # macOS + if command -v brew &> /dev/null; then + brew install pdftk-java + else + echo "请先安装 Homebrew,然后再安装 pdftk" + echo "安装 Homebrew: /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"" + exit 1 + fi + else + echo "不支持的操作系统,请手动安装 pdftk" + exit 1 + fi + + # 再次检查安装是否成功 + if ! command -v pdftk &> /dev/null; then + echo "pdftk 安装失败,请手动安装" + exit 1 + fi + echo "pdftk 安装成功!" + fi +} + +# 在开始处理之前检查并安装 pdftk +check_install_pdftk + # 检查是否提供了文件名 if [ "$#" -ne 1 ]; then echo "使用方法: $0 [PDF文件名]" @@ -9,15 +58,40 @@ fi # 输入的 PDF 文件名 PDF_FILE="$1" +# 添加文件存在性检查 +if [ ! -f "$PDF_FILE" ]; then + echo "错误:文件 '$PDF_FILE' 不存在" + exit 1 +fi + +# 添加文件扩展名检查 +if [[ ! "$PDF_FILE" =~ \.pdf$ ]]; then + echo "错误:文件必须是 PDF 格式" + exit 1 +fi + +# 设置临时文件和输出文件名 +TEMP_FILE="uncompressed_$PDF_FILE" +OUTPUT_FILE="recombined_$PDF_FILE" + # 使用 pdftk 解压 PDF 到文本 -pdftk "$PDF_FILE" output uncompressed_$PDF_FILE uncompress +if ! pdftk "$PDF_FILE" output "$TEMP_FILE" uncompress; then + echo "错误:PDF 解压失败" + exit 1 +fi # 使用 Perl 去除特殊字符 # 注意: 这里假设特殊字符已经正确插入 -perl -pi -e 's/\x00\x32\x00\x37\x00\x30\x00\x35\x00\x35\x00\x38\x00\x20\x52\x18f%i`\)Tj//g' uncompressed_$PDF_FILE +perl -pi -e 's/\x00\x32\x00\x37\x00\x30\x00\x35\x00\x35\x00\x38\x00\x20\x52\x18f%i`\)Tj//g' "$TEMP_FILE" # 使用 pdftk 重新组合 PDF -pdftk uncompressed_$PDF_FILE output recombined_$PDF_FILE compress +if ! pdftk "$TEMP_FILE" output "$OUTPUT_FILE" compress; then + echo "错误:PDF 压缩失败" + rm -f "$TEMP_FILE" # 清理临时文件 + exit 1 +fi # 清理临时文件 -rm uncompressed_$PDF_FILE +rm -f "$TEMP_FILE" + +echo "处理完成!输出文件:$OUTPUT_FILE"