Hi,
I have a requirement wherein I have to create PDF out of the framework elements. Say, I have labels, textboxes. I have to capture an image for the same and insert it into a PDF. As I came to know, only jpegs are supported, so I tried creating a jpeg for the control and then creating a pdf. Here is the code I am using:
public sealed partial class CustomControl: UserControl
{
public async Task Print(StorageFile file,)
{
//Creates a new PDF document.
PdfDocument doc = new PdfDocument();
//Adds a page to the document.
PdfPage page = doc.Pages.Add();
//Creates Pdf graphics for the page.
PdfGraphics g = page.Graphics;
//Creates a solid brush.
PdfBrush brush = new PdfSolidBrush(new PdfColor(255,0,0));
//Sets the font.
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 12);
PdfImage image = new PdfBitmap(await CreateBitmap(this));
g.DrawImage(image, new System.Drawing.PointF(10, 10));
await doc.SaveAsync(file);
//g.DrawImage()
}
async public Task<System.IO.Stream> CreateBitmap(FrameworkElement element)
{
// render element to image (WinRT)
var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(element);
var wb = new WriteableBitmap(renderTargetBitmap.PixelWidth, renderTargetBitmap.PixelHeight);
(await renderTargetBitmap.GetPixelsAsync()).CopyTo(wb.PixelBuffer);
var rect = new Rect(0, 0, renderTargetBitmap.PixelWidth, renderTargetBitmap.PixelHeight);
StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
await wb.SaveToFile(folder, "test1.jpeg");
StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("test1.jpeg");
Stream stream = await file.OpenStreamForReadAsync();
return stream;
}
}
But this still gives me the same error that jpeg is only supported. Can you please let me know where I am going wrong.