Bash에서 libreoffice ODT를 PDF로 변환하는 방법

Bash에서 libreoffice ODT를 PDF로 변환하는 방법

CentOS 6에서 libreoffice를 사용하고 있습니다. 다음 명령을 사용하여 ODT 파일을 PDF로 변환할 수 있습니다.

libreoffice --headless --convert-to pdf *.odt 하지만 문제는 libreoffice에 열려 있는 문서가 없는 경우에만 작동한다는 것입니다.

--env:UserInstallation=file:///path/to/some/directory 댓글 중 하나에서 제안한 대로 지정 하면이 문제 , 도움이 되지 않습니다.

내가 뭘 잘못했나요? before 명령을 실행하기 전에 모든 libreoffice 인스턴스를 종료하는 것은 번거로운 일입니다.

답변1

한 가지 가능한 방법은 설치하는 것입니다 unoconv(아직 설치되지 않은 경우).

unoconv file.odt

unoconv자세한 내용은 남자를 참조하세요

unoconvLibreOffice가 가져올 수 있는 모든 파일 형식을 LibreOffice가 내보낼 수 있는 모든 파일 형식으로 변환할 수 있는 명령줄 유틸리티입니다. unoconvLibreOffice의 UNO 바인딩을 사용한 비대화형 변환...

또한 일부 플랫폼에서는 설치가 필요합니다 libreoffice-headless\thanks{Aaron}

답변2

주석의 제안이 불완전하고(디렉토리를 지정할 수 없음) 올바르지 않기 때문에(디렉토리를 지정 --env:...해야 함 -env:..) 이것이 작동하지 않을 것입니다.

  1. libreoffice의 모든 인스턴스를 중지하십시오.
  2. 다음을 지정하지 않고 명령줄에서 libreoffice를 시작합니다 --headless.

    libreoffice -env:UserInstallation=file:///home/username/.config/libreoffice-alt
    

    /home/username 홈 디렉터리로 바꿔야 합니다 ( .configCentOS에 없으면 조정하세요. 저는 Ubuntu와 Linux Mint에서 이 작업을 수행했습니다). 위의 코드는 .config 디렉터리에 대체 libreoffice에 대한 새 구성 디렉터리를 생성합니다. 이 디렉터리가 없으면 java 찾을 수 없다는 오류가 발생합니다.

  3. libreoffice 인스턴스 종료
  4. /home/username/.config/libreoffice-alt 이제 디렉터리가 생성되어야 합니다.

이제 libreoffice명령줄에서 다른 인스턴스를 시작하고(이렇게 하면 두 번째 인스턴스를 시작하는 데 문제가 있는 경우 유용한 메시지를 볼 수 있습니다) -env:...다음을 실행하는 동안 변환을 시작합니다.

libreoffice -env:UserInstallation=file:///home/username/.config/libreoffice-alt --headless --convert-to pdf *.odt

답변3

이것은 완전히 다른 접근 방식입니다.

이는 최근 새로운 전환 경로 세트가 열렸기 때문에 가능합니다.판독의ODT 파일을 읽을 수 있는 기능을 새로 얻었습니다.

Pandoc은 파일 형식을 읽을 때 이를 내부 형식 "네이티브"(JSON 형식)로 변환합니다.

그런 다음 문서를 원래 형식에서 다양한 다른 형식으로 내보낼 수 있습니다. PDF뿐만 아니라 DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki 등...

여기서 원하는 출력 형식은 PDF이므로 Pandoc에서 제공하는 다른 경로의 또 다른 옵션이 있습니다.PDF 엔진. 다음은 현재 사용 가능한 PDF 엔진 목록입니다(Pandoc v2.7.2 이상 - 이전 버전은 더 작은 목록만 지원할 수 있음).

  • PDF 라텍스:이것이 필요하다유제Pandoc에 추가로 설치합니다.

  • 유제:이것이 필요하다XeLaTeXPandoc 외에 추가로 설치 가능(유니버설 패키지의 추가 패키지로도 설치 가능)TeX 배포).

  • 문맥:이것이 필요하다문맥Pandoc에 추가로 설치하는 것은 가장 다양한 추가 기능 패키지로 제공됩니다.TeX 배포).

  • 루라텍스:이것이 필요하다루아텍스Pandoc 외에 추가로 설치 가능(유니버설 패키지의 추가 패키지로도 설치 가능)TeX 배포).

  • pdfroff:이것이 필요하다GNU로프Pandoc에 추가로 설치합니다.

  • wkhtml2pdf:이것이 필요하다wkhtml을 pdf로Pandoc에 추가로 설치합니다.

  • 왕자:이것이 필요하다PrinceXMLPandoc에 추가로 설치합니다.

  • 웨이이 인쇄:이것이 필요하다웨이이 인쇄Pandoc에 추가로 설치합니다.

이제 Pandoc에 통합된 점점 더 새로운 PDF 엔진이 있는데, 나는 직접 사용해 본 적이 없으며 현재로서는 더 자세히 설명할 수 없습니다.구성된그리고유제.

경고하다:모든 PDF 출력에서 ​​원본 문서가 ODT의 인쇄 미리보기 또는 PDF 내보내기와 동일하게 보일 것이라고 기대하지 마십시오! Pandoc, 변환시레이아웃을 유지하지 않음, 이는콘텐츠그리고구조문서의 내용: 단락은 여전히 ​​단락이고, 강조된 단어는 여전히 강조되며, 제목은 여전히 ​​제목입니다. 그러나 전체적인 모습은 크게 바뀔 수 있습니다.

명령 예

PDF 라텍스:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdflatex

XeLaTeX:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=xelatex

LuaLaTeX:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=lualatex

문맥:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=context

GNU 팀:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdfroff

wkhtmltopdf:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=wkhtml2pdf

PrinceXML:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=prince

웨이이 인쇄:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=weasyprint

위의 명령은 가장 기본적인 변환입니다. 선택한 PDF 엔진에 따라 출력 PDF 파일의 모양을 제어하는 ​​다른 옵션이 많이 있을 수 있습니다. 예를 들어 LaTeX를 통해 라우팅되는 모든 경로에 다음 추가 매개변수를 추가할 수 있습니다.

 -V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"

사용자 정의 페이지 크기(DIN A4보다 약간 크며 상단 가장자리의 여백은 2cm, 다른 세 가장자리의 여백은 1.12cm)를 사용합니다.

답변4

다음을 시도해 볼 수 있습니다.

$ libreoffice2 pdf *.odt

어쨌든, 이 pb.는 적어도 libreoffice 6부터 libreoffice 팀이 이 문제를 해결했습니다.

관련 정보