Показать миниатюру OPC-файла в проводнике Windows
У меня есть 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".
2 ответа
Нет никакого отношения к формату OPC. В Windows есть свой способ рисования иконки для каждого расширения файла. Чтобы нарисовать конкретный значок для определенного расширения файла, вам нужно создать dll, которая реализует интерфейс IThumbnailProvider и зарегистрировать его. Больше информации здесь.
Вы можете использовать xps-IThumbnailProvider для zip-файлов, не нужно писать свой собственный!!!
Добавьте миниатюру в свой zip-файл:
Файлы не должны иметь спецификацию!!!
Попробуйте, пока ваш файл не отобразит миниатюру, если вы переименуете его в.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}"
Это все...