将整个页面输出为 .png

将整个页面输出为 .png

我需要输出整个页面的一些 .png(实际上,我需要粘贴左页和右页,我目前正在使用 imagemagick 执行此操作)。我知道这可以通过独立类来完成,但我需要对回忆录类中的整本书执行此操作(例如一)。

我可以通过获取 pdf 然后使用一些 pdf 实用程序来做到这一点,但我想知道是否有更有效的方法来做到这一点(因为我会这样做数千次)。最接近我的理想结果是使用 dvipng,使用选项-T bbox,遗憾的是这会遗漏一些边距。还有其他直接与 .tex 文件或 .dvi 输出一起使用的选项吗?

对于特定情况,源文件如下:

\documentclass[smalldemyvopaper,11pt]{memoir}
\usepackage{lipsum} 

\begin{document}
\lipsum[1-5]
\end{document}

然后使用该命令dvipng -T 5.675in,8.5in example.dvi显示的图像与预期完全不同。该5.675in,8.5in部分取自回忆录类文档表 1.3。请注意左边部分也是怎样被切割的。

在此处输入图片描述

答案1

如果您有权访问它,我会使用该实用程序,它是处理 pdf 文件的实用程序pdftoppm的一部分。poppler

(我不确定您所说的“粘贴”左页和右页是什么意思。)

以您的示例文件(我将其命名为testpng.tex)为例,我可以运行

 pdflatex testpng.tex

这会将页面生成为 PDF。然后我运行

 pdftoppm -png testpng.pdf tpn

-png开关要求以 png 格式输出,参数tpn设置输出 png 文件的前缀)此命令生成三个 png 文件(因为您在 PDF 输出中从三页开始),分别名为tpn-1.pngtpn-2.pngtpn-3.png。例如,第二页如下所示

在此处输入图片描述

我认为页边距正确。您可以阅读手册页看看它还能做什么。


另一种方法是使用该dvipng工具,正如 OP 指出的那样,该工具运行速度更快。OP 观察到的问题是,在指定纸张尺寸后,边距显示不正确。

这是因为dvipng根据-T参数输出的方式:

  • 如果-T bbox指定,则 dvipng 输出一个包含以下内容的最小矩形图像
    • dvi 起源(默认情况下,该点位于页面左上角水平和垂直方向各 1 英寸处)
    • 以及页面上的所有墨水。
  • 如果-T tight指定,则 dvipng 输出一个包含页面上所有墨水的最小矩形图像。
  • 如果-T <width>,<height>输出的图像是具有指定尺寸的矩形,其内容是相对于dvi 起源(请记住,该点距离纸张的顶部和左侧边缘均为 1 英寸)。

为了说明这一点,请考虑以下 TeX 源

\documentclass{book}

\usepackage{geometry}

\geometry{paperwidth=5in, paperheight=7in, inner=0.4in, outer=2in, top=1.2in, bottom=2in}
\usepackage{lipsum} 

\begin{document}
\lipsum[1-5]
\end{document}

其边距严重不平衡。如果您使用dvipng -T5in,7in,前两页将呈现以下内容:

第 1 页:

在此处输入图片描述

第2页:

在此处输入图片描述

您会看到第 1 页上的部分文本被截断,这是因为内边距设置为 0.4 英寸,距离边缘不到 1 英寸。您还可以测量一下,看看在这两种情况下,剩余的顶部边距是否正好是 0.2 英寸,这意味着两个页码现在都消失了。

为了获得预期的完整页面,您需要做的就是将 dvi 原点在水平和垂直方向上精确移动 1 英寸,使其与页面的左上角对齐。请注意猜测或目测是必须的。以下是使用 的相同两页的输出dvipng -T5in,7in -O1in,1in;请注意,严重不对称的边距是受尊重的,与大卫建议,设置偏移参数时不需要摆弄文档的实际边距。

第 1 页:

在此处输入图片描述

第2页:

在此处输入图片描述

相关内容