我有一个外部的 100 页 PDF 文档(不是由 pdflatex 创建的),我\includegraphics
将其逐页放入 beamer 演示文稿中。外部 PDF 文档使用白色作为页面颜色,但我需要背景透明。
理想情况下,这是一个可以传递的选项\includegraphics
——我怀疑它是否存在。不过,我也愿意接受一些涉及外部工具的过程(pdftk
、、pdfjam
ImageMagick、Acrobat……)。
答案1
我不确定是否可以将 PDF 中的任何东西变成透明的。PDF 不是图像格式,所以我猜唯一的方法是从页面中完全删除背景对象。您可以使用 Acrobat 专业版(可能还有一些免费的 PDF 编辑器)手动执行此操作(在每一页上),但如果您幸运的话,以下方法可能会奏效:
- 使用 将您的 PDF 转换为可读的内容
qpdf -qdf file.pdf file-redable.pdf
。 在那里寻找背景物体。(此时需要运气)通常,它看起来有点像这样:
10 765.75 591.75 -729.75 re f
也就是说,一个足够大的填充矩形可以覆盖整个页面。
实验性地将其移除。
- 使用 修复生成的 pdf
fix-qdf file-redable.pdf
。 - 试试看是否有效 ;-)
- 如果您找到了要移除的正确对象,则可以用 同时在所有位置将其移除
sed
。
答案2
我qpdf
按照建议尝试了,它对我的 libreoffice 生成的 pdf 有效。我创建了一个脚本来删除背景。它可能有效也可能无效,具体取决于版本等,并且可能会损坏您的 PDF,因此使用时请自担风险
#!/bin/bash
if [ $# -ne 1 ] ; then
echo "Use: $0 pdf_with_background.pdf"
exit 1
fi
FILE="$1"
FILEQDF="$1.readable.pdf"
FILETMP="$1.tempfile.pdf"
# backups
#cp "$FILE" "$FILE.BAK"
# converts to readable format
qpdf -qdf "$FILE" "$FILEQDF"
# removes background
cat "$FILEQDF" | sed '/^%% Contents for page/, /f\*/ { /^1 1 1 rg/, /f\*/ { s/^/%% / } }' > "$FILETMP"
# fixes pdf
fix-qdf "$FILETMP" > "$FILE"
rm "$FILETMP"
rm "$FILEQDF"
答案3
我使用 Inkscape 修改现有的 PDF 并在文档属性中选择了已检查的背景,效果非常好!