2014-09-19 2 views
1

m 그리드가있는 경우 : companysnapshot .. 해당 그리드를 디스크로 내 보낸 다음 다시 디스크에서 가져 와서 pdf로 내 보냅니다. 아래 코드는 정상적으로 작동하고 이미지와 함께 내보내기가 완료되었습니다. BT 문제입니다 ..이미지를 PDF로 내보내기

- UI에서 저장> 이미지 (PNG로 변환하기는 될 수 있음)의 흰색 배경에 변화 수출 블랙 background..when

입니다 -> 내가 원하는 pdf 페이지에있는 이미지의 좌표를 맞 춥니 다.

이미지 또는 PDF 페이지의 폭을 늘리는 방법이 있습니다. m이 초보자가 ... 누군가이 코드를 조금이라도 코딩하면 도움이 될 것입니다. PDF 내보내기위한 itextsharp하는 telerik 보로 전환하면

private void CreateChartDocumentPart(RadDocument document, Grid whGrid, Grid companysnapshot, Grid chartgridimage) 
    { 
     Telerik.Windows.Documents.Model.Section section = new Telerik.Windows.Documents.Model.Section(); 

     Telerik.Windows.Documents.Model.Paragraph paragraph = new Telerik.Windows.Documents.Model.Paragraph(); 

     Telerik.Windows.Documents.Model.Span span1; 

     using (MemoryStream ms = new MemoryStream()) 
     { 
      companysnapshot.Measure(new System.Windows.Size(double.PositiveInfinity, double.PositiveInfinity)); 
      int companywidth = (int)Math.Round(companysnapshot.ActualWidth); 
      int companyheight = (int)Math.Round(companysnapshot.ActualHeight); 
      companywidth = companywidth == 0 ? 1 : companywidth; 
      companyheight = companyheight == 0 ? 1 : companyheight; 
      RenderTargetBitmap rtbmp = new RenderTargetBitmap(companywidth, companyheight, 96d, 96d, PixelFormats.Default); 
      rtbmp.Render(companysnapshot); 
      BmpBitmapEncoder encoder = new BmpBitmapEncoder(); 
      encoder.Frames.Add(BitmapFrame.Create(rtbmp)); 
      FileStream fs1 = File.Create(@"C:\Users\Admin\Desktop\Chart12xx.bmp"); 
      encoder.Save(fs1); 
      fs1.Close(); 
     // this.ExportPNGToImage(chart, ms); 

      paragraph.LeftIndent = 0; 
      paragraph.RightIndent = 0.0; 
      FileStream ss = File.Open(@"C:\Users\Admin\Desktop\Chart12xx.bmp", FileMode.Open); 
      ImageInline image = new ImageInline(ss, new Size(companywidth, companyheight), "bmp"); 
      paragraph.FlowDirection = FlowDirection.LeftToRight; 
      paragraph.Inlines.Add(image); 
      ss.Close(); 
      //Span spacespan = new Span(" "); 
      //paragraph.Inlines.Add(spacespan); 
     } 

     try 
     { 
      section1.Blocks.Add(paragraph); 
      document.Sections.Add(section1); 
     } 
     catch (Exception) 
     { 
     } 

     // paragraph.Inlines.Add(new Span(FormattingSymbolLayoutBox.LINE_BREAK)); 

    } 

답변

0

문제가 해결된다 .. :

private void PrepareDocument(RadDocument document) 
    { 
     document.SectionDefaultPageOrientation = PageOrientation.Landscape; 
     document.LayoutMode = DocumentLayoutMode.Paged; 
     document.Measure(RadDocument.MAX_DOCUMENT_SIZE); 
     document.Arrange(new RectangleF(PointF.Empty, document.DesiredSize)); 
    } 

차트 문서 부분.