Skip to content

Commit d72814c

Browse files
committed
.
1 parent 0939b63 commit d72814c

11 files changed

Lines changed: 144 additions & 119 deletions

File tree

readme.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ The examples below use the SkiaSharp backend. To use ImageSharp instead, replace
127127
```cs
128128
var converter = new WordRender.Skia.DocumentConverter();
129129

130-
var result = converter.ConvertToImages(
130+
var result = await converter.ConvertToImages(
131131
"document.docx",
132132
"output-folder");
133133

@@ -148,7 +148,7 @@ foreach (var path in result.ImagePaths)
148148
```cs
149149
var converter = new WordRender.Skia.DocumentConverter();
150150

151-
var imageData = converter.ConvertToImageData("document.docx");
151+
var imageData = await converter.ConvertToImageData("document.docx");
152152

153153
foreach (var pngBytes in imageData)
154154
{
@@ -169,10 +169,10 @@ var converter = new WordRender.Skia.DocumentConverter();
169169
using var stream = File.OpenRead("document.docx");
170170

171171
// From stream to files
172-
var result = converter.ConvertToImages(stream, "output-folder");
172+
var result = await converter.ConvertToImages(stream, "output-folder");
173173

174174
// Or from stream to memory
175-
var imageData = converter.ConvertToImageData(stream);
175+
var imageData = await converter.ConvertToImageData(stream);
176176
```
177177
<sup><a href='/src/Tests/ReadmeSamples.cs#L53-L65' title='Snippet source file'>snippet source</a> | <a href='#snippet-StreamBasedConversion' title='Start of snippet'>anchor</a></sup>
178178
<!-- endSnippet -->
@@ -191,7 +191,7 @@ var options = new ConversionOptions
191191
FontWidthScale = 1.07
192192
};
193193

194-
var result = converter.ConvertToImages(
194+
var result = await converter.ConvertToImages(
195195
"document.docx",
196196
"output-folder",
197197
options);

src/Benchmarks/Program.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,25 @@ public void Setup()
3535

3636
[Benchmark(Baseline = true)]
3737
[BenchmarkCategory("Small")]
38-
public IReadOnlyList<byte[]> Skia_Small() => skia.ConvertToImageData(new MemoryStream(smallBytes));
38+
public async Task<IReadOnlyList<byte[]>> Skia_Small() => await skia.ConvertToImageData(new MemoryStream(smallBytes));
3939

4040
[Benchmark]
4141
[BenchmarkCategory("Small")]
42-
public IReadOnlyList<byte[]> ImageSharp_Small() => imageSharp.ConvertToImageData(new MemoryStream(smallBytes));
42+
public async Task<IReadOnlyList<byte[]>> ImageSharp_Small() => await imageSharp.ConvertToImageData(new MemoryStream(smallBytes));
4343

4444
[Benchmark(Baseline = true)]
4545
[BenchmarkCategory("Medium")]
46-
public IReadOnlyList<byte[]> Skia_Medium() => skia.ConvertToImageData(new MemoryStream(mediumBytes));
46+
public async Task<IReadOnlyList<byte[]>> Skia_Medium() => await skia.ConvertToImageData(new MemoryStream(mediumBytes));
4747

4848
[Benchmark]
4949
[BenchmarkCategory("Medium")]
50-
public IReadOnlyList<byte[]> ImageSharp_Medium() => imageSharp.ConvertToImageData(new MemoryStream(mediumBytes));
50+
public async Task<IReadOnlyList<byte[]>> ImageSharp_Medium() => await imageSharp.ConvertToImageData(new MemoryStream(mediumBytes));
5151

5252
[Benchmark(Baseline = true)]
5353
[BenchmarkCategory("Large")]
54-
public IReadOnlyList<byte[]> Skia_Large() => skia.ConvertToImageData(new MemoryStream(largeBytes));
54+
public async Task<IReadOnlyList<byte[]>> Skia_Large() => await skia.ConvertToImageData(new MemoryStream(largeBytes));
5555

5656
[Benchmark]
5757
[BenchmarkCategory("Large")]
58-
public IReadOnlyList<byte[]> ImageSharp_Large() => imageSharp.ConvertToImageData(new MemoryStream(largeBytes));
58+
public async Task<IReadOnlyList<byte[]>> ImageSharp_Large() => await imageSharp.ConvertToImageData(new MemoryStream(largeBytes));
5959
}

src/Morph.OpenXml/DocumentConverter.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ public abstract class DocumentConverter
1313
/// <param name="docxPath">Path to the DOCX file.</param>
1414
/// <param name="outputDirectory">Directory where PNG files will be saved.</param>
1515
/// <param name="options">Conversion options (optional).</param>
16+
/// <param name="cancel">Cancellation token.</param>
1617
/// <returns>Result containing paths to generated images and page count.</returns>
17-
public ConversionResult ConvertToImages(string docxPath, string outputDirectory, ConversionOptions? options = null)
18+
public async Task<ConversionResult> ConvertToImages(string docxPath, string outputDirectory, ConversionOptions? options = null, CancellationToken cancel = default)
1819
{
1920
using var stream = File.OpenRead(docxPath);
20-
return ConvertToImages(stream, outputDirectory, options);
21+
return await ConvertToImages(stream, outputDirectory, options, cancel);
2122
}
2223

2324
/// <summary>
@@ -26,13 +27,14 @@ public ConversionResult ConvertToImages(string docxPath, string outputDirectory,
2627
/// <param name="docxStream">Stream containing the DOCX document.</param>
2728
/// <param name="outputDirectory">Directory where PNG files will be saved.</param>
2829
/// <param name="options">Conversion options (optional).</param>
30+
/// <param name="cancel">Cancellation token.</param>
2931
/// <returns>Result containing paths to generated images and page count.</returns>
30-
public ConversionResult ConvertToImages(Stream docxStream, string outputDirectory, ConversionOptions? options = null)
32+
public async Task<ConversionResult> ConvertToImages(Stream docxStream, string outputDirectory, ConversionOptions? options = null, CancellationToken cancel = default)
3133
{
3234
options ??= new();
3335
Directory.CreateDirectory(outputDirectory);
3436

35-
var document = parser.Parse(docxStream);
37+
var document = await parser.Parse(docxStream, cancel);
3638
var imagePaths = new List<string>();
3739

3840
var pageIndex = 0;
@@ -55,24 +57,26 @@ public ConversionResult ConvertToImages(Stream docxStream, string outputDirector
5557
/// </summary>
5658
/// <param name="docxPath">Path to the DOCX file.</param>
5759
/// <param name="options">Conversion options (optional).</param>
60+
/// <param name="cancel">Cancellation token.</param>
5861
/// <returns>List of PNG image data for each page.</returns>
59-
public IReadOnlyList<byte[]> ConvertToImageData(string docxPath, ConversionOptions? options = null)
62+
public async Task<IReadOnlyList<byte[]>> ConvertToImageData(string docxPath, ConversionOptions? options = null, CancellationToken cancel = default)
6063
{
6164
using var stream = File.OpenRead(docxPath);
62-
return ConvertToImageData(stream, options);
65+
return await ConvertToImageData(stream, options, cancel);
6366
}
6467

6568
/// <summary>
6669
/// Converts a DOCX stream to PNG image data in memory.
6770
/// </summary>
6871
/// <param name="docxStream">Stream containing the DOCX document.</param>
6972
/// <param name="options">Conversion options (optional).</param>
73+
/// <param name="cancel">Cancellation token.</param>
7074
/// <returns>List of PNG image data for each page.</returns>
71-
public IReadOnlyList<byte[]> ConvertToImageData(Stream docxStream, ConversionOptions? options = null)
75+
public async Task<IReadOnlyList<byte[]>> ConvertToImageData(Stream docxStream, ConversionOptions? options = null, CancellationToken cancel = default)
7276
{
7377
options ??= new();
7478

75-
var document = parser.Parse(docxStream);
79+
var document = await parser.Parse(docxStream, cancel);
7680
var imageData = new List<byte[]>();
7781

7882
RenderPages(document, options, writePng =>

0 commit comments

Comments
 (0)