Hello, I’m trying to extract all attachments from a zip and store previews under file actual names (e.g. test.pdf becomes test_p_1.html, test_p_2.html etc.), how can I do this? Also, might be useful to specify output directory. I can’t find output path parameter in viewer.View method:
using (Viewer viewer = new Viewer("sample.zip"))
{
var options = HtmlViewOptions.ForEmbeddedResources();
viewer.View(options);
var attachments = viewer.GetAttachments();
Console.WriteLine("\nAttachments:");
foreach (Attachment attachment in attachments)
{
var ms = new MemoryStream();
viewer.SaveAttachment(attachment, ms);
if (attachment.FileType == FileType.Unknown)
continue;
var lo = new LoadOptions() { FileType = attachment.FileType };
using (Viewer viewer1 = new Viewer(ms, lo))
{
viewer1.View(options); //How can I specify output filename here? It just writes everythign in p_1.html
}
Console.WriteLine(attachment);
}
}
@eugenekr
The output directory can be specified in the ViewOptions as shown in the following code snippet
using (Viewer viewer = new Viewer("sample.zip"))
{
var options = HtmlViewOptions.ForEmbeddedResources();
viewer.View(options);
var attachments = viewer.GetAttachments();
Console.WriteLine("\nAttachments:");
foreach (Attachment attachment in attachments)
{
var ms = new MemoryStream();
viewer.SaveAttachment(attachment, ms);
if (attachment.FileType == FileType.Unknown)
continue;
var lo = new LoadOptions() { FileType = attachment.FileType };
using (Viewer viewer1 = new Viewer(ms, lo))
{
var attachmentViewOptions =
HtmlViewOptions.ForEmbeddedResources($"{attachment.FileName}/p_{{0}}.html");
viewer1.View(attachmentViewOptions);
}
Console.WriteLine(attachment);
}
}
You can use attachment filename $"{attachment.FileName}/p_{{0}}.html"
or attachment ID $"{attachment.Id}/p_{{0}}.html"
when specifying output path template. The Attachment ID is typically relative path to the file e.g. foloder/attachmnt.ext
.
1 Like
@eugenekr
To simplify attachment processing the new field called FilePath
will be added to the Attachment
class in the upcoming v21.3. This new field can be used to retrieve an attachment relative path e.g. folder/sample.docx
and filename when the file is in archive root.
@eugenekr
The FilePath
parameter has been added to Attachmnet
class in GroupDocs.Viewer for v21.3 that just has been released. The new version can be found at
Have a nice day!
1 Like