將整個頁面輸出為 .png

將整個頁面輸出為 .png

我需要輸出整個頁面的一些.png(實際上,我需要貼上左側和右側頁面,我目前正在透過imagemagick執行此操作)。我知道這可以透過獨立類別來完成,但我需要對回憶錄類中的整本書進行此操作(例如一)。

我可以透過取得 pdf 然後使用一些 pdf utils 來做到這一點,但我想知道是否有更有效的方法來做到這一點(因為我會這樣做數千次)。我最接近理想的結果是使用 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

如果您有權訪問它,我會使用pdftoppmutil,它是用於操作 pdf 文件的實用程式的一部分poppler

(我不確定你所說的「黏住」左右頁是什麼意思。)

以您的範例文件(我將其命名為testpng.tex)我可以運行

 pdflatex testpng.tex

它將頁面產生為 PDF。然後我跑

 pdftoppm -png testpng.pdf tpn

-png開關要求以 png 格式輸出,參數tpn設定輸出 png 檔案的前綴)此命令產生三個名為 、 和 的 png 檔案(因為您開始在 PDF 輸出中使用三個tpn-1.png頁面tpn-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頁:

在此輸入影像描述

相關內容