레드마인에서 공식적으로 이 기능을 지원하지는 않고 있다. 이것을 위한 3rd party 플러그인은 있는데 동작하지 않았다.
https://github.com/brunoqs/pdf_export_redmine
Proxy Error가 발생하였는데 아마도 Apache에서 timeout이 발생한것 같았다. 레드마인 커뮤니티에서 해결방법을 찾아봤는데 원인도 정확히 밝혀지지 않은 듯 -.-
그래서 이슈별로 하나씩 pdf 로 받은 다음 병합하는 방법으로 해결하였다.
http://레드마인서버/redmine/my/api_key 에서 생성
curl --remote-name "http://api키:1234@레드마인서버주소/redmine/projects/프로젝트id/issues.csv"
JDK1.8에서 쓸 수 있는 Javascript 인터프리터 jjs가 있어서 사용해봤다. (이런 간단한 작업을 하는데 class 컴파일까지 하는건 과한 듯)
Java 랑 JavaScript를 섞어쓰니 느낌이 묘하다.
var curlCmds = [];
var FileReader=Java.type("java.io.FileReader");
var csvFile = "issues.csv";
var fr = new FileReader(csvFile);
var BufferedReader =Java.type("java.io.BufferedReader");
var br = new BufferedReader(fr);
var line ;
br.readLine(); // 첫번째 줄은 넘어간다
while ((line = br.readLine()) != null) {
print(line);
var issueNo = line.split(",")[0];
var curlCmd = "curl --remote-name http://api키:1234@레드마인서버주소/redmine/issues/" + issueNo + ".pdf";
print(curlCmd);
curlCmds.push(curlCmd)
}
var FileWriter=Java.type("java.io.FileWriter");
var curlCmdsFile = "downloadPdf.sh";
var fw = new FileWriter(curlCmdsFile);
fw.write(curlCmds.join("\n"));
fw.write("\n");
fw.close(); // forgetting to close it results in a truncated file
위의 작업을 수행하면 downloadPdf.sh 가 생성된다. 이 shell파일을 수행하면 pdf 를 다운로드 한다.
pdfunite가 좋다고 하여 사용해봤는데 메모리 문제(“Bogus memory allocation size”) 발생하여 동작하지 않았다.
qpdf 라는 유틸리티를 써보니 잘 동작했다.
qpdf --empty --pages $(ls -vr *.pdf) -- issues.pdf #이름기준 역순descending으로 정렬됨(최신 이슈가 위로)
이 방법의 단점은 페이지 번호가 제대로 출력되지 않는 다는 점이다.