Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
To convert MHTML to PDF in C#, open the MHTML file as a stream, create PdfSaveOptions, and call Converter.ConvertMHTML() with the stream, options, and output path or stream provider.
MHTML stores a web page and its linked resources in a single MIME archive. PDF is useful when that archived web page must become a fixed-layout document for sharing, printing, archiving, or automated document workflows.
Before running the examples, install and configure Aspose.HTML for .NET in your project. The complete C# example project is available in the Aspose.HTML for .NET GitHub repository.
The static
Converter class provides the shortest path from an MHTML stream to a PDF file. The example below opens an MHTML file and converts it to PDF with default PdfSaveOptions.
1// Convert MHTML to PDF using C#
2
3// Open an existing MHTML file for reading
4using FileStream stream = File.OpenRead(DataDir + "sample.mht");
5
6// Invoke the ConvertMHTML() method to convert MHTML to PDF
7Converter.ConvertMHTML(stream, new PdfSaveOptions(), Path.Combine(OutputDir, "convert-by-two-lines.pdf"));Use this workflow when the MHTML source exists on disk and the PDF should be saved to a file path.
The workflow is:
File.OpenRead() or another readable stream.PdfSaveOptions instance.Converter.ConvertMHTML(stream, options, savePath). 1// Convert MHTML to PDF in C#
2
3// Open an existing MHTML file for reading
4using FileStream stream = File.OpenRead(DataDir + "sample.mht");
5
6// Prepare a path to save the converted file
7string savePath = Path.Combine(OutputDir, "sample-output.pdf");
8
9// Create an instance of PdfSaveOptions
10PdfSaveOptions options = new PdfSaveOptions();
11
12// Call the ConvertMHTML() method to convert MHTML to PDF
13Converter.ConvertMHTML(stream, options, savePath);Use PdfSaveOptions when the generated PDF needs custom rendering settings.
To customize MHTML to PDF conversion:
PdfSaveOptions.PageSetup, JpegQuality, BackgroundColor, resolution, or Encryption.Converter.ConvertMHTML().| Option | Use it to control |
|---|---|
PageSetup | Page size, margins, and page layout settings. |
JpegQuality | JPEG image compression quality in the PDF output. The default value is 95. |
Css | CSS processing behavior through CssOptions. |
BackgroundColor | The color used to fill the page background. The default value is transparent. |
HorizontalResolution and VerticalResolution | Output resolution values used by the rendering process. The default value is 300 dpi for each property. |
Encryption | PDF encryption settings. If not configured, the PDF is created without encryption. |
1// Convert MHTML to PDF in C# with custom settings
2
3// Open an existing MHTML file for reading
4using FileStream stream = File.OpenRead(DataDir + "sample.mht");
5
6// Prepare a path to save the converted file
7string savePath = Path.Combine(OutputDir, "sample-options.pdf");
8
9// Create an instance of PdfSaveOptions. Set up the page-size and change the background color to AliceBlue
10PdfSaveOptions options = new PdfSaveOptions()
11{
12 PageSetup =
13 {
14 AnyPage = new Page()
15 {
16 Size = new Aspose.Html.Drawing.Size(Length.FromPixels(3000), Length.FromPixels(1000))
17 }
18 },
19 BackgroundColor = System.Drawing.Color.AliceBlue
20};
21
22// Call the ConvertMHTML() method to convert MHTML to PDF
23Converter.ConvertMHTML(stream, options, savePath);Use ICreateStreamProvider when the conversion output should be written through streams instead of only to a file path. This is useful for memory-based workflows, remote storage, databases, and services that decide where the rendered output is stored.
The MemoryStreamProvider class below implements ICreateStreamProvider and keeps generated streams in memory.
1// Implement a custom MemoryStream provider for advanced control over HTML rendering output streams
2
3class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider
4{
5 // List of MemoryStream objects created during the document rendering
6 public List<MemoryStream> Streams { get; } = new List<MemoryStream>();
7
8 public Stream GetStream(string name, string extension)
9 {
10 // This method is called when only one output stream is required, for instance for XPS, PDF or TIFF formats
11 MemoryStream result = new MemoryStream();
12 Streams.Add(result);
13 return result;
14 }
15
16 public Stream GetStream(string name, string extension, int page)
17 {
18 // This method is called when the creation of multiple output streams are required. For instance, during the rendering HTML to list of image files (JPG, PNG, etc.)
19 MemoryStream result = new MemoryStream();
20 Streams.Add(result);
21 return result;
22 }
23
24 public void ReleaseStream(Stream stream)
25 {
26 // Here you can release the stream filled with data and, for instance, flush it to the hard-drive
27 }
28
29 public void Dispose()
30 {
31 // Releasing resources
32 foreach (MemoryStream stream in Streams)
33 stream.Dispose();
34 }
35}The following example converts MHTML to PDF with MemoryStreamProvider.
1// Convert MHTML to PDF in C# using memory stream
2
3// Create an instance of MemoryStreamProvider
4using MemoryStreamProvider streamProvider = new MemoryStreamProvider();
5
6// Open an existing MHTML file for reading
7using FileStream stream = File.OpenRead(DataDir + "sample.mht");
8
9// Prepare a path to save the converted file
10string savePath = Path.Combine(OutputDir, "stream-provider.pdf");
11
12// Convert MHTML to PDF by using the MemoryStreamProvider class
13Converter.ConvertMHTML(stream, new PdfSaveOptions(), streamProvider);
14
15// Get access to the memory stream that contains the result data
16MemoryStream memory = streamProvider.Streams.First();
17memory.Seek(0, SeekOrigin.Begin);
18
19// Flush the result data to the output file
20using (FileStream fs = File.Create(savePath))
21{
22 memory.CopyTo(fs);
23}Use the online MHTML to PDF Converter for quick manual conversion. Use Aspose.HTML for .NET when MHTML to PDF conversion must run inside a C# application, service, or document pipeline.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.