我在用
$ pdflatex --version
pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian)
kpathsea version 6.2.3
编译出 30 页的 pdf 输出。其中 12 页如下所示(其余的只有文本):
所有项目均由以下代码生成:
\newcommand{\weapon}[8]
{
\begin{multicols}{2}
\noindent \textbf{#2} \\
Необходима сила: #3 \\
Обсег: #4 \\
Щети: #5 \\
Свойства: #6 \\
Маса: #7 \\
Стойност: #8 \\
\includegraphics[height=0.13\textheight]{../images/#1}~
\end{multicols}
\vspace{0.01cm}
}
这使得文件大小达到:
remote: warning: File build/elementaris-fantasy.pdf is 63.06 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
我使用的图像未缩放,其中一些非常大。
如何减小 PDF 文件的大小?PDF 的用途是打印在纸张上作为游戏的参考。
答案1
您可以使用\DeclareGraphicsRule
在具有指定扩展名的文件上调用调整大小命令(外部)。由于使用调整大小后的图像文件,因此 pdf 将变得更小。
在下面的 MWE 中,尺寸被硬编码为 100px 的高度。可以在文档中的任何位置声明该规则,然后将其替换为虚拟规则,以避免在文档的其他部分调整 jpg 文件的大小。但请注意,转换是按文件缓存的,因此您不能包含已调整大小的图像,然后再包含来自同一文件的全尺寸图像。
示例图像取自 Wikipedia (https://commons.wikimedia.org/wiki/File:Bodiam-castle-10My8-1197.jpg)。
代码(编译用--shell-escape
):
\documentclass{article}
\usepackage{graphicx}
\begin{document}
% remove these two lines to reduce the pdf filesize
Before \texttt{\textbackslash DeclareGraphicsRule}:\\
\includegraphics[scale=0.2]{Bodiam-castle-10My8-1197.jpg}
% resize rule
\DeclareGraphicsRule{.jpg}{jpg}{.jpg}{`convert -geometry x100 #1 `basename #1 .jpg`-jpg-converted-to.jpg}
After \texttt{\textbackslash DeclareGraphicsRule}:\\
\includegraphics[scale=1.0]{Bodiam-castle-10My8-1197.jpg}
% dummy rule
\DeclareGraphicsRule{.jpg}{jpg}{.jpg}{`convert #1 `basename #1 .jpg`-jpg-converted-to.jpg}
\end{document}
结果:
答案2
您可以使用 ghostscript 压缩 pdf。相关的命令行选项是-dPDFSETTINGS=
(请参阅这个问题了解详情)。
我使用以下脚本进行压缩(至中等分辨率):
#!/bin/bash
INPUT="$1"
if [[ ! -f "$INPUT" ]]; then
echo "File not exist \"$INPUT\""
exit 1
fi
OUTPUT="$2"
if [[ -f "$2" ]]; then
echo "File exists \"$2\""
exit 1
fi
OUTPUT=${OUTPUT:-${INPUT%.*}.pdf}
[[ $# > 2 ]] && (echo "Extra arguments found: \"$*\""; exit 1)
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$OUTPUT" "$INPUT"