我需要輸出整個頁面的一些.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
如果您有權訪問它,我會使用pdftoppm
util,它是用於操作 pdf 文件的實用程式的一部分poppler
。
(我不確定你所說的「黏住」左右頁是什麼意思。)
以您的範例文件(我將其命名為testpng.tex
)我可以運行
pdflatex testpng.tex
它將頁面產生為 PDF。然後我跑
pdftoppm -png testpng.pdf tpn
(-png
開關要求以 png 格式輸出,參數tpn
設定輸出 png 檔案的前綴)此命令產生三個名為 、 和 的 png 檔案(因為您開始在 PDF 輸出中使用三個tpn-1.png
頁面tpn-2.png
)tpn-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頁: