21 using System.Runtime.InteropServices;
38 public static void SaveAsPNG(
this Page page,
string fileName,
double scale = 1)
43 MemoryStream ms =
new MemoryStream();
46 using (MuPDFContext context =
new MuPDFContext())
48 using (MuPDFDocument muDoc =
new MuPDFDocument(context, ref ms, InputFileTypes.PDF))
50 muDoc.SaveImage(0, scale, MuPDFCore.PixelFormats.RGBA, fileName, RasterOutputFileTypes.PNG);
63 public static void SaveAsPNG(
this Page page, Stream stream,
double scale = 1)
68 MemoryStream ms =
new MemoryStream();
71 using (MuPDFContext context =
new MuPDFContext())
73 using (MuPDFDocument muDoc =
new MuPDFDocument(context, ref ms, InputFileTypes.PDF))
75 muDoc.WriteImage(0, scale, MuPDFCore.PixelFormats.RGBA, stream, RasterOutputFileTypes.PNG);
99 MemoryStream ms =
new MemoryStream();
102 IntPtr imageDataAddress;
107 using (MuPDFContext context =
new MuPDFContext())
109 using (MuPDFDocument muDoc =
new MuPDFDocument(context, ref ms, InputFileTypes.PDF))
111 int imageSize = muDoc.GetRenderedSize(0, scale, MuPDFCore.PixelFormats.RGBA);
113 RoundedRectangle roundedBounds = muDoc.
Pages[0].Bounds.Round(scale);
115 width = roundedBounds.Width;
116 height = roundedBounds.Height;
119 imageDataAddress = Marshal.AllocHGlobal(imageSize);
120 GC.AddMemoryPressure(imageSize);
122 muDoc.Render(0, scale, MuPDFCore.PixelFormats.RGBA, imageDataAddress);
130 return new RasterImage(ref disposableAddress, width, height,
true, interpolate);