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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。