![将 PDF 打印为讲义](https://linux22.com/image/1401024/%E5%B0%86%20PDF%20%E6%89%93%E5%8D%B0%E4%B8%BA%E8%AE%B2%E4%B9%89.png)
我想按照以下布局打印 PDF 演示文稿:
有没有什么工具可以实现这种布局?不幸的是,演示文稿仅以 PDF 格式提供(即没有 PowerPoint、OpenOffice 或 TeX 文件)
答案1
可以使用PDFtkCLI 工具(包含在 Ubuntu 存储库中)和任何一个直接在标准 PDF 阅读器 Evince 中,或者使用PDFjam,但需要安装 LaTeX。在 Debian Sid 中,PDFjam 目前包含在软件包中texlive-extra-utils
。
两种情况下的想法都类似。仅使用 PDFtk 和 Evince:
- 创建
lines.pdf
包含用于书写的线条指南的(横向)PDF。 - 使用 将讲义分成单页
pdftk
。 - 创建一个新的 PDF,其中每个奇数页都是讲义的连续页面,每个偶数页都是 的一个实例
lines.pdf
。 - 在 Evince 中打开 PDF 并选择每张纸打印多页(横向模式下为 6 页)。
这是我可以像这样快速完成的尝试。请注意,它假设输入文件处于横向模式,演示文稿通常都是这样。我的lines.pdf
是在几秒钟内用 Inkscape 创建的(A4,横向,创建一个填满整个画布的文本框,大小为 100,用下划线填充)。
将脚本另存为例如handout.sh
,使其可执行并使用 PDF 文件作为唯一参数来调用它。
#!/bin/sh
usage() {
cat <<-USAGE 1>&2
usage: ${0##*/} [FILE]
USAGE
exit 1
}
[ $# -ne 1 ] && usage
if ! TMPDIR=$(mktemp -d); then
printf 'error: could not create tempdir, aborting.\n' 1>&2
exit 2
fi
# Clean everything up after closing Evince, or if the script is aborted.
trap 'rm -rf "$TMPDIR"' EXIT
LINES="$HOME/anteckningar/su-handout/lines.pdf"
HANDOUT="$TMPDIR/handout.pdf"
pdftk "$1" burst output "$TMPDIR/p%04d.pdf"
# Create PDF argument list with lines spliced in at every even position.
for p in $TMPDIR/*.pdf; do
pdfs="$pdfs $p $LINES"
done
pdftk $pdfs cat output "$HANDOUT"
# Open Evince and print the file using wanted settings.
evince "$HANDOUT"
使用 PDFjam,解决方案对用户来说更加简单。我们仍然需要lines.pdf
如上所述,我们可以将脚本修改为:
#!/bin/sh
usage() {
cat <<-USAGE 1>&2
usage: ${0##*/} [FILE]
USAGE
exit 1
}
[ $# -ne 1 ] && usage
if ! TMPDIR=$(mktemp -d); then
printf 'error: could not create tempdir, aborting.\n' 1>&2
exit 2
fi
# Clean everything up after closing Evince, or if the script is aborted.
trap 'rm -rf "$TMPDIR"' EXIT
LINES="$HOME/anteckningar/su-handout/lines.pdf"
HANDOUT="$TMPDIR/handout.pdf"
HANDOUT_SIXUP="${HANDOUT%.pdf}-6up.pdf"
pdftk "$1" burst output "$TMPDIR/p%04d.pdf"
# Create PDF argument list with lines spliced in at every even position.
for p in $TMPDIR/*.pdf; do
pdfs="$pdfs $p $LINES"
done
pdftk $pdfs cat output "$HANDOUT"
pdfjam-slides6up --frame false --outfile "$TMPDIR" "$HANDOUT"
evince "$HANDOUT_SIXUP"
这将打开一个 Evince 会话,其中 PDF 已经正确格式化,可以直接打印。可以修改它以将结果直接发送到打印机,但在大多数情况下,我更愿意在 Evince 中获取预览。
答案2
自由办公室可以做到这一点。将幻灯片创建为演示文稿,然后使用“文档:讲义”和“每页幻灯片:3”打印它,方法是像这样设置打印对话框:
答案3
你没有说明你是如何制作演示文稿的。所有像样的演示工具都会制作讲义。这就是你想要的。
Libre Office 和 Microsoft PowerPoint 都会这样做。
就您而言,您现在已经明确表示您只有 PDF 格式的幻灯片,并且您想要添加注释空间。
最简单的方法是使用一个不错的 PDF 阅读器工具(不确定您是否可以在 Adobe 阅读器中执行此操作,因为我从未使用它)。我使用 PDF-XChange Editor,我可以打印自动旋转和自动居中的示例文件离开,这将给出以下布局:
因此,您可以在幻灯片下方留出空间来书写,虽然不太一样,但非常容易实现。您可以进一步尝试,以更接近您的示例。您还可以使用背景图像或背景页面模板来获得带线的笔记区域。
如果再进一步,您就需要从 PDF 中提取每一页并重新合成,这可能比实际需要的要多得多。
答案4
在 LibreOffice 中打开 PDF。它应该在 LibreOffice Draw 中打开。
开始一个空白的 Impress 演示文稿。更改演示文稿的页面大小以匹配 PDF 中的页面大小(匹配实际纸张大小(以毫米/英寸为单位),而不仅仅是纵横比)。
选择 Draw 中的所有幻灯片。复制(Ctrl-C)。
转到 Impress。粘贴(Ctrl-V)。
从 LibreOffice 模板中删除空白幻灯片。
希望您现在有一个可以打印的不可编辑的演示文稿。