IImageSavingCallback
Innehåll
[
Dölj
]IImageSavingCallback interface
Implementera detta gränssnitt om du vill styra hur Aspose.Words sparar bilder när ett dokument sparas till HTML. Kan användas av andra format.
public interface IImageSavingCallback
Metoder
namn | Beskrivning |
---|---|
ImageSaving(ImageSavingArgs) | Anropas när Aspose.Words sparar en bild till HTML. |
Exempel
Visar hur man byter namn på bilden när den sparas i Markdown-dokumentet.
public void RenameImages()
{
Document doc = new Document(MyDir + "Rendering.docx");
MarkdownSaveOptions saveOptions = new MarkdownSaveOptions();
// Om vi konverterar ett dokument som innehåller bilder till Markdown, kommer vi att få en Markdown-fil som länkar till flera bilder.
// Varje bild kommer att vara i form av en fil i det lokala filsystemet.
// Det finns också en återanropsfunktion som kan anpassa namn och filsystemplats för varje bild.
saveOptions.ImageSavingCallback = new SavedImageRename("MarkdownSaveOptions.HandleDocument.md");
saveOptions.SaveFormat = SaveFormat.Markdown;
// Metoden ImageSaving() för vår återanropning kommer att köras vid denna tidpunkt.
doc.Save(ArtifactsDir + "MarkdownSaveOptions.HandleDocument.md", saveOptions);
Assert.AreEqual(1,
Directory.GetFiles(ArtifactsDir)
.Where(s => s.StartsWith(ArtifactsDir + "MarkdownSaveOptions.HandleDocument.md shape"))
.Count(f => f.EndsWith(".jpeg")));
Assert.AreEqual(8,
Directory.GetFiles(ArtifactsDir)
.Where(s => s.StartsWith(ArtifactsDir + "MarkdownSaveOptions.HandleDocument.md shape"))
.Count(f => f.EndsWith(".png")));
}
/// <summary>
/// Byter namn på sparade bilder som skapas när ett Markdown-dokument sparas.
/// </summary>
public class SavedImageRename : IImageSavingCallback
{
public SavedImageRename(string outFileName)
{
mOutFileName = outFileName;
}
void IImageSavingCallback.ImageSaving(ImageSavingArgs args)
{
string imageFileName = $"{mOutFileName} shape {++mCount}, of type {args.CurrentShape.ShapeType}{Path.GetExtension(args.ImageFileName)}";
args.ImageFileName = imageFileName;
args.ImageStream = new FileStream(ArtifactsDir + imageFileName, FileMode.Create);
Assert.True(args.ImageStream.CanWrite);
Assert.True(args.IsImageAvailable);
Assert.False(args.KeepImageStreamOpen);
}
private int mCount;
private readonly string mOutFileName;
}
Visar hur man delar upp ett dokument i delar och sparar dem.
public void DocumentPartsFileNames()
{
Document doc = new Document(MyDir + "Rendering.docx");
string outFileName = "SavingCallback.DocumentPartsFileNames.html";
// Skapa ett "HtmlFixedSaveOptions"-objekt, som vi kan skicka till dokumentets "Save"-metod
// för att ändra hur vi konverterar dokumentet till HTML.
HtmlSaveOptions options = new HtmlSaveOptions();
// Om vi sparar dokumentet normalt kommer det att finnas en HTML-utgång
// dokument med allt innehåll i källdokumentet.
// Ställ in egenskapen "DocumentSplitCriteria" till "DocumentSplitCriteria.SectionBreak" till
// spara vårt dokument till flera HTML-filer: en för varje avsnitt.
options.DocumentSplitCriteria = DocumentSplitCriteria.SectionBreak;
// Tilldela en anpassad återanropning till egenskapen "DocumentPartSavingCallback" för att ändra logiken för att spara dokumentdelen.
options.DocumentPartSavingCallback = new SavedDocumentPartRename(outFileName, options.DocumentSplitCriteria);
// Om vi konverterar ett dokument som innehåller bilder till html, får vi en html-fil som länkar till flera bilder.
// Varje bild kommer att vara i form av en fil i det lokala filsystemet.
// Det finns också en återanropsfunktion som kan anpassa namn och filsystemplats för varje bild.
options.ImageSavingCallback = new SavedImageRename(outFileName);
doc.Save(ArtifactsDir + outFileName, options);
}
/// <summary>
/// Anger anpassade filnamn för utdatadokument som sparandet delar upp ett dokument i.
/// </summary>
private class SavedDocumentPartRename : IDocumentPartSavingCallback
{
public SavedDocumentPartRename(string outFileName, DocumentSplitCriteria documentSplitCriteria)
{
mOutFileName = outFileName;
mDocumentSplitCriteria = documentSplitCriteria;
}
void IDocumentPartSavingCallback.DocumentPartSaving(DocumentPartSavingArgs args)
{
// Vi kan komma åt hela källdokumentet via egenskapen "Dokument".
Assert.True(args.Document.OriginalFileName.EndsWith("Rendering.docx"));
string partType = string.Empty;
switch (mDocumentSplitCriteria)
{
case DocumentSplitCriteria.PageBreak:
partType = "Page";
break;
case DocumentSplitCriteria.ColumnBreak:
partType = "Column";
break;
case DocumentSplitCriteria.SectionBreak:
partType = "Section";
break;
case DocumentSplitCriteria.HeadingParagraph:
partType = "Paragraph from heading";
break;
}
string partFileName = $"{mOutFileName} part {++mCount}, of type {partType}{Path.GetExtension(args.DocumentPartFileName)}";
// Nedan följer två sätt att ange var Aspose.Words ska spara varje del av dokumentet.
// 1 - Ange ett filnamn för utdatafilen:
args.DocumentPartFileName = partFileName;
// 2 - Skapa en anpassad ström för utdatafilen:
args.DocumentPartStream = new FileStream(ArtifactsDir + partFileName, FileMode.Create);
Assert.True(args.DocumentPartStream.CanWrite);
Assert.False(args.KeepDocumentPartStreamOpen);
}
private int mCount;
private readonly string mOutFileName;
private readonly DocumentSplitCriteria mDocumentSplitCriteria;
}
/// <summary>
/// Anger anpassade filnamn för bildfiler som skapas vid en HTML-konvertering.
/// </summary>
public class SavedImageRename : IImageSavingCallback
{
public SavedImageRename(string outFileName)
{
mOutFileName = outFileName;
}
void IImageSavingCallback.ImageSaving(ImageSavingArgs args)
{
string imageFileName = $"{mOutFileName} shape {++mCount}, of type {args.CurrentShape.ShapeType}{Path.GetExtension(args.ImageFileName)}";
// Nedan följer två sätt att ange var Aspose.Words ska spara varje del av dokumentet.
// 1 - Ange ett filnamn för bildfilen som visas:
args.ImageFileName = imageFileName;
// 2 - Skapa en anpassad ström för utdatabildfilen:
args.ImageStream = new FileStream(ArtifactsDir + imageFileName, FileMode.Create);
Assert.True(args.ImageStream.CanWrite);
Assert.True(args.IsImageAvailable);
Assert.False(args.KeepImageStreamOpen);
}
private int mCount;
private readonly string mOutFileName;
}
Se även
- namnutrymme Aspose.Words.Saving
- hopsättning Aspose.Words