我知道pdfimages
可以从 pdf 文件中提取位图图形。
但是如果嵌入的图像是一些线条图,例如由 LaTeX 中的某些 TikZ 代码生成的图像,该怎么办?
假设:该 pdf 文件是一篇科学论文。它可能在一页上包含多个图表。(抱歉我没有提到这一点。)
编辑
我只需要高质量的图片。图片似乎是由一些 tikz 命令生成的(肯定是矢量图)。
好吧,很高兴知道生成该图片的命令,但我没想到那是可能的。
编辑2
我现在正在使用trim
&clip
选项\includegraphics
,但仍然期待一些自动提取命令。
\documentclass{standalone}
\usepackage{graphicx}
\begin{document}
\includegraphics[trim = 15mm 113mm 110mm 130mm, clip]{a-single-page-pdf-file}
\end{document}
编辑3
添加标尺,只是为了更容易
\documentclass{standalone}
\usepackage{graphicx}
\usepackage{tikz}
\begin{document}
%\includegraphics[trim = 1.5cm 11.3cm 11cm 13cm, clip]{single-page-pdf}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics{single-page-pdf}};
% A4 paper size: 21.0 × 29.7
\draw[help lines,xstep=1,ystep=1] (0,0) grid (21,29.7);
\foreach \x in {0,1,...,21} { \node [anchor=north] at (\x,0) {\x}; }
\foreach \y in {0,1,...,29.7} { \node [anchor=east] at (0,\y) {\y}; }
\end{tikzpicture}
\end{document}
答案1
我不太确定这是否是你想要的,因为不清楚自动化对你有多大用处。在这个答案中,我将首先生成一个 PDF 文档,每个页面上都有一个 TikZ 图像(我知道你不需要知道如何做到这一点,但它将使整个过程成为一个独立的例子。)然后我将使用pdftk
公用事业将每页拆分为单个 PDF 文件。然后我将使用pdfcrop
LaTeX 文档中的实用程序裁剪每页,然后使用\includegraphics
它来包含它。因此,最终结果将是单个页面,其中包含每个单独的图像并自动裁剪。
为了使该解决方案发挥作用,您需要在\write18
启用的情况下编译第二个文档。
生成一些图像
文件名:重复圆圈.tex
\documentclass{article}
\usepackage{tikz}
\usepackage{pgffor}
\pagestyle{empty}
\begin{document}
\foreach \x in {1,...,5}
{\begin{tikzpicture}
\node [red,fill,text={white},font={\bfseries\Huge}, circle, minimum width=\x cm ] {\x};
\end{tikzpicture}
\clearpage
}
\end{document}
这将创建一个包含 5 个不同大小的圆圈的文件,每个圆圈位于自己的页面上。
使用 pdftk 分割文件
现在我们将pdftk
文件分成 5 个独立的页面:
% pdftk repeat-circles.pdf burst
默认情况下,这将为每个页面创建一个带有文件名的文件pg_<nnnn>.pdf
。
如果您手动生成单个页面,则不需要此步骤。
裁剪并将每个文件作为图像包含到另一个文档中
现在我们创建一个 LaTeX 文档,它将获取每个单独的页面,裁剪图像并使用 包含每个页面\includegraphics
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{pgffor}
\begin{document}
\foreach \x in {1,...,5}
{
\immediate\write18{pdfcrop pg_000\x.pdf}
\includegraphics{pg_000\x-crop.pdf}
}
\end{document}
本文档的最终输出为: