2017-11-28 23 views
0

보고서의 바닥 글 크기를 다르게 지정할 수 있는지 알고 싶습니다. 내가 하위 보고서를 사용하여 시도했다RDLC 동적 바닥 글 크기

  • 첫 페이지는 0.75를 "
  • 다른 페이지는 1.25가 바닥 글"바닥 글

하지만 슬프게도 헤더 :

는 내가 달성하고자하는 것은 다음과 같다 하위 보고서의 & 푸터가 표시되지 않고 RDLC의 디자인 제한이라는 사실을 알게되었습니다.

어떻게하면됩니까? TIA.

답변

0

RDLC를 사용하여이 문제에 대한 해결책을 찾을 수 없습니다. 이 기술에 대한 문서에서 특정 페이지의 머리글/바닥 글을 숨기고있는 경우에도 머리글과 바닥 글에 사용되는 공간이 모든 페이지에 예약되며 하위 보고서는 주 보고서의 머리글과 바닥 글 만 사용한다고 명시되어 있습니다. 또한 RDLC가 내 경험에 기반한 Crystal Reports와 비교하여 디자인에 대한 제어력이 적다는 기사를 읽었습니다.

이 두 가지 PDF 파일을 빌드하고 iTextSharp를 사용하여 병합 한 마지막 옵션을 사용했습니다. 좋은 점은 iTextSharp가 PDF의 페이지 수를 얻는 기능을 가지고 있다는 것입니다. 여기

PdfReader pdfReader = new PdfReader(renderedBytes); 
// renderedBytes is the byte array generated by localReport.Render 

pageCount = pdfReader.NumberOfPages; 

내 코드의 일부입니다 :

int subreportPageCount = 0; 
double gpa = 0; 

byte[] subreportBytes = GenerateTranscriptOfRecordsSubreportPDF(unitOfWork, student, torType, out subreportPageCount, out gpa); 
byte[] mainBytes = GenerateTranscriptOfRecordsMainPDF(unitOfWork, student, torType, torPurpose, subreportBytes, subreportPageCount, gpa); 
byte[] renderedBytes = MergePDF(new List<byte[]>() { mainBytes, subreportBytes }); 

string reportFormat = Constant.REPORT_FORMAT_PDF; 
string fileExtension = GetReportFileExtension(reportFormat); 
string fileName = Constant.REPORT_TOR_FILENAME; 
string fileNameWithExtension = string.Format("{0}{1}", fileName, fileExtension); 
string mimeType = "application/pdf"; 
string fileNameExtension = "pdf"; 
string fileInfoName = string.Format("{0}.{1}", fileName, fileNameExtension); 

ReportFile reportFile = new ReportFile(); 
reportFile.Content = renderedBytes; 
reportFile.FileName = fileInfoName; 
reportFile.MimeType = mimeType; 

Session[Constant.SESSION_REPORT_FILE] = reportFile; 

MergePDF :

byte[] MergePDF(ICollection<byte[]> pdfs) 
{ 
    byte[] renderedBytes = null; 

    using (MemoryStream ms = new MemoryStream()) 
    { 
     Document document = new Document(); 
     PdfCopy pdf = new PdfCopy(document, ms); 
     PdfReader pdfReader = null; 

     try 
     { 
      document.Open(); 
      foreach (byte[] pdfBytes in pdfs) 
      { 
       pdfReader = new PdfReader(pdfBytes); 
       pdf.AddDocument(pdfReader); 
       pdfReader.Close(); 
      } 
     } 
     catch (Exception) 
     { 
      renderedBytes = null; 
     } 
     finally 
     { 
      if (pdfReader != null) 
      { 
       pdfReader.Close(); 
      } 
      if (document != null) 
      { 
       document.Close(); 
      } 
     } 

     renderedBytes = ms.ToArray(); 

     return renderedBytes; 
    } 
} 
I가 XML 및 DOC 파일을 생성 할 수 없습니다 때문에이 내 최후의 수단을 만들어

내 보고서를 처음부터 다시 작성하지 않으면보고하십시오. 다행히도 내 요구 사항은 단순히 PDF 파일을 생성하는 것입니다.

희망이 도움이됩니다.