KeepResourceStreamOpen
Innehåll
[
Dölj
]ResourceSavingArgs.KeepResourceStreamOpen property
Anger om Aspose.Words ska hålla strömmen öppen eller stänga den efter att en resurs har sparats.
public bool KeepResourceStreamOpen { get; set; }
Anmärkningar
Standard ärfalsk
och Aspose.Words kommer att stänga strömmen du angav iResourceStream
egenskap efter att en resurs har skrivits till den. Angesann
för att hålla strömmen öppen.
Exempel
Visar hur man använder en återanropsfunktion för att skriva ut URI:erna för externa resurser som skapats vid konvertering av ett dokument till HTML.
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
};
// En mapp som anges av ResourcesFolderAlias kommer att innehålla resurserna istället för ResourcesFolder.
// Vi måste se till att mappen finns innan strömmarna kan lägga sina resurser i den.
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>
/// Räknar och skriver ut URI:er för resurser som finns i `allt eftersom de konverteras till fast HTML`.
/// </summary>
private class ResourceUriPrinter : IResourceSavingCallback
{
void IResourceSavingCallback.ResourceSaving(ResourceSavingArgs args)
{
// Om vi anger ett mappalias i SaveOptions-objektet kommer vi att kunna skriva ut det härifrån.
mText.AppendLine($"Resource #{++mSavedResourceCount} \"{args.ResourceFileName}\"");
string extension = Path.GetExtension(args.ResourceFileName);
switch (extension)
{
case ".ttf":
case ".woff":
{
// Som standard använder 'ResourceFileUri' systemmappen för teckensnitt.
// För att undvika problem på andra plattformar måste du explicit ange sökvägen för teckensnitten.
args.ResourceFileUri = ArtifactsDir + Path.DirectorySeparatorChar + args.ResourceFileName;
break;
}
}
mText.AppendLine("\t" + args.ResourceFileUri);
// Om vi har angett en mapp i egenskapen "ResourcesFolderAlias",
// vi måste också omdirigera varje ström för att placera dess resurs i den mappen.
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();
}
Se även
- class ResourceSavingArgs
- namnutrymme Aspose.Words.Saving
- hopsättning Aspose.Words