TsgcHTMLReport
PDF로 출력하는 밴드형 보고서
뷰어 뒤에 있는 엔진은 독립된 비시각 컴포넌트입니다. sgcHTML의 PDF 엔진인 TsgcHTMLExportPDF로 PDF를 기록하며, 같은 보고서를 Excel 시트로도 기록할 수 있습니다.
밴드
보고서 머리글, 페이지 머리글, 머리글과 바닥글이 있는 중첩 그룹, 세부 행, 페이지 바닥글, 보고서 바닥글을 지원합니다. 그룹 머리글은 새 페이지마다 반복할 수 있고, KeepTogether는 그룹을 한 페이지에 유지하며, NewPageBefore와 NewPageAfter는 페이지를 나누고, NewPageAfter가 있는 보고서 머리글은 표지가 됩니다.
항목
밴드에는 텍스트, 이미지, 선, 사각형, 차트, 서식 있는 텍스트, 바코드, QR 코드, 하위 보고서를 넣을 수 있습니다. 텍스트는 상자에 맞게 잘리고, AutoHeight가 있는 항목은 줄바꿈된 텍스트에 맞게 밴드를 늘립니다.
식과 PrintIf
텍스트에는 [ ] 사이의 식을 넣을 수 있습니다. [Amount:#,##0.00]처럼 마스크가 있는 필드, [Sum(Field)], [Count], [Avg(Field)], [Min(Field)], [Max(Field)], [RunningSum(Field)], [Page] / [Pages], [Param.Name], [GroupValue]가 있습니다. 밴드와 항목은 Amount > 1000처럼 PrintIf 조건이 참일 때만 출력됩니다.
데이터 소스
행은 DataSet, Grid, RowsJSON의 JSON 배열 또는 OnGetRow 이벤트에서 가져옵니다. LoadFromGrid는 TsgcHTMLComponent_Grid의 열로 표 보고서를 만들며, 모든 페이지의 제목, 줄무늬 행, 숫자 열의 합계, 페이지 번호가 포함됩니다.
차트, 바코드, QR 코드
차트 항목은 밴드의 행을 벡터 그래픽으로 그립니다. 막대, 가로 막대, 누적 막대, 선, 영역, 원형, 도넛형이 있으며 그룹 밴드에서는 그룹마다 차트 하나를 그립니다. ChartSource는 TsgcHTMLComponent_Chart를 웹 페이지에 표시되는 모습 그대로 출력합니다. 바코드 항목은 Code 128을 그리고, QR 코드 항목은 오류 정정 수준 M을 사용합니다.
하위 보고서와 서식 있는 텍스트
하위 보고서 항목은 밴드 안에 다른 보고서, 예를 들어 주문의 품목을 출력하며, LinkFields로 마스터 행에 연결되고 최대 5단계까지 중첩되며 다음 페이지에서 이어집니다. 서식 있는 텍스트 항목은 HTML을 출력하고, AutoHeight가 있으면 페이지 머리글 뒤에서 여러 페이지에 걸쳐 흐릅니다.
글꼴과 언어
항목은 기본적으로 Windows-1252 문자를 담는 Base-14 글꼴로 출력됩니다. 키릴 문자, 그리스 문자, 아랍 문자, 히브리 문자, 중국어, 일본어, 한국어 또는 기호를 출력하려면 Fonts에 TrueType 글꼴을 등록하십시오. 출력된 글리프만 포함되며, FallbackFonts와 AutoFallback이 글꼴에 없는 문자를 대신합니다.
어디서나 같은 출력
숫자와 날짜는 컴퓨터의 지역 설정이 아니라 보고서의 DecimalSeparator, ThousandSeparator, DateFormat, TimeFormat으로 출력되므로, 보고서는 모든 컴퓨터와 .NET에서 똑같이 출력됩니다. CreationDate를 고정하면 같은 입력이 같은 PDF 바이트를 만듭니다.
JSON으로 보는 정의
SaveToJSON은 페이지 설정, 글꼴, 밴드, 항목, 매개변수를 기록하고, LoadFromJSON은 전체 정의를 검증한 뒤 오류의 JSON 경로와 함께 다시 읽습니다. 사용자는 Report Designer로 브라우저에서 보고서를 디자인하며, 보고서를 더블 클릭하면 Delphi IDE에서 같은 디자이너가 열립니다.
보고서 하나, 요청 여러 개
Generate, SaveToFile, SaveToStream, GetPDFBytes, ExportToXLSX, HasData는 각각 행과 레이아웃의 자체 사본을 만듭니다. 보고서 하나가 웹 서버의 여러 요청을 동시에 처리하며 각 요청은 자신의 매개변수로 필터링되고, 사용자 고유의 잠금은 필요 없습니다.