public Stream Stream { get; }
The stream object containing the PDF content created by the PdfCompressorEngine.WriteAsync(Stream,object) operation. If the PdfCompressorEngine.WriteAsyncCompleted Event was fired by a PdfCompressorEngine.WriteAsync(string,object) operation, this property will be null.
The stream object contains valid data only if the operation succeeded. The output file contains valid PDF data only if the operation succeeded. Refer to PdfCompressorWriteAsyncCompletedEventArgs for more details on determining whether the operation succeeded.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.PdfCompressor;
/* This example shows a how to use the PdfCompressorEngine::WriteAsync method to create a Pdf asynchronously.
* The output file is very simple and contains a single image.
* We will store the RasterImage and RasterImage and PdfCompressorEngine in a user class so we can dispose them
* when WriteAsync finishes and fires the WriteAsyncCompleted event.
*/
/* Class used to store the RasterImage and PdfCompressorEngine objects */
private class WriteAsyncDataStringObject
{
public RasterImage image; /* image to write as Pdf */
public PdfCompressorEngine pdfCompressor; /* compressor object that will do the save */
};
/* Handler for the WriteAsyncCompleted event */
private static void OnWriteAsyncCompletedStringObject(object sender, PdfCompressorWriteAsyncCompletedEventArgs args)
{
if (args.Error != null)
Debug.WriteLine($"WriteAsyncThread: The save operation failed with exception = {args.Error.Message}.");
else if (args.Cancelled)
Debug.WriteLine($"WriteAsyncThread: The save operation was cancelled!");
else
Debug.WriteLine($"WriteAsyncThread: The save operation succeeded! Saved as {args.FileName}");
/* clean up the data used by WriteAsync operation */
WriteAsyncDataStringObject data = (WriteAsyncDataStringObject)args.UserState;
data.pdfCompressor.Dispose();
data.image.Dispose();
if (args.Stream != null)
args.Stream.Close();
}
/* Main function calling PdfCompressorEngine.WriteAsync. Note that WriteAsync will finish after this function returns */
public void TestPdfCompressorSaveAsyncStringObject()
{
string srcFile = Path.Combine(LEAD_VARS.ImagesDir, "loadsave.jpg");
string dstFile = Path.Combine(LEAD_VARS.ImagesDir, "out.pdf");
WriteAsyncDataStringObject data = new WriteAsyncDataStringObject();
using (RasterCodecs codecs = new RasterCodecs())
data.image = codecs.Load(srcFile);
data.pdfCompressor = new PdfCompressorEngine();
data.pdfCompressor.Insert(data.image);
/* Register OnWriteAsyncCompleted as a handler for the WriteAsyncCompleted event */
data.pdfCompressor.WriteAsyncCompleted += OnWriteAsyncCompletedStringObject;
data.pdfCompressor.WriteAsync(dstFile, data);
Debug.WriteLine("MainThread: WriteAsync returned...");
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}