사용자 지정 애플리케이션에서 RSClientPrint 컨트롤 사용

Microsoft ActiveX 컨트롤인 RSPrintClient는 HTML 뷰어에 표시되는 보고서에 대한 클라이언트 쪽 인쇄 기능을 제공합니다. 사용자가 인쇄 작업을 시작하고, 보고서를 미리 보고, 인쇄할 페이지를 지정하고, 여백을 변경할 수 있도록 인쇄 대화 상자를 제공합니다. 클라이언트 쪽 인쇄 작업 과정에서 보고서 서버는 이미지(EMF) 렌더링 확장 프로그램으로 보고서를 렌더링하고 운영 체제의 인쇄 기능으로 인쇄 작업을 만들어 프린터에 보냅니다.

클라이언트 쪽 인쇄는 사용자의 컴퓨터에서 브라우저 인쇄 설정을 단계별로 실행하고 대신 보고서의 페이지 크기, 여백, 머리글 및 바닥글 텍스트를 사용하여 인쇄 출력을 만들어 HTML 보고서의 인쇄물을 제어하고 개선하는 방법을 제공합니다. 인쇄 컨트롤은 보고서의 속성 값을 읽어 페이지 크기와 여백 설정을 지정합니다.

타사 도구 모음 또는 뷰어에서 클라이언트 쪽 인쇄 기능을 사용하도록 설정하려는 개발자는 RSClientPrint COM 개체를 통해 ActiveX 컨트롤에 액세스할 수 있습니다. 컨트롤을 자유롭게 배포할 수 있습니다. 다음 목록에서는 컨트롤 사용에 대한 권장 사항을 제공합니다.

  • 컨트롤을 사용하여 웹 기반 보고서의 인쇄 품질을 향상시킬 수 있습니다. Microsoft .NET Framework 호환 프로그래밍 언어나 스크립트에서 개체를 지정할 수 있습니다. Windows Forms 애플리케이션에서는 컨트롤을 사용할 수 없습니다.

  • Reporting Services 프로그램 파일에서 .cab 파일을 복사하여 사용자 지정 애플리케이션 코드베이스에 추가합니다.

  • <OBJECT> 태그를 사용하여 컨트롤을 지정합니다.

  • OBJECT CODEBASE 특성에서 .cab 파일에 대한 상대 또는 정규화된 URL을 지정합니다.

  • .cab 파일에 대한 사용자 고유의 애플리케이션 버전 정보를 지정하여 애플리케이션에서 사용되는 버전을 추적합니다.

RSPrintClient 개요

이 컨트롤은 특정 페이지와 범위, 페이지 여백 및 방향을 지정하는 페이지 선택 기능, 인쇄 미리 보기 기능을 비롯하여 다른 인쇄 대화 상자에 공통적인 기능을 지원하는 사용자 지정 인쇄 대화 상자를 표시합니다. 컨트롤은 CAB 파일로 패키지됩니다. 인쇄 대화 상자의 텍스트는 SQL Server에서 지원하는 모든 언어로 지역화됩니다. RSPrintClient ActiveX 컨트롤은 EMF(이미지 렌더링 확장 프로그램)를 사용하여 보고서를 인쇄합니다. 다음 EMF 디바이스 정보가 사용됩니다. StartPage, EndPage, MarginBottom, MarginLeft, MarginTop, MarginRight, PageHeight 및 PageWidth. 이미지 렌더링에 대한 다른 디바이스 정보 설정은 지원되지 않습니다.

언어 지원

인쇄 컨트롤은 다양한 언어로 사용자 인터페이스 텍스트를 제공하고 다른 측정 시스템으로 보정된 입력 값을 허용합니다. 사용되는 언어와 단위는 CultureUICulture 속성에 의해 결정됩니다. 두 속성 모두 LCID 값을 허용합니다. 지원되는 언어의 변형 언어에 대한 LCID를 지정하는 경우 이에 가장 근접한 언어가 사용됩니다. 지원되지 않는 LCID를 지정하는 경우 이와 근접한 LCID가 없으면 영어(미국)가 사용됩니다.

코드에서 RSClientPrint 사용

RSClientPrint 개체는 ActiveX 컨트롤과 해당 메서드 및 속성에 프로그래밍 방식으로 액세스하는 데 사용됩니다. 컨트롤은 인쇄 미리 보기에 대한 모달 대화 상자를 제공합니다.

기본값 지정

보고서의 여백 및 페이지 값을 사용하여 인쇄 대화 상자를 초기화할 수 있습니다. 기본적으로 인쇄 대화 상자는 보고서 정의의 값으로 초기화됩니다. 기본값을 사용하거나 개체의 속성을 설정하여 다른 값을 지정할 수 있습니다.

모든 치수는 밀리미터 단위로 설정됩니다. 문화권UICulture메트릭 측정을 사용하지 않는 로캘로 설정된 경우 런타임에 측정값 변환이 발생합니다.

페이지 크기와 여백에 사용되는 값을 확인하려면 GetProperties 메서드를 사용하여 기본값을 검색합니다.

  • PageHeightPageWidth 는 기본 페이지 높이와 너비를 지정합니다. 인쇄 컨트롤이 시작되면 이러한 속성 값을 사용하여 현재 선택한 프린터에 사용할 수 있는 가장 가까운 용지 크기를 선택합니다. PageWidth가 PageHeight보다 좋은 경우 방향은 가로로 설정됩니다. 그렇지 않으면 세로로 설정됩니다.

  • LeftMargin, RightMargin, TopMarginBottomMargin 은 기본적으로 모두 12.2mm로 설정됩니다.

이러한 속성은 보고서 서버의 Item 속성 컬렉션에 저장됩니다. 보고서 정의가 업데이트 될 때마다 값을 덮어씁니다.

RSClientPrint 속성

속성 Type RW 기본값 설명
MarginLeft 두 배 RW 보고서 설정 왼쪽 여백을 가져오거나 설정합니다. 개발자가 설정하지 않았거나 보고서에 지정되지 않은 경우 기본값은 12.2밀리미터입니다.
MarginRight 두 배 RW 보고서 설정 오른쪽 여백을 가져오거나 설정합니다. 개발자가 설정하지 않았거나 보고서에 지정되지 않은 경우 기본값은 12.2밀리미터입니다.
MarginTop 두 배 RW 보고서 설정 위쪽 여백을 가져오거나 설정합니다. 개발자가 설정하지 않았거나 보고서에 지정되지 않은 경우 기본값은 12.2밀리미터입니다.
MarginBottom 두 배 RW 보고서 설정 아래쪽 여백을 가져오거나 설정합니다. 개발자가 설정하지 않았거나 보고서에 지정되지 않은 경우 기본값은 12.2밀리미터입니다.
PageWidth 두 배 RW 보고서 설정 페이지 너비를 가져오거나 설정합니다. 개발자 또는 보고서 정의에서 설정하지 않은 경우 기본값은 215.9mm입니다.
PageHeight 두 배 RW 보고서 설정 페이지 높이를 가져오거나 설정합니다. 개발자가 설정하지 않았거나 보고서 정의에 지정되지 않은 경우 기본값은 279.4밀리미터입니다.
문화권 Int32 RW 브라우저 로캘 로캘 식별자(LCID)를 지정합니다. 이 값은 사용자 입력에 대한 측정 단위를 결정합니다. 예를 들어 사용자가 3을 입력하면 언어가 프랑스어인 경우 밀리미터 단위로 측정되고, 언어가 영어(미국)인 경우 인치로 측정됩니다. 유효한 값은 1028, 1031, 1033, 1036, 1040, 1041, 1042, 2052, 3082와 같습니다.
UICulture 문자열 RW 클라이언트 문화권 대화 상자의 문자열 지역화를 지정합니다. 인쇄 대화 상자의 텍스트는 중국어-간체, 중국어 번체, 영어, 프랑스어, 독일어, 이탈리아어, 일본어, 한국어 및 스페인어로 지역화됩니다. 유효한 값은 1028, 1031, 1033, 1036, 1040, 1041, 1042, 2052, 3082와 같습니다.
인증 부울 RW False 컨트롤이 보고서 서버에 대해 GET 명령을 실행하여 세션 외 인쇄에 대한 연결을 시작할지 여부를 지정합니다.

Authenticate 속성을 설정하는 경우

브라우저 세션 내에서 인쇄할 때 Authenticate 속성을 설정할 필요가 없습니다. 활성 세션의 컨텍스트 내에서 인쇄 컨트롤에서 보고서 서버로의 모든 요청은 브라우저를 통해 처리됩니다. 브라우저는 보고서 서버와 통신하는 데 필요한 세션 변수를 설정합니다.

보고서를 먼저 열어 보지 않고 직접 프린터로 보내는 것처럼 사용 가능하지 않은 세션을 인쇄하는 경우 인쇄 컨트롤은 HTTP GET 요청을 실행하여 보고서 서버에 세션을 설정해야 합니다. GET 요청을 실행하려면 인증True설정합니다.

Windows 통합 보안 또는 기본 인증을 사용하는 경우에만 GET 요청을 실행합니다. 폼 인증을 사용하는 경우 Authenticate 속성이 무시됩니다. 애플리케이션 코드에서 세션을 설정하고 제공한 사용자 지정 보안 확장 프로그램을 사용하여 사용자를 인증해야 합니다. 폼 인증을 사용하는 경우 인증 쿠키에 대한 만료 값을 적절한 간격으로 세션을 유지하는 값으로 설정합니다. 값이 너무 낮으면 쿠키가 만료될 때마다 로그온 자격 증명을 입력하라는 메시지가 표시됩니다.

Clsid

온-프레미스에서 보고서를 실행하는 경우 다음 CLSID 값을 사용합니다.

  • 41861299-EAB2-4DCC-986C-802AE12AC499

  • 5554DCB0-700B-498D-9B58-4E40E5814405

  • 60677965-AB8B-464f-9B04-4BA871A2F17F

Azure SQL Reporting에서 보고서를 실행하는 경우 다음 CLSID 값을 사용합니다.

  • 3DD32426-554D-48C0-A200-65D3BF880E38

  • 05662494-ACF9-446A-BE4C-7D3F7EA7F62F

Print 메서드에 대한 RSPrintClient 지원

RSClientPrint 개체는 인쇄 대화 상자를 시작하는 데 사용되는 Print 메서드를 지원 합니다. Print 메서드에는 다음과 같은 인수가 있습니다.

인수 I/O Type 설명
ServerPath In 문자열 보고서 서버 가상 디렉터리를 지정합니다(예: https://adventure-works/reportserver).
ReportPathParameters In 문자열 매개 변수를 포함하여 보고서 서버 폴더 네임스페이스의 보고서에 대한 전체 이름을 지정합니다. 보고서는 URL 액세스를 통해 검색됩니다. 예: "/AdventureWorks 샘플 보고서/직원 판매 요약&EmpID=1234"
ReportName In 문자열 보고서의 짧은 이름입니다(위 예제에서 짧은 이름은 Employee Sales Summary임). 인쇄 대화 상자와 인쇄 큐에 표시됩니다.

예시

다음 HTML 예제에서는 JavaScript에서 .cab 파일, Print 메서드 및 속성을 지정하는 방법을 보여줍니다.

<BODY onload="Print()">

<OBJECT ID="RSClientPrint" CLASSID="CLSID: 5554DCB0-700B-498D-9B58-4E40E5814405D3" CODEBASE="<URL to the .CAB file>#Version=<your application version information>" VIEWASTEXT></OBJECT>

<script language="javascript">

function Print()

{

RSClientPrint.MarginLeft = 12.7;

RSClientPrint.MarginTop = 12.7;

RSClientPrint.MarginRight = 12.7;

RSClientPrint.MarginBottom = 12.7;

RSClientPrint.Culture = 1033;

RSClientPrint.UICulture = 9;

RSClientPrint.Print('https://localhost/rtm', '%2fEmployee_Sales_Summary&ReportMonth=6&ReportYear=2004&EmpID=20', 'Employee_Sales_Summary')

}

</script>

</BODY>

참고 항목

인쇄 컨트롤을 사용하여 브라우저에서 보고서 인쇄(보고서 작성기 및 SSRS)
보고서 인쇄(보고서 작성기 및 SSRS)
이미지 디바이스 정보 설정