2017-07-21 12 views
0

画像をinputstreamに渡すときに、エラー幅がnullになることはありません。私はalteranteメソッドを見つけませんでした。基本的に私はUWPプラットフォームをサポートするXamarin.formsで画像をPdf形式に変換したいと思っています。 私はこれにxfinium pdfライブラリを使用しています。Xamarin:Xamarin.formsで画像をPdf形式に変換する


public void ConvertJpegToPdf() 
      { 
       try 
       { 

        PdfFixedDocument document = new PdfFixedDocument(); 
        Xfinium.Pdf.PdfPage page = document.Pages.Add(); 
        page.Width = 800; 
        page.Height = 600; 

        var imageStream = GetStream(); 
        PdfJpegImage jpeg = new PdfJpegImage(imageStream);//<-Error 

        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 = null; 
        document.Save(pdfStream); 
       } 
       catch (Exception ex) 
       { 
        throw ex; 
       } 

      } 


    protected Stream GetStream() 
      { 
       byte[] byteArray = Encoding.UTF8.GetBytes("http://david.qservicesit.com/images/3.jpg"); 
       MemoryStream stream = new MemoryStream(byteArray); 
       return stream; 
      } 

あなたは、このように画像ストリームを取得できませんでした。この

答えて

0

byte[] byteArray = Encoding.UTF8.GetBytes("http://david.qservicesit.com/images/3.jpg");

を行うには、いくつかの代替を提案してください。あなたが使った方法は文字列のBytesしか得られません。あなたのシナリオでは、httpクライアントを使用してイメージストリームを取得できます。次のコードを参照してください:

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; 
    } 

} 
関連する問題