KeepResourceStreamOpen
Contenido
[
Ocultar
]ResourceSavingArgs.KeepResourceStreamOpen property
Especifica si Aspose.Words debe mantener la secuencia abierta o cerrarla después de guardar un recurso.
public bool KeepResourceStreamOpen { get; set; }
Observaciones
El valor predeterminado esFALSO
y Aspose.Words cerrará la transmisión que usted proporcionó en elResourceStream
propiedad después de escribir un recurso en ella. Especificarverdadero
para mantener el arroyo abierto.
Ejemplos
Muestra cómo utilizar una devolución de llamada para imprimir las URI de recursos externos creados al convertir un documento a 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
};
// Una carpeta especificada por ResourcesFolderAlias contendrá los recursos en lugar de ResourcesFolder.
//Debemos asegurarnos de que la carpeta exista antes de que los flujos puedan poner sus recursos en ella.
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>
/// Cuenta e imprime las URI de los recursos contenidos en él a medida que se convierten a HTML fijo.
/// </summary>
private class ResourceUriPrinter : IResourceSavingCallback
{
void IResourceSavingCallback.ResourceSaving(ResourceSavingArgs args)
{
// Si establecemos un alias de carpeta en el objeto SaveOptions, podremos imprimirlo desde aquí.
mText.AppendLine($"Resource #{++mSavedResourceCount} \"{args.ResourceFileName}\"");
string extension = Path.GetExtension(args.ResourceFileName);
switch (extension)
{
case ".ttf":
case ".woff":
{
// De forma predeterminada, 'ResourceFileUri' utiliza la carpeta del sistema para las fuentes.
// Para evitar problemas en otras plataformas debes especificar explícitamente la ruta de las fuentes.
args.ResourceFileUri = ArtifactsDir + Path.DirectorySeparatorChar + args.ResourceFileName;
break;
}
}
mText.AppendLine("\t" + args.ResourceFileUri);
// Si hemos especificado una carpeta en la propiedad "ResourcesFolderAlias",
// También necesitaremos redirigir cada flujo para colocar su recurso en esa carpeta.
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();
}
Ver también
- class ResourceSavingArgs
- espacio de nombres Aspose.Words.Saving
- asamblea Aspose.Words