2017-11-28 7 views
0

レポートのフッターのサイズを変更することができますか。私は、サブレポートを使用してみましたRDLC動的フッターのサイズ

  • 最初のページには0.75" を持っている
  • 他のページには1.25" を持っているフッターフッター

しかし悲しいことに、ヘッダ:

は何を達成したいことは以下のとおりです。サブレポートの&フッターが表示されず、RDLCの設計上の制限であることがわかりました。

どうすればこの問題を解決できますか? TIA。

答えて

0

RDLCを使用してこの問題の解決策を見つけることができませんでした。このテクノロジのドキュメントでは、特定のページのヘッダー/フッターを非表示にしていても、ヘッダーとフッターの両方の領域が予約されており、サブレポートはメインレポートのヘッダーとフッターのみを使用します。私はまた、私の経験に基づいたCrystal Reportsと比較してRDLCのデザインに対するコントロールが少ないという記事を読んでいます。

これで、最後の2つの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; 
    } 
} 

私は私のためのXMLやDOCファイルを生成することができませんので、私は私の最後の本を作りました私が最初からそれらを再構築しない限り、報告してください。幸いにも私の要件は、単にPDFファイルを生成することです。

このヘルプが必要です。

関連する問題