MS 오피스 문서를 PDF로 변환

comgate3의 이미지

각종 문서(doc, docx, ppt, pptx, xls, xlsx, odt, odp, ods, txt, html 등) 를 PDF로 변환하는 컨버터 프로그램을 짜려고 합니다.
몇일에 걸쳐 이 분야에 관한 정보를 모아봤는데 아무리 보아도 궁금증이 해결되지 않는 부분이 좀 있고 해서 결국에는 글을 올립니다.

사용 언어 : 자바
OS : 리눅스

질문

1. Apache Tika란 toolkit으로 각종 문서를 파싱할 수 있다는걸 알게 되었는데..일단 Tika 공식 사이트나 Tika에 쓰이는 각종 파서들 (Apache Poi)의 공식 문서들을 보면 Text Extraction에 기능이 맞춰져 있다고 쓰여있습니다. 그런데 검색을 해보다 보면 Tika를 통해 오피스 문서를 html/xhtml로 그리고 궁극적으로 또다른 라이브러리를 통해서 html을 pdf로 변환이 가능하다고 하는데 맞는건가요?

Tika를 직접 사용해보고 관련 예제들도 봤지만 Text를 추출하는 것만 보입니다. 그리고 Html을 pdf로 바꾸는 라이브러리는 몇개 있지만 (예를 들어 itext) 정확한 샘플 코드는 제가 찾지를 못했습니다.

제가 생각한 로직 (오피스 문서 -> html/xhtml -> pdf) 이게 맞나요?

2. 1번 질문에 관련된 질문입니다. 오픈 오피스에서 Tika를 사용하는걸 알아냈습니다. (당연한건가요 -,.-;; apache 제품군이니) 그렇다면 오픈 오피스도 Tika를 이용해서 오피스 문서를 html/xhtml로 바꾼뒤에 다시 pdf로 변환을 하는걸까요?

3. 오픈 오피스에서 문서를 열어서 화면에 렌더링을 하는 클래스/라이브러리가 어떤건지 혹시 아시나요?

4. 오픈 오피스로 MS 오피스 파일을 열면 (예를 들어 doc 파일이나 docx 파일) 문서가 다르게 보입니다. 줄 사이 간격이 틀리다던가 글씨의 크기 또는 글자 사이의 공백이 틀리게 나옵니다. (오픈 오피스에서 MS 오피스 파일에 대한 호환성이 100%이지 않은건 알고 있습니다.) Open Office Uno bridging을 이용해 컨버팅을 해도 결과물 pdf 파일은 원본 MS 오피스 파일을 MS 오피스 프로그램으로 열었을때와 다르게 보입니다. 그렇다면...제가 Tika를 직접 쓰지 않고 오픈 오피스 Uno bridging을 통해서 컨버팅을 하려고 한다면, 혹시 코드상에서 문서 스타일링을 바꿀 수 있는 방법이 있나요? Open Office SDK내의 DocumentConvert 예제를 참고해서 컨버팅 하는 java 클래스를 하나 만들었는데 그 예제를 그냥 문서를 읽어와서 바로 로컬에 pdf로 쓰기만 하는 예제이더군요. 그 과정 중간에 문서 스타일링을 바꿀 수 있는 방법이 있다면 최종 결과물을 조금 더 원본에 근접하게 할 수 있을것 같습니다.

흠..그간에 모은 정보가 머리속에서 뱅뱅 돌고 있는데, 그걸 정리해서 질문 하려니 여러가지 주제가 막 섞여버린 질문을 한것 같습니다. 양해부탁드립니다;;

여튼...혹시 위의 질문들에 대해서 조금이라도 알고 있는 지식이 있으신분들 지식을 나눠주시면 감사하겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.