2012-04-04 11 views
8

इसमें एक एम्बेडेड छवि के साथ एक एसएसआरएस रिपोर्ट परिभाषा फ़ाइल को देखते हुए, बस यह सोचकर कि क्या छवि छवि को मूल छवि फ़ाइल को फिर से बनाने के लिए निकालना संभव है।एंबेडेड छवि को किसी फ़ाइल में निकालने के लिए संभव है?

उदा। :

<EmbeddedImage Name="tick"> 
    <MIMEType>image/bmp</MIMEType> 
    <ImageData>Qk1mAwAAAAAAADYAAAAoAAAAEAAAABEAAAABABgA ... <<REST OF IMAGE HERE>> 
    </ImageData> 
</EmbeddedImage> 

यह ImageData लेते हैं, और किसी तरह से करने के लिए मूल छवि बिटमैप बाइट धारा फिर से बनाने में यह रूप को बदलने के लिए संभव है:

RDLC फ़ाइल के अंदर

, तो आप इस तरह एक्सएमएल देख सकते हैं?

(यह जैसे कि जब आप मूल छवि फ़ाइल जिस पर एम्बेडेड छवि आधारित था खो दिया है के रूप में मामलों में उपयोगी हो सकता है।)

उत्तर

13

दो दृष्टिकोण this blog post में विस्तृत कर रहे हैं:

  1. कॉपी यदि आपको वहां पुन: उपयोग करने की आवश्यकता है तो एक रिपोर्ट से दूसरी रिपोर्ट में एन्कोड की गई छवि।
  2. रिपोर्ट की प्रतिलिपि Excel में निर्यात करें और छवि को स्प्रेडशीट से कॉपी करें।

या आप अधिक सीधे छवि के लिए उपयोग की आवश्यकता है, मैं this utility कि XML और लोड पार्स और छवियों निर्यात करेगा पाया। ऐसा लगता है कि स्रोत कोड उपलब्ध है।

+1

धन्यवाद, उपयोगिता अच्छी तरह से काम करती है। इसे rdlc फ़ाइलों के लिए भी काम करने के लिए एक मामूली परिवर्तन की आवश्यकता थी (फ़ाइल खोलने वाले संवाद में * .rdlc filespec सहित)। –

1

मुझे बस ऐसा करने की आवश्यकता है और एहसास हुआ कि एम्बेडेड छवि को काट और पेस्ट करना संभव है, भले ही कॉपी और पेस्ट करना संभव न हो।

5

मैं इस समस्या को हल करने के लिए एक छोटे से बिजली शैल स्क्रिप्ट बनाया है:

$ErrorActionPreference = 'Stop'; 
Get-ChildItem -Filter '*.rdl' | ForEach { 
    $reportFile = $_; 
    Write-Host $reportFile; 
    $report = [xml](Get-Content $reportFile); 
    $report.Report.EmbeddedImages.EmbeddedImage | Foreach { 
     $imagexml = $_; 
     $imageextension = $imagexml.MIMEType.Split('/')[1]; 
     $filename = $imagexml.Name + '.' + $imageextension; 
     Write-Host '->' $filename; 
     $imageContent = [System.Convert]::FromBase64String($imagexml.ImageData); 
     Set-Content -Path $filename -Encoding Byte -Value $imageContent; 
    } 
} 

https://gist.github.com/Fabian-Schmidt/71746e8e1dbdf9db9278

यह स्क्रिप्ट वर्तमान फ़ोल्डर में सभी रिपोर्टों से सभी छवियों को निकालता है।

+0

लाइफसेवर - धन्यवाद! – CamM