有没有从 pdf 文件中提取图片(不仅是位图图形,还有线条图)的命令?

有没有从 pdf 文件中提取图片(不仅是位图图形,还有线条图)的命令?

我知道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 文件。然后我将使用pdfcropLaTeX 文档中的实用程序裁剪每页,然后使用\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}

本文档的最终输出为:

代码输出

相关内容