PDF 文件的正确 MIME 媒体类型

使用 PDF 时,我遇到了 MIME 类型application/pdfapplication/x-pdf

这两种类型之间有区别吗?如果是,那是什么?是一个比另一个更好的选择吗?

我正在开发一个必须交付大量 PDF 的网络应用程序,如果有的话,我想以正确的方式进行操作。

答案

标准 MIME 类型是application/pdf 。分配是在MIME 3 Types 注册表中引用的RFC 3778,application / pdf Media Type 中定义的。

MIME 类型由标准机构Internet 编号分配机构 (IANA)控制。这是管理根名称服务器和 IP 地址空间的组织。

x-pdf的使用早于 PDF 的 MIME 类型的标准化。就像vnd.那些一样, x-名称空间中的 MIME 类型被认为是实验性的vnd.名称空间被认为是特定于供应商的。 x-pdf可能用于与旧软件兼容。

这是RFC 2045 - 多功能 Internet 邮件扩展(MIME)第一部分:Internet 邮件正文的格式中定义的约定。

  1. 可以在两个合作代理之间双向定义私有[subtype]值(以 “X-” 开头),而无需外部注册或标准化。这些值无法注册或标准化。

  2. RFC 2048 中所述,应向 IANA 注册新的标准值。

类似的限制适用于顶级类型。来自同一来源

如果出于任何原因要使用其他顶级类型,则必须给它一个以 “X-” 开头的名称,以指示其非标准状态,并避免与将来的正式名称冲突。

(请注意,根据 RFC 2045,“[m]匹配媒体类型和子类型始终不区分大小写”,因此对 “X-” 和 “x-” 的解释没有区别。)

因此可以猜测,IANA 定义 “application / foo” 之前就使用了 “application / x-foo”。而且它仍然可以由不了解 IANA 令牌分配的人们使用。

正如克里斯 · 汉森(Chris Hanson)所说,MIME 类型由 IANA 控制。 RFC 2048 - 多功能 Internet 邮件扩展(MIME)第四部分:注册过程中对此进行了详细说明。根据IANA 引用的 RFC 3778作为 “application / pdf” 的定义,

Paul Lindner 于 1993 年首次注册了 application / pdf 媒体类型,供 gopher 协议使用;该注册随后在 1994 年由 Steve Zilles 更新。

“application / pdf” 类型已经存在了十多年了。因此在我看来,无论在新应用程序中使用 “application / x-pdf” 的地方,该决定都可能不是故意的。

在 Wikipedia 媒体类型中,

媒体类型由类型,子类型和可选参数组成。例如,一个 HTML 文件可以指定为 text / html。 charset = UTF-8。

媒体类型由顶级类型名称和子类型名称组成,它们进一步被结构化为所谓的 “树”。

top-level type name / subtype name [ ; parameters ]

top-level type name / [ tree. ] subtype name [ +suffix ] [ ; parameters ]

所有媒体类型均应使用 IANA 注册程序进行注册。当前创建以下树: standardvendorpersonalvanity ,unregistered x.

标准:

标准树中的媒体类型不使用任何树构面(前缀)。

type / media type name [+suffix]

示例:“application / xhtml + xml”,“image / png”

供应商:

供应商树用于与公共可用产品关联的媒体类型。它使用vnd.方面。

type / vnd. media type name [+suffix] - used in the case of well-known producer

type / vnd. producer's name followed by media type name [+suffix] - producer's name must be approved by IANA

type / vnd. producer's name followed by product's name [+suffix] - producer's name must be approved by IANA

个人树或虚荣树:

Personal 或 Vanity 树包括通过实验创建的媒体类型或作为非商业发行的产品一部分的媒体类型。它使用prs.方面。

type / prs. media type name [+suffix]

未注册 x。树:

“x”。树只能用于专用于私有,本地环境的媒体类型,并且必须在交换它们的各方的积极同意下使用。该树中的类型无法注册。

根据 RFC 6838 的先前版本 - 废弃的 RFC 2048(于 1996 年 11 月发布) ,很少,甚至永远不必使用未注册的实验类型,因此既要使用 “x-” 又要使用 “x”。不鼓励使用表格 。该 RFC 的早期版本 - RFC 1590 和 RFC 1521 指出,对于未注册的和私有的子类型,可以对子类型名称使用 “x-” 表示法,但是该建议在 1996 年 11 月被废弃。

type / x. media type name [+suffix]

因此,很明显,可以使用标准类型 MIME 类型application/pdf ,同时应避免使用RFC 2048RFC 6838 中所述的过时且未注册的x- media 类型。