pdf
位於 grDevices
包(package)。 說明
pdf
啟動圖形設備驅動程序以生成 PDF 圖形。
用法
pdf(file = if(onefile) "Rplots.pdf" else "Rplot%03d.pdf",
width, height, onefile, family, title, fonts, version,
paper, encoding, bg, fg, pointsize, pagecentre, colormodel,
useDingbats, useKerning, fillOddEven, compress)
參數
file |
給出文件路徑的字符串。如果它的形式為 為了與 波形符擴展(參見 |
width , height |
圖形區域的寬度和高度(以英寸為單位)。默認值為 |
onefile |
邏輯:如果為 true(默認值),則允許一個文件中包含多個數字。如果為 false,則生成一個文件,其名稱包含每頁的頁碼。默認為 |
family |
要使用的字體係列,請參閱 |
title |
要嵌入為“的標題字符串/標題’ 文件中的字段。默認為 |
fonts |
指定的字符向量R將包含在 PDF 文件中的其他字體的圖形字體係列名稱。默認為 |
version |
說明查看輸出所需的 PDF 版本的字符串。這是最小值,如有必要,將會增加(並發出警告)。默認為 |
paper |
目標紙張尺寸。選項包括 |
encoding |
編碼文件的名稱。有關詳細信息,請參閱 |
bg |
要使用的初始背景顏色。默認為 |
fg |
要使用的初始前景色。默認為 |
pointsize |
要使用的默認磅值。嚴格來說,以 bp 為單位,即 1/72 英寸,但大約以磅為單位。默認為 |
pagecentre |
邏輯:設備區域應該位於頁麵中央嗎? - 僅與 |
colormodel |
說明顏色模型的字符串:當前允許的值為 |
useDingbats |
合乎邏輯的。小圓圈應該通過 Dingbats 字體渲染嗎?默認為 對於 Unix 類用戶(包括 macOS),請參閱“注釋”以了解針對某些查看者的可能修複方法。 |
useKerning |
合乎邏輯的。設置文本和計算字符串寬度時是否應該包含字距調整?默認為 |
fillOddEven |
邏輯控製多邊形填充模式:有關詳細信息,請參閱 |
compress |
合乎邏輯的。是否應該使用 Flate 壓縮生成 PDF 流?默認為 |
細節
除 file
之外的所有參數均默認為 pdf.options()
給出的值。最終默認值在參數部分引用。
pdf()
打開文件file
,繪製任何請求的圖形所需的 PDF 命令將發送到該文件。
file
參數被解釋為 C 整數格式,如所使用的sprintf
,帶有整數參數的頁碼。默認給出文件‘Rplot001.pdf”,...,“Rplot999.pdf', 'Rplot1000.pdf’,……
family
參數可用於指定 PDF-specific 字體係列作為設備的初始/默認字體。如果要使用其他字體係列,則應將它們包含在 fonts
參數中。
如果設備無關R指定圖形字體係列(例如,通過par(family = )
在圖形包中),PDF 設備利用 PostScript 字體映射來轉換R圖形字體係列到 PDF-specific 字體係列說明。 (請參閱文檔pdfFonts
.)
此設備不會在 PDF 文件中嵌入字體,因此隻需簡單地使用到可假定在任何 PDF 查看器中可用的字體係列的映射即可: "Times"
(等效於 "serif"
)、"Helvetica"
(等效於"sans"
)和 "Courier"
(相當於 "mono"
)。可能會指定其他係列,但用戶有責任確保這些字體在係統上可用,並且可能需要第三方軟件(例如 Ghostscript)嵌入這些字體,以便 PDF 可以包含在其他文檔中(例如,LaTeX):請參閱embedFonts
。針對 postscript
說明的基於 URW 的係列可以與查看器一起使用,具體取決於平台:
- 在 Unix 類係統上
-
查看器設置為使用 URW 字體,這對於基於
xpdf
或 Ghostscript 的字體來說很常見。 - 在 Windows 上
-
GSView 等使用 URW 字體的查看器。
由於embedFonts
使用 Ghostscript,它應該能夠嵌入基於 URW 的係列以供其他查看器使用。
參看postscript
有關編碼的詳細信息,因為內部代碼在驅動程序之間共享。本機 PDF 編碼在文件‘中給出PDFDoc.enc’。
生成的 PDF 相當簡單,每個頁麵都表示為單個流(默認情況下經過壓縮,並且可能引用光柵圖像)。這R圖形模型不區分驅動程序接口級別的圖形對象。
version
參數聲明生成的 PDF 版本。使用壓縮時版本必須至少為 1.2,為了理解半透明輸出,版本必須至少為 1.4,如果要使用 CID 字體,版本必須至少為 1.3:如果使用任何這些函數,版本號將增加(帶有警告)。 (PDF 1.4 於 2001 年首次由 Acrobat 5 支持;當前查看器不太可能不支持它。)
由 par(lwd = )
控製的線寬是 1/96 英寸的倍數。允許小於 1 的倍數。 pch = "."
和 cex = 1
對應於邊長為 1/72 英寸的正方形,這也是 "cra"
等圖形參數假定的 ‘pixel’ 尺寸。
paper
參數設置‘/媒體盒' 文件中的條目,默認為width
經過height
。如果它設置為除"special"
,指定大小的設備區域(默認情況下)以紙張大小給定的矩形為中心:如果width
或者height
小於0.1
或者太大而無法提供 0.5 英寸的總邊距,則將其重置為相應的紙張尺寸負 0.5。因此,如果您想要默認行為postscript
采用pdf(paper = "a4r", width = 0, height = 0)
將設備區域置於橫向 A4 頁麵的中心,邊距為 0.25 英寸。
當背景顏色完全透明(初始默認值)時,生成的 PDF 不會繪製背景。大多數 PDF 查看器將使用白色畫布,因此視覺效果就像背景是白色的一樣。但在彩色紙上打印時,情況並非如此。
顏色型號
默認顏色模型 ("srgb"
) 是 sRGB。模型 "gray"
(或 "grey"
)使用感知亮度(偏向綠色)將 sRGB 顏色映射到灰度。 "cmyk"
以 CMYK 色彩空間輸出。使用從 sRGB 到 CMYK 的最簡單的轉換 (https://en.wikipedia.org/wiki/CMYK_color_model#Mapping_RGB_to_CMYK),並且光柵圖像以 RGB 輸出。
模型也可向後兼容"rgb"
它使用未校準的 RGB 並對應於中使用該名稱的模型R2.13.0 之前。某些查看器在該色彩空間中渲染某些繪圖的速度可能比在 sRGB 中更快,並且繪圖文件會更小。
慣例
本節介紹“R Internals”手冊中規定的圖形設備約定的實現。
-
默認設備尺寸為 7 平方英寸。
-
字體大小以大點為單位。
-
默認字體係列是 Helvetica。
-
線寬為 1/96 英寸的倍數,最小強製為 0.01。
-
任何半徑的圓都是允許的。如果
useDingbats = TRUE
,則使用 Dingbats 字體中的字符 108 渲染半徑小於 10 個大點的不透明圓:所有半透明和較大的圓對每個象限使用貝塞爾曲線。 -
顏色默認指定為 sRGB。
當線寬非常小時,線型可能會被迫為實線。
打印
除了在 Windows 上之外,還可以通過類似的方式直接從 pdf
進行打印(這適用於 CUPS 打印係統):
pdf("|lp -o landscape", paper = "a4r")
這會強製 onefile = TRUE
。
注意
如果您繪製了任何排版字形(請參閱glyphInfo
),那麽強烈建議您使用embedGlyphs
來嵌入相關字體。
注意
如果您發現 PDF 輸出存在問題,請記住,問題更有可能出現在您的查看器中,而不是出現在R。如果可能的話,嘗試使用其他查看器。查看器出現錯誤的症狀是圖像圖上出現明顯的網格(如果可以的話,請關閉查看器中的圖形抗鋸齒函數)以及文本中丟失或不正確的字形(查看器默默地進行字體替換)。
不幸的是,大多數 Linux 和 macOS 係統上的默認查看器都存在這些問題,並且沒有明顯的方法來關閉圖形抗鋸齒。
Acrobat Reader 不使用指定的字體,而是從 multiple-master 字體模擬它們。這可以從不精確的字符居中看出,例如 Helvetica 中的乘號和除號。可以通過盡可能嵌入字體來避免這種情況。大多數其他查看器都會替換字體,例如標準 Helvetica 和 Times 字體的 URW 字體,這些字體通常與真實字體具有不同的字體規格。
Acrobat Reader 可以通過“字體包”進行擴展,並且需要這些字體包才能充分使用 Latin-1 以外的編碼(盡管可以根據需要提供下載)。
- 在一些類 Unix 係統上:
-
如果
useDingbats = TRUE
, 默認繪圖字符pch = 1
在某些 PDF 查看器中錯誤地顯示為"q"
特點。 (這些似乎是基於‘波普勒’PDF渲染庫)。這可能是由於字體名稱與係統使用的字體名稱的映射不正確或不完整造成的。將以下行添加到‘〜/.fonts.conf' 或者 '/etc/fonts/local.conf” 可能會繞過這個問題,盡管這個問題在受影響的係統上已經得到了很大程度的糾正。<fontconfig> <alias binding="same"> <family>ZapfDingbats</family> <accept><family>Dingbats</family></accept> </alias> </fontconfig>
X11
幫助的“開羅字體”部分給出了使用 ‘fontconfig’ 的查看器符號字體問題的一些進一步解決方法。 - 在 Windows 上:
-
TeXworks PDF 查看器是無法正確顯示 Dingbats(例如
pch = 1
使用)的查看器之一。在其他平台上,出現的問題是輸出不正確,而在 Windows 上,點被默默地忽略了:但是最近的版本似乎設法顯示 Dingbats。
Firefox 中包含的 pdf.js
查看器中存在一個不同的字體錯誤:將 Dingbats 映射到符號字體,因此將 pch = 1
等符號顯示為 lambda。
例子
## Test function for encodings
TestChars <- function(encoding = "ISOLatin1", ...)
{
pdf(encoding = encoding, ...)
par(pty = "s")
plot(c(-1,16), c(-1,16), type = "n", xlab = "", ylab = "",
xaxs = "i", yaxs = "i")
title(paste("Centred chars in encoding", encoding))
grid(17, 17, lty = 1)
for(i in c(32:255)) {
x <- i %% 16
y <- i %/% 16
points(x, y, pch = i)
}
dev.off()
}
## there will be many warnings.
TestChars("ISOLatin2")
## this does not view properly in older viewers.
TestChars("ISOLatin2", family = "URWHelvetica")
## works well for viewing in gs-based viewers, and often in xpdf.
也可以看看
pdfFonts
、pdf.options
、embedFonts
、glyphInfo
、Devices
、postscript
。
cairo_pdf
和(僅限 macOS)quartz
適用於其他可以生成 PDF 的設備。
有關字體係列和編碼,尤其是處理非 Latin-1 編碼中的文本和嵌入字體的更多詳細信息,請參閱
保羅·默雷爾和布萊恩·裏普利 (2006)。 “PostScript 和 PDF 圖形中的非標準字體。” R新聞,6(2),41-47。https://www.r-project.org/doc/Rnews/Rnews_2006-2.pdf.
相關用法
- R pdf.options 設置/查看 pdf 參數默認值的輔助函數
- R plotmath R 中的數學注釋
- R postscript PostScript 圖形
- R pretty.Date 日期時間類的漂亮斷點
- R pictex PicTeX 圖形驅動程序
- R postscriptFonts PostScript 和 PDF 字體係列
- R ps.options 用於設置/查看 postscript 參數默認值的輔助函數
- R palette 設置或查看圖形調色板
- R png BMP、JPEG、PNG 和 TIFF 圖形設備
- R axisTicks 計算漂亮的軸刻度
- R hcl HCL 顏色規格
- R quartzFonts 石英字體
- R as.graphicsAnnot 強製圖形注釋對象
- R xyTable (x,y) 點的重數,例如,對於向日葵圖
- R dev.interactive 當前圖形設備是否具有交互性?
- R chull 計算一組點的凸包
- R convertColor 在色彩空間之間轉換
- R X11Fonts X11 字體
- R dev.capture 將設備輸出捕獲為光柵圖像
- R dev.size 查找設備表麵的尺寸
- R densCols 平滑密度圖的顏色
- R windows Windows 圖形設備
- R rgb RGB 顏色規格
- R check.options 設置帶有一致性檢查的選項
- R msgWindow 操縱窗口
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 PDF Graphics Device。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。