2014년 7월 18일 금요일

RedMon과 Ghostscript


LPT1: 포트를 사용하는 프린터로 출력되는 내용을 파일로 저장하려면 어떻게 하면 될까?

일단 포트를 캡쳐하는 소프트웨어를 찾으니 PRINTFIL이라는 것이 있다. 설치를 비롯해서 자세한 사용법은 아래 링크에 있다. 일단 30일동안 평가용으로 사용하고 그 이후에는 구입해야 한다는 것이 맘에 안든다. 두번째는 Ghostscript와 연동이 된다고 되어 있는데 실제로는 안된다. 그래서 일단 PRINTFIL을 통해 파일로 저장된 것을 다른 툴을 이용해서 PDF로 만들어야 한다는 두단계의 스텝이 맘에 안든다.

PRINTFIL사용법 ... http://www.dol82.net/430

그래서 다시 검색을 하다보니 윈도우즈에서 가상PS프린터를 아래와 같이 만들어서 사용할 수 있다는 글을 발견했다.

Postscript → Virtual Postscript Printer → RedMon → Ghostscript → GS mswinpr2 device → Physical Printer

그런데 왜 이런 복잡한 걸 하는 걸까? 주된 이유는 Postscript파일을 인쇄하는 경우에 사용한다고 되어 있다. 하지만 근래에 Postscript파일을 직접 인쇄해야 하는 경우를 본적이 없으니 원래 목적대로는 사용할 필요가 없어 보이는 테크닉이다.

하지만 가만히 보면 RedMon을 사용해서 프린터 포트를 만든 후 이 포트로 인쇄되는 내용을 Ghostscript로 보낼 수 있다고 되어 있다. 이것이 바로 내가 찾던 것이다.


1. RedMon설치

RedMon ... 두가지를 하는데 첫번째는 LPT1:과 같은 프린터 포트를 만들어 준다. 두번째는, 그 포트에 연결된 프린터에 인쇄를 하면, 인쇄되는 내용을 다른 프로그램으로 연결해 주는 역할을 해 준다.

설치파일을 받아서 압축을 풀고 setup.exe를 실행시키면 설치가 끝났다는 메시지가 나온다.



메인프로그램이 어디 있나 찾아 보니 아무데도 안보인다. 이게 뭐지? 흠... 좀 더 자료를 살펴보니 이것은 프린터에 포트를 추가해 주는 것이였다.



그럼 다른 프로그램으로 출력을 전환하는 설정은 어디에서 하나? 바로 프린터의 포트설정에서 하면 된다.



첫번째 줄에는 C:\gs\gs9.14\bin\gswin32c.exe 를 지정하였다. 이것은 Ghostscript cmd버전이다.
두번째 줄에는 @C:\gs\mswinpr2.txt를 지정하였다. 이것은 Ghostscript의 Argument가 들어 있는 텍스트파일이다.

-Ic:\gs\gs9.14\lib
-sDEVICE=pdfwrite
-dNOPAUSE
-dBATCH
-sOutputFile=c:\gs\mswinpr3.pdf -

마지막에 "-"가 있는 것은 오타가 아니다. 이것은 표준출력을 받아들여 처리하라는 의미의 Ghostscript인수다. 여기서 RedMon이 표준출력을 한다는 것을 알 수 있다. 즉, 이 프린터로 인쇄하면 출력내용이 표준출력(stdout)으로 나오게 된다. 이것을 Ghostscript가 입력파일 대신 받아들여 처리하라는 인수이다.


2. Ghostscript 설치

Ghostscript... PostScript 내용을 읽어 들여서 PDF나 JPG파일로 만들어 준다. (Ghostscript사용법 ... How to use Ghostscript)

설치파일을 받아서 설치하면 된다. 설치 후 실행파일이 두개인 것을 발견했는데 하나는 윈도우용 실행파일이고 하나는 cmd용 실행파일이였다. 너무 간단...

하지만 Ghostscript의 인수가 많아서 사용법이 너무 복잡해 보인다. 그 중에서 내가 사용할 것은 PDF를 만들 때 사용하는 것으로 아래와 같다.

스위치효과
-dBATCH파일 변환후 GS>프람프트를 표시하지 않고 종료한다.
-dNOPAUSE페이지마다 멈추지 않고 계속 진행한다.
-sDEVICE출력형식을 지정한다.
예) -sDEVICE=pdfwrite
-sOutputFile결과물을 OutputFile로 저장한다.
예) -sOutputFile=out.pdf
- (대시)입력파일에 "-"를 지정한 경우 표준입력을 의미하고, 출력파일에 "-"를 지정한 경우 표준출력을 의미한다.
RedMon과 같은 프로그램에서 출력하는 내용을 고스트스크립트에서 입력처리 하는 경우 입력파일 이름에 "-"를 지정한다.
@위와 같은 Argument를 지정한 파일이름을 지정한다. 일부는 명령줄에서 입력하고 일부는 파일에서 지정하는 것이 가능하다.
예) C:\gs\mswinpr2.txt

아래 사용예의 첫번째는 Preview.ps파일을 out.pdf로 만드는 예이고, 두번째는 type에 의한 표준출력을 입력파일로 보고 out.pdf를 만드는 예이다. 둘 다 동일한 결과를 가져 온다.

C:\gs\>gswin32c.exe -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=out.pdf Preview.ps
C:\gs\>type Preview.ps | gswin32c.exe -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=out.pdf -


3. 인쇄 및 개선사항

두개를 연결해서 LPT1:과 같은 곳에만 출력이 가능한 인쇄물을 인쇄하는데 성공... 하지만 흑백으로 나온다.  컬러프린터 중 PS드라이버를 윈도우즈에서 기본적으로 제공하는 프린터는 그렇게 많지가 않다. 이것 저것 테스트 해 보니 가장 좋은 것은 아래 것.


이것도 기본 설정이 흑백이라서 Preference에서 Color를 선택해 주어야 했다.

2014년 7월 15일 화요일

이메일 발송 소프트웨어 EasyMail 6

G-Lock EasyMail은 이메일 발송 소프트웨어이다. 이 소프트웨어는 기본적으로 G-Lock Analytics서비스를 이용할때 제공되는 것이지만 이 소프퉤어 단독으로 작동하는데에도 문제가 없다.

무료용과 유료용이 있는데, 큰 차이는 무료용은 이메일 그룹을 하나만 만들 수 있다는 점이다. 무료용이라 하더라도 설치한 후 사용자 등록을 해야만 시리얼을 이메일로 받아서 작동하도록 되어 있다.

버전은  EasyMail 6와 EasyMail 7이 있는데 현재는 EasyMail 7만 홈페이지를 통해 다운로드 할 수 있다. EasyMail 7은 인터페이스가 Windows 8처럼 바뀌었고 아직 버그가 있어서 지금은 EasyMail 6을 사용하고 있다.

EasyEmail 6 다운로드 페이지

1. 소프트웨어를 설치한 후 먼저 해야 할 일은 보내는 사람의 정보를 입력하는 일이다. 아울러 이메일 전송 SMTP서버도 여기에서 지정한다.





2. 두번째는 이메일 그룹을  만들고 Import하는 일이다.
    먼저 이메일 그룹을 만든다.



이메일 리스트는 텍스트 파일로 저장한 후 CSV파일로 만들어 저장한다.
이메일 리스트를 Import할 때 아래 화면이 나오면 필드이름을 Email로 선택한다.
그 이외의 모든 사항은 기본 설정으로 Import한다,



3. 이메일을 작성하고 수신그룹이름을 지정해서 이메일을 보내거나 나중에 사용하기 위해 템플릿에 저장한다.



이때, 이메일 제목에 한글이 포함된 경우 인코딩옵션을 Korean(EUC-KR)로 지정해야 이메일을 받은 사람이 한글을 볼 수 있게 된다.

4. G-Lock Analytics 서비스(유료)로 이메일 트랙킹을 하려면 아래와 같이 트랙킹 코드를 입력한다. 첨부파일링크는 <A> 태그로 입력하고, 트랙킹코드는 </BODY>태그 바로 전에 추가한다.




2014년 7월 14일 월요일

이메일 트랙킹 시스템 G-Lock Analytics

이메일 트랙킹이란 이메일을 보내고 난 후 읽었는지의 여부를 체크해서 알려 주는 것을 말한다. 동일한 시스템을 사용하는 경우 시스템 자체의 기능을 이용해서 상대방이 메일을 읽었는지 읽지 않았는지를 간단하게 체크할 수 있다. 하지만 요즘처럼 gmail, hotmail등과 같은 인터넷 이메일시스템을 시작으로 해서 아웃룩, 노츠등 전통적인 이메일 시스템까지 많은 이메일 시스템이 존재하는 경우에 이메일 수신여부를 체크하는 것이 쉽지만은 않다.

이렇게 복잡한 이메일 시스템이 존재하는 상황에서 간단하게 이메일 수신여부를 체크할 수 있는 방법 중 하나가 이메일 본문에 이미지링크를 만들고 이 이미지가 열릴때 이미지를 갖고 있는 서버측에서 누가 이미지를 열었는지 기록하는 방법이다. 이런 방법을 사용하는 무료 이메일체킹 시스템이 많이 있다.

하지만 이메일을 100건 이상 한꺼번에 보내야 하는 경우, 또 이메일을 받는 측에서 트랙킹서비스 사용여부를 쉽게 알지 못하게 하려고 하다 보면 무료서비스를 사용하기는 힘들다.

아래는 유료 서비스중  G-Lock Analytics를 사용하는 방법이다.

1. 먼저 유료 서비스이기 때문에 유료로 서비스에 가입해야 한다.



가격은 월 199달러부터 25달러까지 있는데 이메일수신자 수에 따라 달라진다. 즉, 한번에 발송할 수 있는 이메일 전송량에 따라 달라지는데 정확히 표현하면 한번에 이메일 수신여부를 얼마나 체크할 수 있는지에 따라 달라진다. 가장 작은 월 25달러가 10,000건이므로 왠만하면 이 가격이면 될 것 같다.

2. 서비스에 가입한 후 할 일은 스크립트를 다운로드해서 회사의 웹서버에 올리는 일이다. 즉, 이메일안에 회사 웹서버에 있는 스크립트를 삽입하게 되는데, 이메일을 받은 사람이 이메일을 열거나 인쇄하게 되면 밑에 있는 트랙킹 코드가 실행되고 이 트랙킹 코드는 웹서버의 스크립트를 실행시키고 이 스크립트는 G-Lock Analytics에 연결되어서 이메일이 수신되었다고 알려 주는 것이다. 이렇게 해서 알 수 있는 정보에는 수신자의 위치(국가), 이메일 시스템 종류(Ourlook, Notes, Gmail등), 인터넷이메일인 경우 이메일을 연 브라우저 종류(IE, Firefox, Chrome, Safari등), 인쇄여부등이다.
즉, 이메일 수신 -> 트랙킹코드 실행 -> 웹서버스크립트 실행 -> G-Lock Analytics DB 기록순이다.

스크립트는 PHP, ASP, ASPX의 3종류이다.


  • PHP
    <?php header('Location: http://emltr.com/'.$_SERVER['QUERY_STRING'], true, 302);


  • ASP
    <%
    response.redirect "http://emltr.com/"& Request.ServerVariables("QUERY_STRING")
    %>
  • ASPX
    <%@ Page Language="C#" %>
    <script runat="server">
    private void Page_Load(object sender, System.EventArgs e)
    {
       Response.Status = "302 Moved Temporarily";
       string q = Request.Url.Query;
       string newq = (q.Length > 0 && q[0].Equals('?')) ? q.Substring(1) : q;
       Response.AddHeader("Location","http://emltr.com/"+newq);
    }
    </script>
3. 다음으로 할일은 캠페인을 만드는 일이다. 캠패인이란 이메일 수신결과를 한군데로 모으는 이메일 수신그룹과 같은 것이다.

  • 켐페인 이름
  • 이메일 수신자 수 : 총 수신자수를 입력한다. 나중에 몇 %가 수신되었는지 계산하기 위한 항목이다.
  • 반송된 이메일 수 : ?
  • 이메일 머지필드 : %%Encoded_Email_Analytics%% (G-Lock EasyMail을 사용하는 경우)이메일을 전송할때 이메일안에 있는 이 필드가 이메일 수신자의 이메일주소를 encrypt한 것으로 대체된다.
  • 스크립트 경로 : 회사웹서버에 올린 스크립트의 경로

4. 이메일 트랙킹 코드는 이메일 본문 맨끝에 추가해 넣어서 이메일을 수신하거나 인쇄할때 실행되는 CSS코드이다.



웹서버 스크립트가 http://www.myweb.co.kr/email/r.php인 경우 크랙킹 코드는 아래와 같다.
<style media="print">.trkimg { background-image: url('http://www.myweb.co.kr/email/r.php?p/163e/%%Encoded_Email_Analytics%%');}</style><style media="screen">.trkimg { background: transparent;}@media print { .trkimg { background-image: url('http://www.myweb.co.kr/email/r.php?p/163e/%%Encoded_Email_Analytics%%');} }div.OutlookMessageHeader .trkimg,.gmail_quote .trkimg,#MailContainerBody .trkimg,table.moz-email-headers-table,blockquote .trkimg {background-image:url('http://www.myweb.co.kr/email/r.php?f/163e/%%Encoded_Email_Analytics%%');}</style><div class="trkimg"></div><img src="http://www.myweb.co.kr/email/r.php?o/163e/%%Encoded_Email_Analytics%%" width="1" height="1" border="0" />

첨부파일이 있는 경우 [Add Link]버튼을 눌러서 링크를 추가 할 수 있다. 예를 들어 추가한 링크는 아래와 같다.

http://www.myweb.co.kr/email/r.php?c/3dj9/%%Encoded_Email_Analytics%%

5. 실제로 이메일 전송은 G-Lock EasyMail이라는 이메일전송 클라이언트를 사용해서 한다.
이 이메일 클라이언트는 무료로 사용할 수 있는데 무료 버전인 경우 이메일그룹을 하나만 만들 수 있다. 그룹을 여러개 만들려면 유료버전을 사용해야 한다.