본문 바로가기
프로그래밍/delphi

delphi QuickReport 출력을 이미지 파일로 변환하기

by 메르세데쓰 2015. 10. 13.
반응형

 

 

안녕하세요 메르세데스입니다.

 

델파이 유 경험자라면.. QuickReport하면 노가다중에 상 노가다 라는것을 잘 알고 계실 것입니다. 지금이야.. 생산성이 높은 리포트 컴포넌트들이 즐비하지만.. 예전에 만들어졌었던 퀵리포트폼이나 혹.. 개발중이신 것을 종이 용지로 출력 하는것이야 문제가 되지 않지만..  무슨 특별한 작업을 위해  이미지로 변환해야 한다면..  고민에 빠지게 됩니다.

 

물론 가상의 프린터방식을 통해서 종이출력이 아닌 JPG나 TIF, PDF 형식으로 뽑아내는것도 가능하긴 하지만..  

 

제일 가까운 예로는 한글을 설치하면 자동으로 깔리는 PDF드라이버가있죠... 

 

하지만... 무료로 제공하는 소프트웨어에는 제약사항이 많이 있습니다.    

 

 가령 예를 든다면..  인쇄시..  매번 파일이름을 정해줘야 한다던가..     해상도.. 생성되는 결과물의 크기와 같은것의 핸들링이 잘 안되기 때문에 ..  다 필요없고 팝업안뜨고 알아서 한꺼번에 저장되기만하면..  바랄게 없을텐데...ㅜㅜ

 

결국에는 LEAD TOOLS같은 기능이 많은 상용컴포넌트쪽에 손이 가는일은 당연한 일이 됩니다. 하지만 라이선스의 문제가 있으니 사업장에서 사용하실려면 정품구매가 필수입니다.

 

하지만.. 조금만 관심을 갖는다면 비록 QuickReport일 지라도 기본기능에 충실한 상태에서 JPG 같은 이미지를 생성할 수 있습니다.

 

구글에서 검색을 해보면.. 비트맵으로 생성하는 방법이 나옵니다..   하지만 경우에 따라 bitMap의 특성상 파일 사이즈의 문제를 해결해야하는 경우가 있습니다. 2가지를 해결해보도록 하겠습니다.

 

 

일단 델파이 폼의  uses절에 JPEG를 추가시켜주시고요..

 

아래처럼 작성해봤습니다.

 

TBitMpap , TJpegImage 타입의 변수를 선언하고.. 

 

퀵리포트의 출력대신..    Qrit.Prepare 문 이후에   TBitMap 타입으로 만든 bitMap변수에  Canvas.Draw( ....  ) 이런식으로 영역을 받아오고..    

 

비트맵 혹은 JEPG타입이기 때문에  SaveToFile('해당경로및이름');  이렇게 저장을 하면 되는것이죠!  순식간에 만들어집니다.

 

 

 

퀵리포트를 이미지로만들기
save bitmap to jpeg (delphi)

 

 

이렇게 만들어진 BMP형식의 그림은 생각보다 용량이 크기때문에    JPEG-TYPE으로 형변환? 을 시켜 저장하는 것입니다.

 

vJpg.Assign(bitMap)  이렇게 코딩하면 됩니다.

 

만들어진 두 file의 사이즈를 비교해보면..    3.4MB와..  129KB로 확연한 차이가 나타납니다.     

 

첫번째 만들어진  aaab.jpg는 실제 BMP파일 입니다.    

 

 

비트맵은 사이즈가 매우크다
explorer maked jpg file

 

소스상에서 jpg로 변환이 가능하며 사이즈 대폭감소
explorer maked jpg file

 

생각보다 수고를 안들이고 쉽게 변환이 가능합니다. 결과물의 화질도 살펴보면..  나쁘지 않습니다.

 

그리고 좋은점은.. 제공하는 여러 함수나 프로시저를 이용해서 크기나 퀄리티등을 상황에 맞게 손 볼 수 있고..   저장시 SaveToStream처럼.. 하드디스크상에 저장하지 않고 메모리상에 스크림으로 처리할 수 있습니다.  사실 결과물을  디스크의 file로 떨어뜨리는게 나쁜방식은 아니지만, 작업시 하드디스크IO가 분명 발생하게 됩니다.비교적 단순하고 간단한 작업이라면 큰 문제가되지 않겠지만.. 다량의 반복 적인 작업엔 하드디스크의 성능이 따라 결과가 달라지겠죠....  반대로 메모리가 넉넉치 않다면 이로인한 문제가 발생될 수 있습니다. 상황에 맞는 사용이 필요합니다.  

 

아무튼 상황에 맞게 유연하게 처리가 가능하다는 것입니다.

 

상용컴포넌트 없이도 그리고 출력용 드라이버가 없어도 간단하게 소스몇줄이면 QuickReport가 imagefile로 변환이 가능하니 유용한 팁이 될 거라 생각합니다. 감사합니다.

 

 

 

참조: http://www.delphigroups.info/2/7/359610.html

 

 

 

반응형

댓글