2010-04-15 5 views
13

본질적으로 구문 강조 표시 및 줄 번호가있는 소스 코드의 PDF 인 "소스 코드 문서/줄 번호"를 제공해야합니다. "빌드 릴리스 버전"스크립트로 스크립트에서 호출 할 수있는 기존 명령 줄 도구가 있습니까?구문 강조 표시가있는 C++에서 PDF 변환기로 명령 줄이 있습니까?

지금 당장은 dev 환경에서 TI 프로세서 용 코드와 PDF 프린터 드라이버를 사용하여 수동으로 VC++을 사용하고 있습니다.이 드라이버는 인쇄 할 각 파일에 대한 팝업을 가지고 있습니다.

+0

혼란 스럽지만 왜 전체 소스를 인쇄 하시겠습니까? –

+1

고객 요구 사항. "줄 번호를 포함한 소스 코드 문서." 파일을 자동으로 생성하기 만하면됩니다. (내가 대본을 쓸 수있는 것) – NoMoreZealots

+0

답변이 당신을 위해 작동하지 않는 것 같지 않습니까? – baol

답변

22

두 개의 구문 형광펜은 enscriptsource-highlight입니다.

첫 번째는 PostScript로 출력 할 수 있으며 (ps2pdf를 사용하여 PDF로 변환 할 수 있음), 두 번째 출력은 HTML, LaTeX 및 기타 형식으로 출력됩니다.

모두 Cygwin

편집을 통해 사용할 수 있어야합니다 :을 내 시스템에서 다음 명령은 현재 하위 트리에있는 모든 CPP 파일을 인쇄합니다.

find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8 

다음은 동일한 콘텐츠를 가진 파일 code.pdf

find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8 -o - | ps2pdf - code.pdf 

PS를 생성 하겠지만 : 라인 번호의 색상 출력 --color=1-C을 준다.

find . -name "*.cpp" | xargs enscript --color=1 -C -Ecpp -fCourier8 -o - | ps2pdf - code.pdf 
+2

'enscript'는 기본 용지 크기 A4를 사용합니다. 글자 크기를 사용하고 싶다면'-E Letter'를'enscript' 옵션에 추가하십시오. –

3

저는 이것을 사용합니다. 그것은 .ps를 생성합니다. 그런 다음 ps2pdf를 실행할 수 있습니다.

# Copyright 2004 Rutger E.W. van Beusekom. 
# Distributed under the Boost Software License, Version 1.0. (See 
# accompanying file LICENSE_1_0.txt or copy at 
# http://www.boost.org/LICENSE_1_0.txt) 

outfile=$1 
shift 

a2ps -1 --highlight=normal --pretty-print=cxx --line-numbers=1 -M a4 -L80 -g \ 
-o $outfile $* --prologue=color --right-title=%p. --left-title \ 
--left-footer --right-footer --header --medium=a4 

소스 탐색을 활성화 한 상태에서 Doxygen을 사용할 수도 있습니다. 이맥스에는 Hrvoje Niksic의 htmlize.el도 있습니다.

0

몇 가지 대안을 테스트했으며 enscript이 소스 코드를 인쇄하는 데 가장 좋았습니다. 그래서,이 bash는 스크립트를 쓴 몇 분 전 현재 디렉토리에있는 모든 소스를 수집 (bash는, ENSCRIPT, 인 ps2pdf, pdfjam 필요) :

사용 예 : ./script합니다. 쉬 * .H * .c 인

#!/bin/bash 
test "x$1" == "x" && echo "usage: $0 <sourcefiles>" && exit 0 

for f in "[email protected]" ; do enscript $f -o $f.ps -E -C ; done 

for f in *.ps ; do echo ps2pdf $f ; ps2pdf $f && rm $f ; done 

rm OUTPUT.pdf 2>/dev/null 
pdfjam *.pdf && mv *pdfjam.pdf OUTPUT.pdf 

echo 
echo DONE: 
echo OUTPUT.pdf 

경고 :이 스크립트는 나쁜 해킹이며, 현재 디렉토리에 * .PS와 OUTPUT.pdf 삭제됩니다. 모든 입력 파일이 현재 디렉토리에 있다고 가정합니다.

관련 문제