안녕하세요?
Vista Beta2 에서 잘 동작하던 코드가 RC1 에서 동작하지 않네요?
어떤 이유인지 모르겠습니다.
정성태님이 알려주신 소스를 다소 수정하여서 사용하고 있는데,
해당 소스의 내용은,
XPS Document를 읽어와서 Bitmap 이미지로 변환하는 소스입니다.
알려주신 소스는 하기 URL 의 게시판에 있구요,
게시판에 쓰여진 소스를 아래에 한번 더 붙여넣기 하였습니다.
https://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&pageno=0&detail=1&wid=229
동작되지 않는 부분은
DocumentPage aPage = fixedDocumentSeq.DocumentPaginator.GetPage( i );
부분으로,
XPS Document 의 각 페이지를 가져와서 DocumentPage Type 에 할당해 준 다음,
Bitmap 이미지로 생성해 주어야 하는데...
fixedDocumentSeq.DocumentPaginator.GetPage(Zero Based 페이지 번호);
부분에서 동작하지 않고 죽어 버립니다.
혹시 원인을 알고 계신지 여쭙겠습니다. 감사합니다.
=====<알려주신 소스 원본>=======================================================
using System.IO;
using System.Windows.Documents;
using System.Windows.Xps.Packaging;
using System.Windows.Media.Imaging;
using System.Windows.Xps.Serialization;
namespace WindowsApplication1
{
public class XpsBitmapHelper
{
static public void SaveXpsPageToBitmap(string xpsFileName, int[] pages)
{
XpsDocument xpsDoc = new XpsDocument(xpsFileName, System.IO.FileAccess.Read);
FixedDocumentSequence fixedDocumentSeq = xpsDoc.GetFixedDocumentSequence();
for ( int i = 0; i < fixedDocumentSeq.DocumentPaginator.PageCount; i ++ )
{
DocumentPage aPage = fixedDocumentSeq.DocumentPaginator.GetPage( i );
BitmapImage bitmap = new BitmapImage();
RenderTargetBitmap renderTarget =
new RenderTargetBitmap((int)aPage.Size.Width,
(int)aPage.Size.Height,
96, // WPF (Avalon) units are 96dpi based
96,
System.Windows.Media.PixelFormats.Default);
renderTarget.Render(aPage.Visual);
BitmapEncoder encoder = new BmpBitmapEncoder(); // Choose type here ie: JpegBitmapEncoder, etc
encoder.Frames.Add(BitmapFrame.Create(renderTarget));
FileStream pageOutStream = new FileStream(xpsDoc + ".Page" + i.ToString() + ".bmp", FileMode.Create, FileAccess.Write);
encoder.Save(pageOutStream);
pageOutStream.Close();
}
}
}
}
[최초 등록일: ]
[최종 수정일: 9/20/2006]