PDF전환시 callout태그에서 에러가 발생합니다.

닥북 활용에 대한 모든 질문과 답변

PDF전환시 callout태그에서 에러가 발생합니다.

전체글글쓴이: haje01 » 2007-01-26 1:55 pm

소스등에 라인번호를 대신해 callout을 사용해 보려고합니다.
그런데 아래와 같은 에러메세지가 출력되네요..

심각: Image not available: url(images/callouts/1.png)

바쁘시겠지만 확인부탁드립니다..
haje01
 

전체글글쓴이: 초보 » 2007-01-26 4:06 pm

아마 callout 번호(라인번호가 아님)에 그래픽이미지를 사용하게 설정되어있는 것 같습니다.
올리신 내용만 봐서는 callout 번호 이미지가 상대경로로 지정되어있어 이미지 파일을 찾기 못하는 것으로 보입니다.

dbk-fo.xsl(pdf 를 만드는 경우) 나 dbk-html.xsl(html을 만드는 경우) 에

코드: 모두 선택
<xsl:param name="callout.graphics.path" select="'file:///c:/docbook/images/callout/'" />

과 같은 식으로 callout 이미지의 경로를 절대 경로로 지정해보시기 바랍니다.
초보
 

전체글글쓴이: 류광 » 2007-01-26 6:16 pm

예 윗분 말씀이 맞습니다. 그리고 http://docbook.kr/phpBB2/viewtopic.php?p=1010#1010 에서 말한 것과 본질적으로 동일한 문제인 것 같네요.

윗분 제안처럼 XSL 파일들을 직접 수정해도 되고, xsltproc 호출 시 옵션에
코드: 모두 선택
-stringparam callout.graphics.path %DOCBOOK_HOME%\stylesheet\docbook-xsl\images\callouts\

을 추가해도 되겠습니다. 모음집 차원에서는 이 방법이 더 바람직하겠네요. (docbook2fo.bat에 추가).

HTML의 경우에는 이미지 파일들이 문서에 내장되는 것이 아니므로, 문서의 배포를 고려한다면 아예 소스포지의 URL을 참조하게 만드는 게 더 나을 수도 있겠습니다.
코드: 모두 선택
-stringparam callout.graphics.path http://docbook.sourceforge.net/release/xsl/current/images/callouts/


결론적으로... 다음 압축 파일의 docbook2fo.bat과 docbook2html.bat을 bin/ 디렉터리에 덮어 쓰고 시험해 주세요. 문제가 없다면 0.9.0 공식 버전에 포함시키겠습니다.
첨부파일
dbk-new-bats.zip
(548 Byte) 4763 번째 다운로드
류광 님에 의해 2011-01-12 10:40 pm 에 마지막으로 수정되었으며, 1 번 편집하였습니다.
류광
사용자
 
전체글: 432
가입일: 2003-12-27 12:02 am

약간이상합니다..

전체글글쓴이: haje01 » 2007-01-27 6:46 pm

답변해 주셔서 갑사합니다.

주신 파일을 덮어서 쓰고나니, 이제 이미지가 없다는
에러는 발생하지 않습니다. 그런데 약간 문제가 있더군요.

예제로 돌려본 것은 DocBook 사이트에 있는 programminglistingco의 예제
였습니다.

http://www.docbook.org/tdg/en/html/prog ... ingco.html

정확한 결과는 예제의 그림처럼 코드의 행을 지정하는 숫자이미지가 나오고
아래에 같은 숫자이미지와 설명이 나오는 것일 듯 합니다만,

아래의 숫자이미지는 잘 나오는데 코드의 행을 지정하는 숫자이미지가
나오실 않습니다.

가능하시면 확인 부탁드리겠습니다..
haje01
 

전체글글쓴이: 류광 » 2007-01-27 9:05 pm

http://www.sagehill.net/docbookxsl/Anno ... utAreaSpec 에 따르면 xsltproc으로는 해결이 안 되는 것 같습니다. 거기에는 외부 파일에 담긴 코드를 불러들이는 예가 나오긴 하지만, 코드가 외부에 있느냐가 핵심은 아니고 http://www.sagehill.net/docbookxsl/Anno ... l#Callouts 의 예처럼 co를 직접 표시해주느냐 아니냐가 핵심인데요. co를 직접 표시하지 않고 areaspec만으로 callout 표시(이걸 callout bug라고 부른다고 하네요....)를 집어 넣으려면 Saxon이나 Xalan의 확장 기능이 필요하다고 합니다.

결국, xsltproc이 지원을 하기 전까지는 Xalan 등을(그리고 관련 XSL 매개변수들을) 사용하거나 아니면 co를 직접 집어 넣는 것이 해결책인 것 같습니다.

Win32용 모음집의 경우에는 일단 이미지 경로 버그만 수정된 버전을 0.9.0으로 발표하고, 현재 빠져 있는 Xalan 패키지 및 이 문제에 관련된 파일들(그리고 http://docbook.or.kr/phpBB2/viewtopic.php?topic=446 의 xref 자동 조사 확장기능도)을 따로 애드온 형식으로 배포하면 될 것 같습니다.
류광
사용자
 
전체글: 432
가입일: 2003-12-27 12:02 am

감사합니다.

전체글글쓴이: haje01 » 2007-01-28 12:10 pm

단순한 버그가 아니고, 생각보다 복잡한 문제인 듯 하네요.

일단 말씀하신대로 co를 직접 명시하는 방식으로 하니 잘 되는 것
같습니다. 일단은 이렇게 사용해도 충분할 듯 하네요..

답변해주셔서 감사드립니다.
haje01
 

전체글글쓴이: 손님 » 2007-01-28 1:37 pm

류광 작성:결국, xsltproc이 지원을 하기 전까지는 Xalan 등을(그리고 관련 XSL 매개변수들을) 사용하거나 아니면 co를 직접 집어 넣는 것이 해결책인 것 같습니다.

예, xalan 의 확장기능을 이용하면 됩니다. 그런데 xalan 확장기능에 간단한 버그가 있어서 (왜 여태 이 버그를 고치지 않았는지 이해가 안됩니다.)
그냥은 쓸 수 없고 (코드영역에 callout 이 삽입되지 않습니다.) 확장 기능의 소스코드를 수정해서 써야 합니다.
손님
 

전체글글쓴이: 류광 » 2007-01-28 6:58 pm

Anonymous 작성:
류광 작성:결국, xsltproc이 지원을 하기 전까지는 Xalan 등을(그리고 관련 XSL 매개변수들을) 사용하거나 아니면 co를 직접 집어 넣는 것이 해결책인 것 같습니다.

예, xalan 의 확장기능을 이용하면 됩니다. 그런데 xalan 확장기능에 간단한 버그가 있어서 (왜 여태 이 버그를 고치지 않았는지 이해가 안됩니다.)
그냥은 쓸 수 없고 (코드영역에 callout 이 삽입되지 않습니다.) 확장 기능의 소스코드를 수정해서 써야 합니다.


그렇군요~ 어떤 버그이고 어떻게 수정해야 하는지 알려주시면 다음 번 Xalan 애드온에 반영하겠습니다! 수정해서 컴파일한 버전을 올려주시면 더 좋겠구요~
류광
사용자
 
전체글: 432
가입일: 2003-12-27 12:02 am

수정 방법입니다.

전체글글쓴이: 초보 » 2007-01-29 12:29 am

일단 확장 기능의 버그부터 설명하자면, 확장기능에서 코드 영역에 callout 이미지를
넣을 때 fo:external-graphic 엘리먼트를 만들어 넣습니다. 이때 alt 속성값을 넣는데
fop는 이것을 거부합니다. alt 라는 속성이 fo 표준에 정의되어있는 것인지는 잘모르겠지만
fop 가 거부하기 때문에 이것을 삭제해야 합니다.
그리고 확장기능에서 이미지 파일의 경로를 src 속성으로 지정할 때 스타일시트에 정의된
경로를 그대로 사용하는데 fop는 이렇게 해도 별문제 없지만 xep는 경고 메시지를
출력합니다.(결과물은 올바르게 나옵니다.) 아마도 url(파일경로) 형식으로 하는게
더 올바른 것 같습니다.

수정방법
docbook stylesheet 디렉토리의 extensions\xalan27\src\com\nwalsh\xalan\FormatGraphicCallout.java
파일을 열어 60 ~ 61번째 줄의
코드: 모두 선택
imgAttr.addAttribute("", "src", "src", "CDATA",
                graphicsPath + num + graphicsExt);



코드: 모두 선택
imgAttr.addAttribute("", "src", "src", "CDATA",
             "url(" +  graphicsPath + num + graphicsExt + ")" );

로 바꿉니다. (이건 해도되고 안해도 됩니다.)
그 바로 아래의
코드: 모두 선택
imgAttr.addAttribute("", "alt", "alt", "CDATA", label);

를 주석처리합니다.(이건 꼭 해야 합니다.)

컴파일, 사용
당연한 이야기지만 xalan 확장 기능을 컴파일하려면 xalan 이 있어야 합니다.
extensions\xalan27\build.xml 파일을 열어
코드: 모두 선택
<import file="nbproject/build-impl.xml"/>

위에
코드: 모두 선택
<property name="javac.classpath" value="xalan.jar" />

를 추가합니다.
value 값을 실제 xalan.jar 파일이 있는 경로로 바꾸면 됩니다.

extensions\xalan27 디렉토리에서 ant jar 명령을 실행하면 dist 디렉토리에
xalan27.jar 파일이 생성됩니다. 이 파일을 xalan 을 실행할 때 classpath 에 추가한 후
xalan 을 실행하면 확장기능이 동작합니다.
초보
 

전체글글쓴이: 류광 » 2007-01-29 6:39 pm

고맙습니다~
류광
사용자
 
전체글: 432
가입일: 2003-12-27 12:02 am

여전히 programlistringco.xml에 번호가 안 나옵니다.

전체글글쓴이: cybaek » 2009-08-22 12:29 am

안녕하세요. ^^
dbk 1.0을 받아 설치했습니다.

test 폴더에 있는 programlistingco.xml은 여전히 코드에 숫자 표시가 나오지 않습니다. 해당 문제가 해결되어 패키징 되었을 것 같은데 아직 되지 않은 것인지요?

고맙습니다.
cybaek
 

Re: 여전히 programlistringco.xml에 번호가 안 나옵니다.

전체글글쓴이: 류광 » 2009-08-22 3:23 pm

cybaek 작성:안녕하세요. ^^
dbk 1.0을 받아 설치했습니다.

test 폴더에 있는 programlistingco.xml은 여전히 코드에 숫자 표시가 나오지 않습니다. 해당 문제가 해결되어 패키징 되었을 것 같은데 아직 되지 않은 것인지요?

고맙습니다.


예 콜아웃 그래픽 파일 경로 설정 부분 말고 Xalan 패치는 적용을 안 했었나 봅니다.

지금 상황이라면 위에 나온 대로 패치를 하는 것보다는 docbook-xsl 최신 버전을 적용하는 게 더 나을 것 같습니다. http://sourceforge.net/projects/docbook/ 의 최신 버전을 dbk의 stylesheet/docbook-xsl 에 풀어 넣으면 될겁니다. 저도 여유가 생기는 대로 시도해 보겠습니다...
류광
사용자
 
전체글: 432
가입일: 2003-12-27 12:02 am

Re: 여전히 programlistringco.xml에 번호가 안 나옵니다.

전체글글쓴이: cybaek » 2009-08-27 1:11 am

고맙습니다. ^^

류광 작성:
cybaek 작성:안녕하세요. ^^
dbk 1.0을 받아 설치했습니다.

test 폴더에 있는 programlistingco.xml은 여전히 코드에 숫자 표시가 나오지 않습니다. 해당 문제가 해결되어 패키징 되었을 것 같은데 아직 되지 않은 것인지요?

고맙습니다.


예 콜아웃 그래픽 파일 경로 설정 부분 말고 Xalan 패치는 적용을 안 했었나 봅니다.

지금 상황이라면 위에 나온 대로 패치를 하는 것보다는 docbook-xsl 최신 버전을 적용하는 게 더 나을 것 같습니다. http://sourceforge.net/projects/docbook/ 의 최신 버전을 dbk의 stylesheet/docbook-xsl 에 풀어 넣으면 될겁니다. 저도 여유가 생기는 대로 시도해 보겠습니다...
cybaek
 

Re: 여전히 programlistringco.xml에 번호가 안 나옵니다.

전체글글쓴이: cybaek » 2009-08-27 1:17 am

말씀하신 대로 해봤는데 여전히 PDF의 소스코드 영역에는 숫자가 나오지 않습니다. 시간 나실 때 한번 확인 부탁 드립니다.
cybaek 작성:고맙습니다. ^^

류광 작성:
cybaek 작성:안녕하세요. ^^
dbk 1.0을 받아 설치했습니다.

test 폴더에 있는 programlistingco.xml은 여전히 코드에 숫자 표시가 나오지 않습니다. 해당 문제가 해결되어 패키징 되었을 것 같은데 아직 되지 않은 것인지요?

고맙습니다.


예 콜아웃 그래픽 파일 경로 설정 부분 말고 Xalan 패치는 적용을 안 했었나 봅니다.

지금 상황이라면 위에 나온 대로 패치를 하는 것보다는 docbook-xsl 최신 버전을 적용하는 게 더 나을 것 같습니다. http://sourceforge.net/projects/docbook/ 의 최신 버전을 dbk의 stylesheet/docbook-xsl 에 풀어 넣으면 될겁니다. 저도 여유가 생기는 대로 시도해 보겠습니다...
cybaek
 

앗!

전체글글쓴이: 류광 » 2009-08-27 2:15 pm

제가 패치를 적용했었나 봅니다. 아래 첨부 파일은

DbkPack 1.0.0 압축 파일 풀고 configure.bat, dbkshell.bat 후

> cd test
> docbookto pdf --xalan programlistingco.xml

해서 얻은 것입니다.

최신 버전 docbook-xsl에서도 되는지 확인해 주시길... 핵심은 --xalan입니다.
첨부파일
programlistingco.pdf
(15.57 KiB) 3129 번째 다운로드
류광
사용자
 
전체글: 432
가입일: 2003-12-27 12:02 am

다음

다시 돌아감: 질문과 답변

접속 중인 사용자

이 포럼에 접속 중인 사용자: 접속한 회원이 없음 그리고 손님들 3 명

cron