java 如何在Tika版本2.6中检测Adobe Illustrator文件?

xxe27gdn  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(147)

我想使用Tika 2.6来检测MIME类型为'application/illustrator'的文件。当我使用下面的代码片段时,我总是得到MIME类型'application/pdf':

public MediaType detectMimeTypeFromContent(@NonNull File file) throws IOException {
    TikaConfig config = TikaConfig.getDefaultConfig();
    Detector detector = config.getDetector();
    Metadata metadata = new Metadata();
    TikaInputStream tikaStream = TikaInputStream.get(file, metadata);
    MediaType mediaType = detector.detect(tikaStream, metadata);
    tikaStream.close();

    return mediaType;
}

我使用以下依赖项:

implementation 'org.apache.tika:tika-core:2.6.0'
implementation 'org.apache.tika:tika-parsers:2.6.0'

如何正确检测Adobe Illustrator文件?

wlp8pajw

wlp8pajw1#

Adobe文档显示它们内部使用3个应用程序/类型设置
被视为PDF或Illustrator文档的文档MIME类型列表。

  • PDF格式
  • 后记
  • 插画师

也去一说
Adobe Illustrator的文件格式是PDF的变体。在Experience Manager资产的上下文中,主要区别如下:
AdobeIllustrator文档由具有多个图层的单个页面组成。每个图层都被提取为Illustrator主资源下的PNG子资源。
PDF文档由一个或多个页面组成。每个页面都被提取为主多页PDF文档下的单页PDF子资源。
所以Adobe应用程序有一个内部排版来区分应用程序/插图画家,然而,这不是一个注册的mimetype(AI是PDF的一个子集,如上所述)
其他应用程序可能会与一个 Package 另一个的混合体斗争,因此作为一个示例
语言学家报告 .ai的应用程序/附言的内容类型,而其他报告应用程序/PDF可能是由于
AI文件格式的早期版本[24年前][Illustrator版本3到8将图稿保存为专门的EPS文件,]是真正的EPS文件,具有受限的、紧凑的语法,以及由符合DSC的开放结构约定的Illustrator特定DSC注解表示的附加语义。
困惑?不要,简单地
*like the current mime type register,接受AI文件是PDF一样的应用程序/pdf。
我经常提到text/pdf作为ansi/pdf的传统格式,但也没有列出
如果文件以40位签名%PDF-开始,则无论版本或内容如何
RFC https://www.rfc-editor.org/rfc/rfc8118.html
PDF版本PDF格式已经经历了几次修订,主要是为了添加功能。PDF功能通常以较老的查看器“优雅地失败”的方式添加,因为他们可以只忽略他们不识别的功能。即使如此,生产的PDF版本越老,越多的传统查看器将支持该版本,但启用的功能较少。
“application/pdf”介质类型用于所有版本。***请参阅[ISOPDF 2] Annex I“PDF版本和兼容性”。

相关问题