2014-10-08 3 views
1

저는 Delphi XE3을 사용하여 Windows 서비스를 작성하고 있습니다. 이 서비스는 데이터베이스에서 읽으며 quickreport 5.05.1을 사용하여 pdf를 생성합니다. TQRPDFDocumentFilter를 사용하여 pdf를 생성 할 계획입니다.Delphi의 Windows 서비스에서 QuickReport를 사용하여 PDF를 생성하십시오.

모든 것이 정상적인 VCL 응용 프로그램에서 정상적으로 작동하지만 Windows 서비스에서 구현할 때 QuickRep.Prepare를 수행하면 서비스가 중단됩니다 (예외없이).

나는 Windows 서비스에서 QuickReport를 사용할 수 있다는 것을 읽었지만 어떻게해야할지 모르겠다. 어떤 제안?

는 어디 코드입니다 :

procedure foo 
var 
pdfFilter: TQRPDFDocumentFilter; 
begin 
    with TForm2.Create(Self) do 
    begin 
    ClientDataSet1.Open; 
    QuickRep1.Prepare; 
    pdfFilter := TQRPDFDocumentFilter.Create(GetApplicationFolder() + 'test.pdf'); 
    try 
     QuickRep1.QRPrinter.ExportToFilter(pdfFilter); 
    finally 
     pdfFilter.Free; 
     ClientDataSet1.Close; 
    end; 
    end; 
end; 

편집 : 다른 스레드에서 제안 나는 또한 퀵 리포트에 "쇼의 진행 상황을"해제 시도 . 예외를 잡기 위해 일부 코드를 작성하면 실제로 예외가 있음을 알 수 있습니다. 메시지는 "현재 선택된 기본 프린터가 없습니다"입니다. 그러면 서비스가 실행중인 로컬 시스템 사용자에게 프린터가 설치되어 있지 않고 이것이 문제가된다고 생각됩니다.

+1

[델파이 웹 서버의 빠른 보고서로 PDF 생성하기] (http://stackoverflow.com/questions/401743/generating-pdf-with-quick-reports-behind-a-delphi-web-server) – bummi

+0

Do 당신은 파일에 쓸 수 있도록 corect 권한으로 서비스를 시작합니까? Windows XP에서는 문제가 아니지만 Windows Vista 이상에서는 서비스가 시작되는 여러 권한 프로필이 있습니다. 각 서비스에서 수행 할 수있는 작업을 제한하여 보안을 강화하기 위해 구현되었습니다. – SilverWarior

+0

Bummi : 나는 이미 그 스레드를 읽었습니다. 그가 해결할 수 있었던 것처럼 보이지만 제공되는 정보는 방법에 대한 단서를 제공하지 않습니다. –

답변

1

나는이 단계 (Windows 서비스로 실행하는 자바 서버에서 공유 네트워크 프린터로 인쇄) 비슷한 문제를 해결 한 :

  • 로그에서 서비스를 실행할 사용자로
  • 프린터를 설치하십시오. 델파이 응용 프로그램과 함께

IIRC를 사용할 경우 프린터 이름은 대소 문자를 구분하지 않습니다 (Java의 경우).

+0

내 서비스가 기본 "로컬 시스템 계정"대신 로컬 사용자 계정에서 실행되도록 변경했습니다. 로컬 계정에 프린터가 설치되어 있는지 확인하십시오. 나는 아무것도 인쇄하려고하지는 않지만 QuickReport 필요/프린터 anywhay에 대한 검사 같은 경우에만 PDF로 보고서를 변환하는 경우에도 보인다. 지금 PDF를 생성 할 수있었습니다. 도와 주셔서 감사합니다. –

+0

Quickreport에 캔버스로 렌더링 할 프린터가 필요합니까? –

관련 문제