2017-07-27 33 views

回答

0

您必須使用BitmapDecoder/BitmapEncoder UWP類將GIF圖像轉換爲PNG(或JPEG),然後創建可在PdfFlowTableImageCell中使用的PdfPngImage(或PdfJpegImage)。

UPDATE:下面的代碼顯示瞭如何將GIF圖像轉換爲PNG在UWP(它假定您的GIF圖像是流):

// Stream gifStream = your image stream 
BitmapDecoder gifDecoder = 
    await BitmapDecoder.CreateAsync(gifStream.AsRandomAccessStream()); 
BitmapFrame gifFrame = await gifDecoder.GetFrameAsync(0); 
PixelDataProvider gifPixels = await gifFrame.GetPixelDataAsync(); 

InMemoryRandomAccessStream pngStream = new InMemoryRandomAccessStream(); 
BitmapEncoder pngEncoder = 
    await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, pngStream); 
pngEncoder.SetPixelData(BitmapPixelFormat.Rgba8, BitmapAlphaMode.Straight, 
    gifFrame.PixelWidth, gifFrame.PixelHeight, 
    96, 96, gifPixels.DetachPixelData()); 
await pngEncoder.FlushAsync(); 
pngStream.Seek(0); 

PdfPngImage pngImage = new PdfPngImage(pngStream.AsStream()); 
+0

確定。感謝Mihai。我試圖找出如何將GIF/ISF流(我沒有物理文件,只是一個流)轉換爲PdfPngImage所需的PNG流。到目前爲止,沒有運氣。 – ata6502

+0

@ ata6502我用代碼更新了我的答案,顯示瞭如何將GIF圖像轉換爲PNG –

+0

感謝Mihai。我試過你的代碼,但沒有按預期工作。 PNG圖像在PDF報告中顯示爲黑色矩形。仔細檢查後發現源GIF流的長度爲2490字節,但輸出PNG流只有259個。我不確定爲什麼會有這種差異。也許這是因爲GIF有ISF信息。無論如何,我想向您發送我想要包含在PDF中的GIF文件,但是我沒有看到在StackOverflow上執行此操作的任何選項。 – ata6502