Xamarin:在Xamarin.forms中将图像转换为Pdf格式

Xamarin:在Xamarin.forms中将图像转换为Pdf格式,xamarin,uwp,Xamarin,Uwp,将图像传递到inputstream时,我得到的错误宽度不能为null。因为我没有找到任何替代方法。基本上,我想在Xamarin.forms中将图像转换为Pdf格式,它支持UWP平台。 我正在为此使用xfinium pdf库 public void ConvertJpegToPdf() { 尝试 { PdfFixedDocument document=新的PdfFixedDocument(); Xfinium.Pdf.PdfPage page=document.Pages.Add(); 页宽=8

将图像传递到inputstream时,我得到的错误宽度不能为null。因为我没有找到任何替代方法。基本上,我想在Xamarin.forms中将图像转换为Pdf格式,它支持UWP平台。 我正在为此使用xfinium pdf库


public void ConvertJpegToPdf()
{
尝试
{
PdfFixedDocument document=新的PdfFixedDocument();
Xfinium.Pdf.PdfPage page=document.Pages.Add();
页宽=800;
页高=600;
var imageStream=GetStream();
PdfJpegImage jpeg=新的PdfJpegImage(imageStream)//
byte[]byteArray=Encoding.UTF8.GetBytes(“http://david.qservicesit.com/images/3.jpg”;

您无法通过这种方式获取图像流。您所使用的方法只能获取字符串的
字节
。对于您的场景,您可以使用客户端获取图像流。请参阅以下代码:

public async Task<Stream> GetStream()
{
    HttpClient client = new HttpClient();
    HttpResponseMessage res = await client.GetAsync(new Uri("http://david.qservicesit.com/images/3.jpg"));
    Stream stream = await res.Content.ReadAsStreamAsync();
    return stream;
}


public async Task ConvertJpegToPdf()
{
    try
    {
        PdfFixedDocument document = new PdfFixedDocument();
        Xfinium.Pdf.PdfPage page = document.Pages.Add();
        page.Width = 800;
        page.Height = 600;

        var imageStream = await GetStream();
        PdfJpegImage jpeg = new PdfJpegImage(imageStream);
        PdfStandardFont helvetica = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
        PdfBrush brush = new PdfBrush(PdfRgbColor.Red);

        page.Graphics.DrawImage(jpeg, 0, 0, page.Width, page.Height);
        Stream pdfStream = new MemoryStream();
        document.Save(pdfStream);
    }
    catch (Exception ex)
    {
        throw ex;
    }

}
public异步任务GetStream()
{
HttpClient=新的HttpClient();
HttpResponseMessage res=wait client.GetAsync(新Uri(“http://david.qservicesit.com/images/3.jpg"));
Stream=wait res.Content.ReadAsStreamAsync();
回流;
}
公共异步任务转换程序JPEGTOPDF()
{
尝试
{
PdfFixedDocument document=新的PdfFixedDocument();
Xfinium.Pdf.PdfPage page=document.Pages.Add();
页宽=800;
页高=600;
var imageStream=await GetStream();
PdfJpegImage jpeg=新的PdfJpegImage(imageStream);
pdfstandardfonthelvetica=新的PdfStandardFont(PdfStandardFontFace.helvetica,24);
PdfBrush笔刷=新的PdfBrush(PdfRgbColor.Red);
page.Graphics.DrawImage(jpeg,0,0,page.Width,page.Height);
Stream pdfStream=新内存流();
文件保存(pdfStream);
}
捕获(例外情况除外)
{
掷骰子;
}
}
public async Task<Stream> GetStream()
{
    HttpClient client = new HttpClient();
    HttpResponseMessage res = await client.GetAsync(new Uri("http://david.qservicesit.com/images/3.jpg"));
    Stream stream = await res.Content.ReadAsStreamAsync();
    return stream;
}


public async Task ConvertJpegToPdf()
{
    try
    {
        PdfFixedDocument document = new PdfFixedDocument();
        Xfinium.Pdf.PdfPage page = document.Pages.Add();
        page.Width = 800;
        page.Height = 600;

        var imageStream = await GetStream();
        PdfJpegImage jpeg = new PdfJpegImage(imageStream);
        PdfStandardFont helvetica = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
        PdfBrush brush = new PdfBrush(PdfRgbColor.Red);

        page.Graphics.DrawImage(jpeg, 0, 0, page.Width, page.Height);
        Stream pdfStream = new MemoryStream();
        document.Save(pdfStream);
    }
    catch (Exception ex)
    {
        throw ex;
    }

}