Właściwy typ nośnika MIME dla plików PDF

1283

Podczas pracy z plikami PDF natknąłem się na typy MIME application/pdfi application/x-pdfmiędzy innymi.

Czy istnieje różnica między tymi dwoma typami, a jeśli tak, to co to jest? Czy jedno jest lepsze od drugiego?

Pracuję nad aplikacją internetową, która musi dostarczać ogromne ilości plików PDF i chcę to zrobić poprawnie, jeśli taka istnieje.

Friedo
źródło

Odpowiedzi:

1705

Standardowy typ MIME to application/pdf. Przypisanie jest zdefiniowane w RFC 3778, Application / pdf Media Type , do którego odwołuje się rejestr MIME Media Types .

Typy MIME są kontrolowane przez organ normalizacyjny, The Internet Assigned Numbers Authority (IANA). Jest to ta sama organizacja, która zarządza głównymi serwerami nazw i przestrzenią adresów IP.

Zastosowanie x-pdfwcześniejszych niż standaryzacja typu MIME dla PDF. Typy MIME w x-przestrzeni nazw są uważane za eksperymentalne, podobnie jak typy w przestrzeni vnd.nazw są specyficzne dla dostawcy. x-pdfmoże być użyty do kompatybilności ze starym oprogramowaniem.

Chris Hanson
źródło
6
Aktualizacja 2020: W tym momencie application/pdfnależy użyć tego typu - chyba że musisz być kompatybilny z naprawdę starym oprogramowaniem, nie używaj x-pdf...
Janniks
156

Jest to konwencja zdefiniowana w RFC 2045 - Rozszerzenia uniwersalnej poczty internetowej (MIME) Część pierwsza: Format treści internetowych wiadomości .

  1. Prywatne wartości [podtypu] (zaczynające się od „X-”) można zdefiniować dwustronnie między dwoma współpracującymi agentami bez zewnętrznej rejestracji lub standaryzacji. Takie wartości nie mogą być rejestrowane ani standaryzowane.

  2. Nowe standardowe wartości należy zarejestrować w IANA zgodnie z opisem w RFC 2048 .

Podobne ograniczenie dotyczy typu najwyższego poziomu. Z tego samego źródła

Jeśli z jakiegokolwiek powodu ma zostać użyty inny typ najwyższego poziomu, należy nadać mu nazwę rozpoczynającą się od „X-”, aby wskazać jego niestandardowy status i uniknąć potencjalnego konfliktu z przyszłą oficjalną nazwą.

(Należy pamiętać, że zgodnie z RFC 2045 „[m] Atachowanie typu i podtypu mediów ZAWSZE nie rozróżnia wielkości liter”, więc nie ma różnicy między interpretacją „X-” i „x-”.)

Można więc zgadywać, że „application / x-foo” zostało użyte przed zdefiniowanym przez IANA „application / foo”. I nadal może być używany przez ludzi, którzy nie są świadomi przypisania tokena IANA.

Jak powiedział Chris Hanson, typy MIME są kontrolowane przez IANA. Jest to szczegółowo opisane w RFC 2048 - Rozszerzenia uniwersalnej poczty internetowej (MIME) Część czwarta: Procedury rejestracyjne . Zgodnie z RFC 3778 , który jest cytowany przez IANA jako definicja „application / pdf”,

Rodzaj nośnika application / pdf został po raz pierwszy zarejestrowany w 1993 roku przez Paula Lindnera do użytku według protokołu gopher; rejestracja została następnie zaktualizowana w 1994 r. przez Steve Zilles.

Typ „application / pdf” istnieje już od ponad dekady. Wydaje mi się więc, że wszędzie tam, gdzie w nowych aplikacjach zastosowano „application / x-pdf”, decyzja mogła nie być zamierzona.

GargantuChet
źródło
28

Z typu Wikipedia Media,

Typ nośnika składa się z typu, podtypu i parametrów opcjonalnych. Na przykład plik HTML może być oznaczony jako text / html; charset = UTF-8.

Typ nośnika składa się z nazwy typu najwyższego poziomu i nazwy podtypu, która jest dalej podzielona na tak zwane „drzewa”.

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

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

Wszystkie typy mediów powinny być rejestrowane przy użyciu procedur rejestracji IANA. Obecnie następujące drzewa tworzone są: standard, vendor, personallub vanity, niezarejestrowanyx.

Standard:

Typy mediów w drzewie standardów nie używają żadnego aspektu drzewa (prefiksu).

type / media type name [+suffix]

Przykłady: „application / xhtml + xml”, „image / png”

Sprzedawca:

Drzewo dostawców służy do typów mediów powiązanych z publicznie dostępnymi produktami. Wykorzystuje vnd.facet.

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

Drzewo osobiste lub próżności:

Drzewo osobiste lub Vanity obejmuje typy mediów tworzone eksperymentalnie lub jako część produktów, które nie są dystrybuowane komercyjnie. Wykorzystuje prs.facet.

type / prs. media type name [+suffix]

Niezarejestrowany x. drzewo:

„X” drzewo może być używane do typów mediów przeznaczonych wyłącznie do użytku w prywatnych, lokalnych środowiskach i tylko za aktywną zgodą stron, które je wymieniają. Typów w tym drzewie nie można zarejestrować.

Zgodnie z poprzednią wersją RFC 6838 - przestarzałej RFC 2048 (opublikowanej w listopadzie 1996 r.) Rzadko, jeśli w ogóle, konieczne jest używanie niezarejestrowanych typów eksperymentalnych, i jako takie użycie zarówno „x-”, jak i „x”. formy są odradzane . Poprzednie wersje tego RFC - RFC 1590 i RFC 1521 stwierdzały, że użycie notacji „x-” dla nazwy podtypu może być stosowane w przypadku niezarejestrowanych i prywatnych podtypów, ale to zalecenie zostało nieaktualne w listopadzie 1996 r.

type / x. media type name [+suffix]

Jasne jest więc, że typem standardowym typu MIME application/pdfjest odpowiedni do użycia, podczas gdy należy unikać używania przestarzałego i niezarejestrowanego x-typu nośnika, jak podano w RFC 2048 i RFC 6838 .

Szczęściarz
źródło
3
@TNguyen: Bez szkody. :) Myślę, że dobrze jest mieć inne wersje odpowiedzi, aby zapewnić dodatkowe informacje dla tego, kto szuka tematu. Podał też dodatkowe informacje, w porównaniu do innych odpowiedzi.
sunil