在 Windows 资源管理器中显示 OPC 文件的缩略图
Show thumbnail of an OPC file in Windows Explorer
我有一个 OPC 文件。它工作正常。现在我正在尝试添加缩略图,因此当此文件显示在 Windows 资源管理器中时,或者例如作为浏览器中的附件显示时,我的缩略图就会显示。
我尝试添加
<Relationship Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail" Target="/thumbnail.png" Id="RTN1" />
到 .rels 文件。我试图添加 jpeg 而不是 png。我尝试了 32x32 和 64x64 尺寸。
[Content_Types].xml:
<Default Extension="png" ContentType="image/png" />
或<Default Extension="jpeg" ContentType="image/jpeg" />
我的文件结构:
- _rels
- .rels
- thumbnail.png
- 其他文件
- [Content_Types].xml
我非常感谢使用缩略图及其结构处理 OPC 文件的标记示例。
编辑 2:
当文件扩展名为 'xps' 时,我已经设法显示缩略图了。
与OPC格式无关。 Windows 有自己的方式为每个文件扩展名绘制图标。要为特定文件扩展名绘制特定图标,您需要创建一个 dll,它实现 IThumbnailProvider 接口并注册它。更多信息 here.
您可以使用 xps-IThumbnailProvider 压缩文件,无需自己编写!!!
将缩略图添加到您的 zip 文件中:
文件不能有 BOM!!!
如果将文件重命名为 .xps,请尝试直到文件显示缩略图
Public WriteOnly Property Thumbnail As Image
Set(value As Image)
If value IsNot Nothing Then
Dim relsdir = Me.ZipArchivWriter.CreateEntry("_rels/", CompressionLevel.NoCompression)
Using rels = Me.ZipArchivWriter.CreateEntry("_rels/.rels", CompressionLevel.Fastest).Open
Using w As New StreamWriter(rels, FXENCODING)
w.WriteLine(XMLSTART)
w.WriteLine("<Relationships xmlns=""http://schemas.openxmlformats.org/package/2006/relationships"">")
w.WriteLine("<Relationship Target=""thumbnail.png"" Id=""R1"" Type=""http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail"" />")
w.WriteLine("</Relationships>")
End Using
End Using
Using ct = Me.ZipArchivWriter.CreateEntry("[Content_Types].xml", CompressionLevel.Fastest).Open
Using w As New StreamWriter(ct, FXENCODING)
w.WriteLine(XMLSTART)
w.WriteLine("<Types xmlns=""http://schemas.openxmlformats.org/package/2006/content-types"">")
w.WriteLine("<Default Extension=""rels"" ContentType=""application/vnd.openxmlformats-package.relationships+xml"" />")
w.WriteLine("<Default Extension=""PNG"" ContentType=""image/png"" />")
w.WriteLine("</Types>")
End Using
End Using
Using tn = Me.ZipArchivWriter.CreateEntry(FXTHUMBNAIL, CompressionLevel.NoCompression).Open
value.Save(tn, ImageFormat.Png)
End Using
End If
End Set
End Property
然后将您的文件扩展名添加到注册表(ClassesRoot 或 CurrentUser):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\.frax\shellex\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}]
@="{44121072-A222-48f2-A58A-6D9AD51EBBE9}"
[HKEY_CURRENT_USER\Software\Classes\.frax\shellex\{e357fccd-a995-4576-b01f-234630154e96}]
@="{44121072-A222-48f2-A58A-6D9AD51EBBE9}"
[HKEY_CURRENT_USER\Software\Classes\.frax\shellex\PropertyHandler]
@="{45670FA8-ED97-4F44-BC93-305082590BFB}"
就这些了...
我有一个 OPC 文件。它工作正常。现在我正在尝试添加缩略图,因此当此文件显示在 Windows 资源管理器中时,或者例如作为浏览器中的附件显示时,我的缩略图就会显示。
我尝试添加
<Relationship Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail" Target="/thumbnail.png" Id="RTN1" />
到 .rels 文件。我试图添加 jpeg 而不是 png。我尝试了 32x32 和 64x64 尺寸。
[Content_Types].xml:
<Default Extension="png" ContentType="image/png" />
或<Default Extension="jpeg" ContentType="image/jpeg" />
我的文件结构:
- _rels
- .rels
- thumbnail.png
- 其他文件
- [Content_Types].xml
我非常感谢使用缩略图及其结构处理 OPC 文件的标记示例。
编辑 2:
当文件扩展名为 'xps' 时,我已经设法显示缩略图了。
与OPC格式无关。 Windows 有自己的方式为每个文件扩展名绘制图标。要为特定文件扩展名绘制特定图标,您需要创建一个 dll,它实现 IThumbnailProvider 接口并注册它。更多信息 here.
您可以使用 xps-IThumbnailProvider 压缩文件,无需自己编写!!!
将缩略图添加到您的 zip 文件中:
文件不能有 BOM!!!
如果将文件重命名为 .xps,请尝试直到文件显示缩略图
Public WriteOnly Property Thumbnail As Image
Set(value As Image)
If value IsNot Nothing Then
Dim relsdir = Me.ZipArchivWriter.CreateEntry("_rels/", CompressionLevel.NoCompression)
Using rels = Me.ZipArchivWriter.CreateEntry("_rels/.rels", CompressionLevel.Fastest).Open
Using w As New StreamWriter(rels, FXENCODING)
w.WriteLine(XMLSTART)
w.WriteLine("<Relationships xmlns=""http://schemas.openxmlformats.org/package/2006/relationships"">")
w.WriteLine("<Relationship Target=""thumbnail.png"" Id=""R1"" Type=""http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail"" />")
w.WriteLine("</Relationships>")
End Using
End Using
Using ct = Me.ZipArchivWriter.CreateEntry("[Content_Types].xml", CompressionLevel.Fastest).Open
Using w As New StreamWriter(ct, FXENCODING)
w.WriteLine(XMLSTART)
w.WriteLine("<Types xmlns=""http://schemas.openxmlformats.org/package/2006/content-types"">")
w.WriteLine("<Default Extension=""rels"" ContentType=""application/vnd.openxmlformats-package.relationships+xml"" />")
w.WriteLine("<Default Extension=""PNG"" ContentType=""image/png"" />")
w.WriteLine("</Types>")
End Using
End Using
Using tn = Me.ZipArchivWriter.CreateEntry(FXTHUMBNAIL, CompressionLevel.NoCompression).Open
value.Save(tn, ImageFormat.Png)
End Using
End If
End Set
End Property
然后将您的文件扩展名添加到注册表(ClassesRoot 或 CurrentUser):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\.frax\shellex\{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}]
@="{44121072-A222-48f2-A58A-6D9AD51EBBE9}"
[HKEY_CURRENT_USER\Software\Classes\.frax\shellex\{e357fccd-a995-4576-b01f-234630154e96}]
@="{44121072-A222-48f2-A58A-6D9AD51EBBE9}"
[HKEY_CURRENT_USER\Software\Classes\.frax\shellex\PropertyHandler]
@="{45670FA8-ED97-4F44-BC93-305082590BFB}"
就这些了...