IResourceSavingCallback
İçindekiler
[
Saklamak
]IResourceSavingCallback interface
Bir belgeyi sabit sayfa HTML veya SVG olarak kaydederken Aspose.Words’ün harici kaynakları (resimler, yazı tipleri ve css) nasıl kaydedeceğini kontrol etmek istiyorsanız bu arayüzü uygulayın.
public interface IResourceSavingCallback
yöntemler
İsim | Tanım |
---|---|
ResourceSaving(ResourceSavingArgs) | Aspose.Words harici bir kaynağı sabit sayfa HTML veya SVG biçimlerine kaydettiğinde çağrılır. |
Örnekler
Bir belgeyi HTML’e dönüştürürken oluşturulan dış kaynakları izlemek için bir geri aramanın nasıl kullanılacağını gösterir.
public void ResourceSavingCallback()
{
Document doc = new Document(MyDir + "Bullet points with alternative font.docx");
FontSavingCallback callback = new FontSavingCallback();
HtmlFixedSaveOptions saveOptions = new HtmlFixedSaveOptions
{
ResourceSavingCallback = callback
};
doc.Save(ArtifactsDir + "HtmlFixedSaveOptions.UsingMachineFonts.html", saveOptions);
Console.WriteLine(callback.GetText());
}
private class FontSavingCallback : IResourceSavingCallback
{
/// <summary>
/// Aspose.Words harici bir kaynağı sabit sayfa HTML veya SVG'ye kaydettiğinde çağrılır.
/// </summary>
public void ResourceSaving(ResourceSavingArgs args)
{
mText.AppendLine($"Original document URI:\t{args.Document.OriginalFileName}");
mText.AppendLine($"Resource being saved:\t{args.ResourceFileName}");
mText.AppendLine($"Full uri after saving:\t{args.ResourceFileUri}\n");
}
public string GetText()
{
return mText.ToString();
}
private readonly StringBuilder mText = new StringBuilder();
}
Bir belgeyi HTML’e dönüştürürken oluşturulan harici kaynakların URI’lerini yazdırmak için bir geri aramanın nasıl kullanılacağını gösterir.
public void HtmlFixedResourceFolder()
{
Document doc = new Document(MyDir + "Rendering.docx");
ResourceUriPrinter callback = new ResourceUriPrinter();
HtmlFixedSaveOptions options = new HtmlFixedSaveOptions
{
SaveFormat = SaveFormat.HtmlFixed,
ExportEmbeddedImages = false,
ResourcesFolder = ArtifactsDir + "HtmlFixedResourceFolder",
ResourcesFolderAlias = ArtifactsDir + "HtmlFixedResourceFolderAlias",
ShowPageBorder = false,
ResourceSavingCallback = callback
};
// ResourcesFolderAlias tarafından belirtilen klasör ResourcesFolder yerine kaynakları içerecektir.
// Akışların kaynaklarını koyabilmeleri için klasörün var olduğundan emin olmalıyız.
Directory.CreateDirectory(options.ResourcesFolderAlias);
doc.Save(ArtifactsDir + "HtmlFixedSaveOptions.HtmlFixedResourceFolder.html", options);
Console.WriteLine(callback.GetText());
string[] resourceFiles = Directory.GetFiles(ArtifactsDir + "HtmlFixedResourceFolderAlias");
Assert.False(Directory.Exists(ArtifactsDir + "HtmlFixedResourceFolder"));
Assert.AreEqual(6, resourceFiles.Count(f => f.EndsWith(".jpeg") || f.EndsWith(".png") || f.EndsWith(".css")));
}
/// <summary>
/// Sabit HTML'ye dönüştürüldükçe, içerdiği kaynakların URI'lerini sayar ve yazdırır.
/// </summary>
private class ResourceUriPrinter : IResourceSavingCallback
{
void IResourceSavingCallback.ResourceSaving(ResourceSavingArgs args)
{
// SaveOptions nesnesinde bir klasör takma adı belirlersek buradan yazdırabileceğiz.
mText.AppendLine($"Resource #{++mSavedResourceCount} \"{args.ResourceFileName}\"");
string extension = Path.GetExtension(args.ResourceFileName);
switch (extension)
{
case ".ttf":
case ".woff":
{
// Varsayılan olarak, 'ResourceFileUri' yazı tipleri için sistem klasörünü kullanır.
// Diğer platformlarda sorun yaşamamak için fontların yolunu açıkça belirtmeniz gerekir.
args.ResourceFileUri = ArtifactsDir + Path.DirectorySeparatorChar + args.ResourceFileName;
break;
}
}
mText.AppendLine("\t" + args.ResourceFileUri);
// "ResourcesFolderAlias" özelliğinde bir klasör belirttiysek,
// ayrıca her akışı, kaynağını o klasöre koyacak şekilde yönlendirmemiz gerekecek.
args.ResourceStream = new FileStream(args.ResourceFileUri, FileMode.Create);
args.KeepResourceStreamOpen = false;
}
public string GetText()
{
return mText.ToString();
}
private int mSavedResourceCount;
private readonly StringBuilder mText = new StringBuilder();
}
Ayrıca bakınız
- ad alanı Aspose.Words.Saving
- toplantı Aspose.Words