크리스탈 리포트 프린터 용지 공급 설정하기 방법

크리스탈 리포트에서 프린터 용지 공급을 설정하는 방법은 두 가지입니다. PaperSource와 CustomPaperSource가 바로 그것입니다. 보통 용지 공급 설정이 제대로 안 될 때, 페이퍼소스 부분만 계속 제어를 시도해보고, 그럼에도 설정이 안 되는 프린터가 있을 때에는 해결 방법에 대해 고민을 많이 했었습니다. 이때에는 프로그램을 이용하여 크리스탈 리포트 프린터 설정을 강제로 해보는 방법을 이용해 보곤 했습니다. 그런데 찾다 보니 커스텀페이퍼소스가 있었네요! 이 두 가지 클래스를 간단히 비교해 보겠습니다.

Crystal Reports PaperSource, CustomPaperSource

PaperSource

네임스페이스는 CrystalDecisions.Shared입니다. 프린터 용지 공급 설정 기본값은 Auto(7)입니다. 자동 선택한 용지함에서 출력이 되다보니 2~3단 용지 공급이 있는 경우에 예상하지 않은 곳에서 출력이 되는 문제가 있을 수 있습니다. 그런 경우에 페이퍼소스를 설정해 주세요.

//
// 요약:
//     PrintOptions 클래스의 PaperSource 속성에 용지 공급을 지정합니다.
[CLSCompliant(true)]
public enum PaperSource
{
    //
    // 요약:
    //     상단 용지함에서 인쇄합니다.
    Upper = 1,
    //
    // 요약:
    //     하단 용지함에서 인쇄합니다.
    Lower = 2,
    //
    // 요약:
    //     중간 용지함에서 인쇄합니다.
    Middle = 3,
    //
    // 요약:
    //     용지 수동 공급에서 인쇄합니다.
    Manual = 4,
    //
    // 요약:
    //     봉투함에서 인쇄합니다.
    Envelope = 5,
    //
    // 요약:
    //     봉투 수동 공급에서 인쇄합니다.
    EnvManual = 6,
    //
    // 요약:
    //     프린터가 자동 선택한 용지함에서 인쇄합니다.
    Auto = 7,
    //
    // 요약:
    //     트랙터 공급에서 인쇄합니다.
    Tractor = 8,
    //
    // 요약:
    //     소형 형식 용지함에서 인쇄합니다.
    SmallFmt = 9,
    //
    // 요약:
    //     대형 형식 용지함에서 인쇄합니다.
    LargeFmt = 10,
    //
    // 요약:
    //     대용량 용지함에서 인쇄합니다.
    LargeCapacity = 11,
    //
    // 요약:
    //     카세트 용지함에서 인쇄합니다.
    Cassette = 14,
    //
    // 요약:
    //     양식 용지함에서 인쇄합니다.
    FormSource = 15
}

CustomPaperSource

페이퍼소스에서 제어가 안 되는 경우 시도해볼 수 있는 선택입니다. 커스텀페이퍼소스의 네임스페이스는 System.Drawing.Printing입니다. 페이퍼소스가 enum인데 반해 커스텀페이퍼소스는 class입니다. 사용할 때에는 null 객체 가능성을 염두에 두세요. 커스텀페이퍼소스는 Kind, RawKind, SourceName으로 이루어져 있습니다. Kind는 용지 공급을 enum 형태로 가져오고, RawKind는 Kind 또는 사용자 지정 값을 정수 형태로 반환하거나 설정합니다. SourceName으로 용지공급 이름을 조회하거나 설정할 수 있습니다.

//
// 요약:
//     프린터에 용지를 공급할 용지함을 지정합니다.
public class PaperSource
{
    //
    // 요약:
    //     System.Drawing.Printing.PaperSource 클래스의 새 인스턴스를 초기화합니다.
    public PaperSource();

    //
    // 요약:
    //     용지 공급을 가져옵니다.
    //
    // 반환 값:
    //     System.Drawing.Printing.PaperSourceKind 값 중 하나입니다.
    public PaperSourceKind Kind { get; }
    //
    // 요약:
    //     System.Drawing.Printing.PaperSourceKind 값 중 하나나 사용자 지정 값을 나타내는 정수를 가져오거나 설정합니다.
    //
    // 반환 값:
    //     System.Drawing.Printing.PaperSourceKind 값 중 하나나 사용자 지정 값을 나타내는 정수 값입니다.
    public int RawKind { get; set; }
    //
    // 요약:
    //     용지 공급의 이름을 가져오거나 설정합니다.
    //
    // 반환 값:
    //     용지 공급의 이름입니다.
    public string SourceName { get; set; }

    //
    // 요약:
    //     System.Drawing.Printing.PaperSource에 대한 정보를 문자열 형식으로 제공합니다.
    //
    // 반환 값:
    //     문자열입니다.
    public override string ToString();
}

다음은 페이퍼소스카인드의 enumeration 값입니다.

//
// 요약:
//     표준 용지 공급입니다.
public enum PaperSourceKind
{
    //
    // 요약:
    //     프린터의 상단 저장소입니다(또는 프린터에 저장소가 하나만 있는 경우에는 기본 저장소).
    Upper = 1,
    //
    // 요약:
    //     프린터의 하단 저장소입니다.
    Lower = 2,
    //
    // 요약:
    //     프린터의 중간 저장소입니다.
    Middle = 3,
    //
    // 요약:
    //     용지가 수동으로 공급됩니다.
    Manual = 4,
    //
    // 요약:
    //     봉투입니다.
    Envelope = 5,
    //
    // 요약:
    //     봉투가 수동으로 공급됩니다.
    ManualFeed = 6,
    //
    // 요약:
    //     용지가 자동으로 공급됩니다.
    AutomaticFeed = 7,
    //
    // 요약:
    //     트랙터 공급입니다.
    TractorFeed = 8,
    //
    // 요약:
    //     소형 서식 용지입니다.
    SmallFormat = 9,
    //
    // 요약:
    //     대형 서식 용지입니다.
    LargeFormat = 10,
    //
    // 요약:
    //     프린터의 대용량 저장소입니다.
    LargeCapacity = 11,
    //
    // 요약:
    //     용지 카세트입니다.
    Cassette = 14,
    //
    // 요약:
    //     프린터의 기본 입력 저장소입니다.
    FormSource = 15,
    //
    // 요약:
    //     프린터 지정 용지 공급입니다.
    Custom = 257
}

댓글