Evince에서 hwp v5 문서 보기

안녕하세요.
기쁜 마음으로 libghwp v0.1을 발표합니다.
많이 부족하지만 이제 evince에서 hwp v5 기본 텍스트를 볼 수 있습니다.
2000번 켰다 껐다 해봤는데 에러가 발생하지 않았습니다.
나눔고딕 폰트 필수적으로 설치되어 있어야 합니다.

주소 https://github.com/cogniti/libghwp/tree/v0.1
다운로드 https://github.com/cogniti/libghwp/archive/v0.1.zip

설치

[code:12yjpb9s]./autogen.sh
make
sudo make install && ldconfig[/code:12yjpb9s]

v0.1 기능:

  • 기본 텍스트 렌더링.

아래는 evince-hwp-backend 주소입니다.

https://github.com/cogniti/evince-hwp

make 한 후 링크를 걸어주거나 복사해넣으면 됩니다.
아래 참고.

[code:12yjpb9s]cogniti@debian:/usr/lib/evince/4/backends$ ls -l hwp
lrwxrwxrwx 1 root root 60 12월 9 16:47 hwpdocument.evince-backend -> /home/cogniti/projects/evince-hwp/hwpdocument.evince-backend
lrwxrwxrwx 1 root root 51 12월 9 16:47 libhwpdocument.so -> /home/cogniti/projects/evince-hwp/libhwpdocument.so[/code:12yjpb9s]
[attachment=0:12yjpb9s]evince-hwp.png[/attachment:12yjpb9s]

참 반가운 소식이네요. 수고 많으셨습니다.
그런데, 저는 make를 치니 이렇게 나오네요.

[quote:17uz8ahb]cklove@530U:~$ cd 바탕화면
cklove@530U:~/바탕화면$ cd libghwp-0.1
cklove@530U:~/바탕화면/libghwp-0.1$ make
make: *** 타겟이 지정되지 않았고 메이크파일이 없습니다. 멈춤.
cklove@530U:~/바탕화면/libghwp-0.1$
[/quote:17uz8ahb]

[code:376gvd93]./autogen.sh[/code:376gvd93]
을 먼저 해주세요.
아마 패키지가 없다고 에러가 나올텐데요…
에러 메시지를 올려주시면 어떤 패키지 설치해야 하는지 안내해드릴께요.
없다고 하는 패키지 설치하고 autogen.sh 실행하는 과정을 몇 차례 진행해야 할 것입니다.

[quote="cklove":3j0fu0it]참 반가운 소식이네요. 수고 많으셨습니다.
그런데, 저는 make를 치니 이렇게 나오네요.

[quote:3j0fu0it]cklove@530U:~$ cd 바탕화면
cklove@530U:~/바탕화면$ cd libghwp-0.1
cklove@530U:~/바탕화면/libghwp-0.1$ make
make: *** 타겟이 지정되지 않았고 메이크파일이 없습니다. 멈춤.
cklove@530U:~/바탕화면/libghwp-0.1$
[/quote:3j0fu0it][/quote:3j0fu0it]

저도 이분이랑 똑같이 나오네요…
이거 하기전에 뭐 두개 설치하라고 뜨긴 했었는데(아마 libtool이랑 autoconf였던 거 같아요)

그 두개 설치하고 make를 쳐 봤는데도 타겟이 없다고 하면서 똑같이 뜨네요.

이런 메시지 나올 경우,

[code:jxd8qw70]cogniti@debian:~/Downloads/libghwp-0.1$ ./autogen.sh

Error: You must have `libtool’ installed.
You can get it from: ftp://ftp.gnu.org/pub/gnu/

Error: You must have `automake’ installed.
You can get it from: ftp://ftp.gnu.org/pub/gnu/[/code:jxd8qw70]
libtool automake 패키지 설치합니다.

[code:jxd8qw70]sudo apt-get install libtool automake[/code:jxd8qw70]
그리고 나서 다시

[code:jxd8qw70]./autogen.sh[/code:jxd8qw70]
해줍니다. 필요로 하는 패키지가 없다면 에러가 나올 것입니다. 그 메시지를 올려주세요.

아래와 같은 메시지가 나온 후 make 합니다.

[code:jxd8qw70]configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/ghwp-0.1.pc
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
Now type `make’ to compile.[/code:jxd8qw70]

이렇게 나오네요.

[quote:ibqin079]cklove@530U:~/바탕화면/libghwp-0.1$ ./autogen.sh
Warning: I am going to run configure' with no arguments. If you wish to pass any to it, please specify them on the ./autogen.sh’ command line.

processing .
Running libtoolize…
libtoolize: putting auxiliary files in .'. libtoolize: copying file ./ltmain.sh’
libtoolize: Consider adding AC_CONFIG_MACRO_DIR([m4])' to configure.ac and libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree. libtoolize: Consider adding -I m4’ to ACLOCAL_AMFLAGS in Makefile.am.
Running aclocal …
Running autoheader…
Running automake --gnu …
Running autoconf …
Running ./configure …
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for a thread-safe mkdir -p… /bin/mkdir -p
checking for gawk… gawk
checking whether make sets $(MAKE)… yes
checking whether make supports nested variables… yes
checking for gcc… gcc
checking whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether gcc accepts -g… yes
checking for gcc option to accept ISO C89… none needed
checking for style of include used by make… GNU
checking dependency style of gcc… gcc3
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
checking how to print strings… printf
checking for a sed that does not truncate output… /bin/sed
checking for grep that handles long lines and -e… /bin/grep
checking for egrep… /bin/grep -E
checking for fgrep… /bin/grep -F
checking for ld used by gcc… /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld… yes
checking for BSD- or MS-compatible name lister (nm)… /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface… BSD nm
checking whether ln -s works… yes
checking the maximum length of command line arguments… 1572864
checking whether the shell understands some XSI constructs… yes
checking whether the shell understands "+="… yes
checking how to convert i686-pc-linux-gnu file names to i686-pc-linux-gnu format… func_convert_file_noop
checking how to convert i686-pc-linux-gnu file names to toolchain format… func_convert_file_noop
checking for /usr/bin/ld option to reload object files… -r
checking for objdump… objdump
checking how to recognize dependent libraries… pass_all
checking for dlltool… no
checking how to associate runtime and link libraries… printf %s\n
checking for ar… ar
checking for archiver @FILE support… @
checking for strip… strip
checking for ranlib… ranlib
checking command to parse /usr/bin/nm -B output from gcc object… ok
checking for sysroot… no
checking for mt… mt
checking if mt is a manifest tool… no
checking how to run the C preprocessor… gcc -E
checking for ANSI C header files… yes
checking for sys/types.h… yes
checking for sys/stat.h… yes
checking for stdlib.h… yes
checking for string.h… yes
checking for memory.h… yes
checking for strings.h… yes
checking for inttypes.h… yes
checking for stdint.h… yes
checking for unistd.h… yes
checking for dlfcn.h… yes
checking for objdir… .libs
checking if gcc supports -fno-rtti -fno-exceptions… no
checking for gcc option to produce PIC… -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works… yes
checking if gcc static flag -static works… yes
checking if gcc supports -c -o file.o… yes
checking if gcc supports -c -o file.o… (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries… yes
checking whether -lc should be explicitly linked in… no
checking dynamic linker characteristics… GNU/Linux ld.so
checking how to hardcode library paths into programs… immediate
checking whether stripping libraries is possible… yes
checking if libtool supports shared libraries… yes
checking whether to build shared libraries… yes
checking whether to build static libraries… yes
checking for pkg-config… /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0… yes
checking for LIBGHWP… no
configure: error: Package requirements (libgsf-1 glib-2.0 gio-2.0 cairo gobject-2.0 cairo-ft freetype2 ) were not met:

No package ‘libgsf-1’ found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBGHWP_CFLAGS
and LIBGHWP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
cklove@530U:~/바탕화면/libghwp-0.1$
[/quote:ibqin079]

데비안 패키지 기준으로 설명합니다.
우부투 패키지 이름과 다를 수 있습니다.

[code:wtoek41p]sudo apt-get install libtool automake libgsf-1-dev libcairo2-dev libevince-dev[/code:wtoek41p]
이렇게 설치한 후 다시

[code:wtoek41p]./autogen.sh
make
sudo make install && ldconfig[/code:wtoek41p]

인스톨에서 또 걸리네요. ㅠ,.ㅠ

[quote:38duk5bv]cklove@530U:~/바탕화면/libghwp-0.1$ sudo make install && ldconfig

전반부는 생략하고 아래 부분을 첨부해 봅니다.


test -z "/usr/local/include/ghwp" || /bin/mkdir -p "/usr/local/include/ghwp"
/usr/bin/install -c -m 644 ghwp.h ‘/usr/local/include/ghwp’
test -z "/usr/local/lib/pkgconfig" || /bin/mkdir -p "/usr/local/lib/pkgconfig"
/usr/bin/install -c -m 644 ghwp-0.1.pc ‘/usr/local/lib/pkgconfig’
make[2]: Leaving directory /home/cklove/바탕화면/libghwp-0.1/src' make[1]: Leaving directory /home/cklove/바탕화면/libghwp-0.1/src’
make[1]: Entering directory /home/cklove/바탕화면/libghwp-0.1' make[2]: Entering directory /home/cklove/바탕화면/libghwp-0.1’
make[2]: install-exec-am'를 위해 할 일이 없습니다 test -z "/usr/local/doc/libghwp" || /bin/mkdir -p "/usr/local/doc/libghwp" /usr/bin/install -c -m 644 README COPYING AUTHORS ChangeLog INSTALL NEWS '/usr/local/doc/libghwp' make[2]: Leaving directory /home/cklove/바탕화면/libghwp-0.1’
make[1]: Leaving directory `/home/cklove/바탕화면/libghwp-0.1’
/sbin/ldconfig.real: 임시 캐시 파일 /etc/ld.so.cache~을(를) 열 수 없습니다: 허가 거부
cklove@530U:~/바탕화면/libghwp-0.1$
[/quote:38duk5bv]

메시지를 보니 설치는 성공한 것 같습니다.
에러는 sudo ldconfig 에서 발생한 것 같습니다.
에러가 왜 발생했는지 모르겠고요…
ldconfig 해주는 거는 라이브러리 캐시 업데이트하라고 명령 주는 거입니다.
우분투 또한 LD_LIBRARY_PATH에 기본적으로 /usr/local/lib가 들어가 있는 것으로 알고 있습니다.

이제 evince-hwp 설치할 차례입니다.

프로젝트 주소 https://github.com/cogniti/evince-hwp
다운로드 주소 https://github.com/cogniti/evince-hwp/a … master.zip

[code:5qsx330o]sudo apt-get install libevince-dev
make[/code:5qsx330o]
libhwpdocument.so, hwpdocument.evince-backend 파일을
/usr/lib/evince/4/backends/ 디렉토리 안에 링크를 걸어주거나 복사해 넣습니다.
벡엔드가 설치되어 있는 /usr/lib/evince/4/backends/ 디렉토리 이름은 컴퓨터 환경마다 다를 수 있음에 유의하세요.

그 후 evince 를 기동 후에 hwp v5.0 문서를 열어서 보시면 됩니다.
노틸러스에서 hwp를 "다른 프로그램 열기"에서 evince로 등록해 두면 hwp 클릭하면 evince 로 볼 수 있습니다.
hwp v3.0의 문서는 작동하지 않습니다.

그리고 libghwp v0.1에 메모리 누수, 글자 누락 되는 버그 있는데, 수정을 했고 테스트 중이며 조만간 v0.1.1 버전을 내놓을 것입니다.^^
문서가 많이 허접하게 보이지만, 인터넷에서 다운받은 hwp 문서의 내용을 바로 확인할 수 있다는 점에 의미를 두고 싶습니다. 많이 부족한 프로그램이지만 없는거보단 있는게 좋으니까요 이렇게 선보이는 겁니다.
감사합니다.

cogniti님 친절히 답변해 주셔서 감사합니다. 제가 제대로 따라 하고 있는 건가요?

[quote:2f3nkhib]cklove@530U:~/바탕화면/libghwp-0.1$ make
make all-recursive
make[1]: Entering directory /home/cklove/바탕화면/libghwp-0.1' Making all in src make[2]: Entering directory /home/cklove/바탕화면/libghwp-0.1/src’
make[2]: all'를 위해 할 일이 없습니다 make[2]: Leaving directory /home/cklove/바탕화면/libghwp-0.1/src’
make[2]: Entering directory /home/cklove/바탕화면/libghwp-0.1' make[2]: Leaving directory /home/cklove/바탕화면/libghwp-0.1’
make[1]: Leaving directory `/home/cklove/바탕화면/libghwp-0.1’
cklove@530U:~/바탕화면/libghwp-0.1$[/quote:2f3nkhib]

그 다음, 아래 내용은 또 어떻게 해야 하는지 모르겠네요.
위 폴더 안에는 그런 파일이 없는 것 같은데요?

[quote="cogniti":2f3nkhib]
libhwpdocument.so, hwpdocument.evince-backend 파일을
/usr/lib/evince/4/backends/ 디렉토리 안에 링크를 걸어주거나 복사해 넣습니다.
벡엔드가 설치되어 있는 /usr/lib/evince/4/backends/ 디렉토리 이름은 컴퓨터 환경마다 다를 수 있음에 유의하세요.
[/quote:2f3nkhib]

https://github.com/cogniti/evince-hwp/a … master.zip

감사합니다. 설치에 성공 한 것 같아요.
그런데 아직 파일을 열지 못하네요.
HWP 5.0 파일을 더블 클릭하면 열리는 것 맞지요?

그런데 다 설치하고 나서 보니 …
제가 가지고 있는 파일들은 대부분 한글 2005이고, 헐 !!!
다른 파일들을 여기 저기서 구해 보는데 아직 열리지 않네요.
다시 시도해 본 후에 잘 되면 보고드리겠습니다. 충성~ !

한글 2005로 작성한 문서는 (일부러 v3으로 저장하지 않는 한) v5 버전입니다.
evince에서 열리지 않는다면… 그건 아마 설치가 제대로 되지 않아서 그럴 겁니다.
터미널 창에서

[code:33dq7e3i]evince ~/Documents/aaa.hwp[/code:33dq7e3i]
이런 방법으로도 실행이 가능합니다. 이렇게 실행할 경우 터미널에 출력되는 메시지를 볼 수 있을 겁니다.
그 메시지를 보고 제대로 설치가 되었는지 아닌지 판단이 가능합니다.


클릭시에 바로 프로그램으로 보려면 노틸러스 파일 관리자에서
hwp 파일 아이콘에 마우스 포인터를 위치시킨 후
오른쪽 버튼을 누르면 팝업 메뉴가 뜨는데
그 팝업 메뉴에서 속성을 클릭하면 대화창이 열리고
"다른 프로그램으로 열기" 탭을 선택하여 기본 프로그램으로 문서 보기(evince)를 설정해 주면 됩니다.


전 데비안 사용자라,… 우분투 사용자님게서 deb 패키지를 만들어 주시면 좋겠는데…

와우!
아직 해 보지는 않았지만 좋네요.
deb 패키지는 시간 나는 대로 제가 한 번 거들어 보겠습니다.

혹시 만드시게 되걸랑

https://github.com/cogniti/libghwp/tags

여기서 최신 버전으로 만들어주세요~~
행복한 크리스마스 보내세요~~

아, 뭔가 문제가 있나봅니다.
다음 그림처럼 에러 메시지가 뜨네요.

[attachment=0:224i5g9n]capture.png[/attachment:224i5g9n]

evince로 hwp 문서를 보는데 필요한 파일은 백엔드용 파일 2개와 libghwp 라이브러리 파일입니다.
[u:3oscgnqn]링크를 걸었다면 파일/디렉토리 삭제로 인하여 링크가 깨진 것은 아닌지 확인해보세요.[/u:3oscgnqn]

[b:3oscgnqn]evince-hwp-backend[/b:3oscgnqn]
/usr/lib/evince/4/backends 디렉토리에

[code:3oscgnqn]/usr/lib/evince/4/backends/hwpdocument.evince-backend
/usr/lib/evince/4/backends/libhwpdocument.so[/code:3oscgnqn]

[b:3oscgnqn]libghwp 라이브러리[/b:3oscgnqn]
/usr/local/lib 또는 /usr/share/lib 디렉토리에

[code:3oscgnqn]-rwxr-xr-x 1 root staff 1059 12월 24 20:50 libghwp.la
lrwxrwxrwx 1 root staff 16 12월 24 20:50 libghwp.so -> libghwp.so.0.0.0
lrwxrwxrwx 1 root staff 16 12월 24 20:50 libghwp.so.0 -> libghwp.so.0.0.0
-rwxr-xr-x 1 root staff 114641 12월 24 20:50 libghwp.so.0.0.0[/code:3oscgnqn]

찾아보니 모든 파일이 다 있네요. 아래 캡처한 것 보시면,

[attachment=0:2mk3kpyy]capture02.png[/attachment:2mk3kpyy]

그런데… 죄송합니다만, 링크를 어떻게 거는 건가요?

다 있는데 왜 안 열리죠? 신기하네…

터미널에서

[code:6o6aamxw]
wget https://github.com/cogniti/ruby-hwp/raw/master/samples/kreg1.hwp
evince kreg1.hwp[/code:6o6aamxw]
이렇게 해보시고 에러 메시지 나오면 올려주세요.

예 해 보니 위에 제가 올린 에러메시지가 또 나오네요.
이거 뭐가 문젠지 …