2014-06-18 4 views
0

사용자가 Sharp PDF를 사용하여 간트 차트를 저장/볼 수있게하려는 경우, 사용자가 이미지가 압축되어 읽을 수없는 행을 너무 많이 선택하면 문제가 발생합니다. 여러 페이지에 걸쳐 이미지를 늘리거나 설정할 수 있습니까?PDF Sharp, 여러 페이지에 걸쳐 이미지 스트레칭

그래서 두 이미지를 결합하여 pdf 페이지로 출력하면 페이지 너비를 더 높게 설정하려고 시도했지만이 작업은 수행되지 않았습니다.

Bitmap bitmap = new Bitmap(image.Width + imageTest.Width, Math.Max(image.Height, imageTest.Height)); 
     using (Graphics combineG = Graphics.FromImage(bitmap)) 
     { 
      combineG.DrawImage(imageTest, 0, 0); 
      combineG.DrawImage(image, imageTest.Width, 0); 
     } 

     //convert to pdf 
     PdfDocument document = new PdfDocument(); 
     document.Info.Title = "Holiday_Year " + year + "&Quarter " + quarter; 

     PdfPage page = document.AddPage(); 
     page.Orientation = PdfSharp.PageOrientation.Landscape; 
     XGraphics gfx = XGraphics.FromPdfPage(page); 
     XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic); 

     gfx.DrawImage(bitmap, new XRect(0, 100, page.Width, 100)); 

     gfx.DrawString("Holiday - Quarter " + quarter + " & Year " + year, font, XBrushes.Black, new XRect(0, 0, page.Width, 40), XStringFormats.Center); 


     byte[] fileContents = null; 
     MemoryStream memoryStream = new MemoryStream(); 

     document.Save(memoryStream, true); 
     fileContents = memoryStream.ToArray(); 

     memoryStream.Close(); 
     Response.Clear(); 
     Response.ContentType = "application/force-download"; 
     Response.AddHeader("content-disposition", "attachment; filename=IEMS-Holiday.pdf"); 
     Response.BinaryWrite(fileContents); 
     Response.End(); 
+0

pdfsharp를 사용하여이 작업을 수행하는 방법을 모르겠지만 iTextSharp를 사용하면 많은 페이지 크기를 사용할 수 있습니다. 나는 그것이 당신이 문제를 해결하는 데 도움이 될 것이라고 생각합니다. –

+0

감사합니다. iTextSharp를 살펴 보겠습니다. – Nixdorf

+0

이 링크를 클릭하면 도움이 될 것입니다. http://www.codeproject.com/Articles/686994/Create-Read-Advance-PDF-Report-using-iTextSharp-in –

답변

0

제가이 문제를 해결했다고 생각합니다.이 코드에서 이미지 높이를 확인한 다음 정확한 페이지 크기로 출력합니다.

PdfPage page = document.AddPage(); 
     if (image.Height > 1000) 
     { 
      page.Size = PageSize.A1; 
     } 
     else 
     { 
      page.Size = PageSize.A2; 
     } 

가 등등 A1 페이지에 큰 이미지를 넣어 이러한 방법으로, 다음 내가 어도비가 페이지를 인쇄하는 방법을 알아 보자,보기 및

+1

큰 빈 영역이있는 페이지로 이어질 수 있습니까? 사용자 정의 페이지 크기는 큰 빈 영역을 줄입니다. –

+0

좋아, 그래서 당신은 내가 그 이미지의 높이와 너비가 그 치수를 가진 사용자 정의 페이지를 만드는 제안, 난 그 생각하지 않았다. 그것의 좋은 생각 나는 그것을 줄 것이다. – Nixdorf

1

이 질문에 대답하기 인쇄에서 잘 작동하는 것 같다 : PDFsharp 이미지가 여러 페이지로 퍼질 수있는 내장 기능이 없습니다.

이미지를 여러 위치에 여러 페이지로 그릴 수 있으며 이미지의 다른 부분을 표시 할 수 있습니다. 인쇄 후에는이 페이지들을 함께 꿰맬 수 있습니다. 이미지는 PDF 파일에 한 번만 포함됩니다.

PDFsharp는 사용자 정의 페이지 크기를 지원합니다.

0

숫자를 올바르게 가져 오는데 조금 시간이 걸렸지 만, 여기에 내가 가진 것은 하나의 이미지를 필요로하는 것처럼 보입니다. 필요로하는 한 오래 걸리며 작은 덩어리로 자르고 각 덩어리를 스스로 배치합니다. 페이지. 물론 너는 너의 일을 얼마나 하느냐에 따라 너비를 조정할 필요가있을 것이지만, 다시 말해서 그 숫자를 가지고 노는 것 뿐이다.

  PdfDocument doc = new PdfDocument(); 
      XImage img = XImage.FromFile(ImgPath); 

      double captureHeight = 610; 
      double captureWidth = 790; 
      double totalHeight = img.PixelHeight/1.5; 
      double totalWidth = img.PixelWidth; 

      PdfPage page = null; 
      int i = 0; 
      double saveHeight = 0; 
      while (saveHeight < totalHeight) 
      { 
       page = new PdfPage(); 
       page.Size = PdfSharp.PageSize.Letter; 
       page.Orientation = PdfSharp.PageOrientation.Landscape; 
       doc.Pages.Add(page); 

       XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[i]); 
       xgr.DrawImage(img, 0, (-i * captureHeight), captureWidth, totalHeight); 
       saveHeight += captureHeight; 
       i++; 
      } 

      doc.Save(PdfPath); 
      doc.Close(); 
관련 문제