답변:
libre office에서 문서를 열고 PDF로 내보내기 ...를 선택하십시오 .
명령 행 솔루션의 경우 명령 행에서 파일을 변환하는 unoconv 가 있습니다.
unoconv -f pdf mydocument.odt
참고 : Ubuntu 11.10 unoconv부터는 Libre Office에만 의존합니다. 이전 unoconv 버전 (Ubuntu <= 11.04)은 Open Office에 의존하지만 Libre Office와 함께 실행됩니다.
unoconv
해 주셔서 감사합니다. 훌륭합니다!
unoconv: Cannot find a suitable office installation on your system.
. 따라서 사용할 수 없습니다 :(
libreoffice
목적 에 맞는 명령 줄을 사용할 수도 있습니다 . 이는 일괄 변환의 이점을 제공합니다. 그러나 단일 파일도 가능합니다. 이 예제는 현재 디렉토리의 모든 ODT 파일을 PDF로 변환합니다.
libreoffice --headless --convert-to pdf *.odt
다음을 통해 명령 줄 옵션에 대한 자세한 정보를 얻으십시오.
man libreoffice
--env:UserInstallation=file:///path/to/some/directory
.
unoconv
습니다. 예를 들어 나는 그 선을 unoconv -f pdf *.ppt
성공적으로 사용했다 .
"GUI 이외"방법에 대한 자세한 내용은 다음과 같습니다.
이 방법을 사용하여 ODT 파일을 PDF로 변환 할 수 있습니다. 또한 MS Word DOCX 파일 (LibreOffice에서 특정 ODT를 처리 할 수있을뿐만 아니라 작동)과 일반적으로 LibreOffice에서 열 수있는 모든 파일 형식에서도 작동합니다.
libreoffice
제안 된 다른 답변 중 하나 라는 이진 파일이 있다고 생각하지 않습니다 . 그러나 soffice(.bin)
명령 행에서 LibreOffice를 시작하는 데 사용할 수있는 바이너리가 있습니다. 일반적으로 /usr/lib/libreoffice/program/
; 종종 심볼릭 링크 /usr/bin/soffice
가 해당 위치를 가리 킵니다.
그러면 대부분의 경우 매개 변수로 --headless --convert-to pdf
는 충분하지 않습니다. 다음과 같아야합니다.
--headless --convert-to pdf:writer_pdf_Export
이 대문자를 정확히 따르십시오!
다음으로 시스템에 LibreOffice GUI 인스턴스가 이미 실행중인 경우 명령이 작동하지 않습니다. 2011 년 이후 알려진 버그 # 37531 로 인해 발생합니다 . 이 추가 매개 변수를 명령에 추가하십시오.
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
이렇게하면 동일한 사용자가 시작한 첫 번째 GUI LO 인스턴스를 방해하지 않고 두 번째 헤드리스 LO 인스턴스가 사용할 수있는 별도의 새 환경이 만들어집니다.
또한 --outdir /pdf
지정한 사용자가 존재하고 이에 대한 쓰기 권한이 있는지 확인하십시오 . 또는 다른 출력 디렉토리를 사용하십시오. 첫 번째 테스트 및 디버깅 라운드 인 경우에도 :
$ mkdir ${HOME}/lo_pdfs
금후:
/path/to/soffice \
--headless \
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" \
--convert-to pdf:writer_pdf_Export \
--outdir ${HOME}/lo_pdfs \
/path/to/test.docx
이것은 LibreOffice v5.1.2.2가 설치된 Mac OS X Yosemite 10.10.5에서 작동합니다 ( soffice
어쨌든 우분투에서 다른 바이너리에 대한 특정 경로 사용 ...). 또한 Debian Jessie 8.0 (path 사용 /usr/lib/libreoffice/program/soffice
) 에서도 작동합니다 . 죄송합니다. 지금 우분투에서 테스트 할 수 없습니다 ....
이 모든 것이 작동하지 않으면 DOCX를 처리하려고 할 때 :
명령을 시도하는 특정 DOCX 파일에 문제가있을 수 있습니다. 먼저 자신 만의 아주 간단한 DOCX 문서를 만드십시오. 이를 위해 LibreOffice 자체를 사용하십시오. "Hello World!"라고 쓰십시오. 그렇지 않으면 빈 페이지에. DOCX로 저장하십시오.
다시 시도하십시오. 간단한 DOCX와 함께 작동합니까?
다시 작동하지 않으면 7 단계를 반복하되 이번에는 ODT로 저장하십시오.
8 단계를 반복하되 이번에는 ODT를 참조하십시오.
마지막 : 사용 전체 경로 soffice
에 soffice.bin
와에 libreoffice
와 각 실행 -h
매개 변수를 :
$ /path/to/libreoffice -h # if that path exists, which I doubt!
$ /path/to/soffice -h
$ /path/to/soffice.bin -h
사용한 명령 줄과 비교하십시오.
비교를 위해 내 (Mac OS X) 출력은 다음과 같습니다.
$ /Applications/LibreOffice.app/Contents/MacOS/soffice -h
LibreOffice 5.1.2.2 d3bf12ecb743fc0d20e0be0c58ca359301eb705f
Usage: soffice [options] [documents...]
Options:
--minimized keep startup bitmap minimized.
--invisible no startup screen, no default document and no UI.
--norestore suppress restart/restore after fatal errors.
--quickstart starts the quickstart service
--nologo don't show startup screen.
--nolockcheck don't check for remote instances using the installation
--nodefault don't start with an empty document
--headless like invisible but no user interaction at all.
--help/-h/-? show this message and exit.
--version display the version information.
--writer create new text document.
--calc create new spreadsheet document.
--draw create new drawing.
--impress create new presentation.
--base create new database.
--math create new formula.
--global create new global document.
--web create new HTML document.
-o open documents regardless whether they are templates or not.
-n always open documents as new files (use as template).
--display <display>
Specify X-Display to use in Unix/X11 versions.
-p <documents...>
print the specified documents on the default printer.
--pt <printer> <documents...>
print the specified documents on the specified printer.
--view <documents...>
open the specified documents in viewer-(readonly-)mode.
--show <presentation>
open the specified presentation and start it immediately
--accept=<accept-string>
Specify an UNO connect-string to create an UNO acceptor through which
other programs can connect to access the API
--unaccept=<accept-string>
Close an acceptor that was created with --accept=<accept-string>
Use --unnaccept=all to close all open acceptors
--infilter=<filter>[:filter_options]
Force an input filter type if possible
Eg. --infilter="Calc Office Open XML"
--infilter="Text (encoded):UTF8,LF,,,"
--convert-to output_file_extension[:output_filter_name[:output_filter_options]] [--outdir output_dir] files
Batch convert files (implies --headless).
If --outdir is not specified then current working dir is used as output_dir.
Eg. --convert-to pdf *.doc
--convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
--convert-to "html:XHTML Writer File:UTF8" *.doc
--convert-to "txt:Text (encoded):UTF8" *.doc
--print-to-file [-printer-name printer_name] [--outdir output_dir] files
Batch print files to file.
If --outdir is not specified then current working dir is used as output_dir.
Eg. --print-to-file *.doc
--print-to-file --printer-name nasty_lowres_printer --outdir /home/user *.doc
--cat files
Dump text content of the files to console
Eg. --cat *.odt
--pidfile=file
Store soffice.bin pid to file.
-env:<VAR>[=<VALUE>]
Set a bootstrap variable.
Eg. -env:UserInstallation=file:///tmp/test to set a non-default user profile path.
Remaining arguments will be treated as filenames or URLs of documents to open.
soffice
DOCX 파일을 열 때 입력 필터를 적용하려면 명령 줄에 인수를 하나 더 추가 하십시오.
--infilter="Microsoft Word 2007/2010/2013 XML"
또는
--infilter="Microsoft Word 2007/2010/2013 XML"
--infilter="Microsoft Word 2007-2013 XML"
--infilter="Microsoft Word 2007-2013 XML Template"
--infilter="Microsoft Word 95 Template"
--infilter="MS Word 95 Vorlage"
--infilter="Microsoft Word 97/2000/XP Template"
--infilter="MS Word 97 Vorlage"
--infilter="Microsoft Word 2003 XML"
--infilter="MS Word 2003 XML"
--infilter="Microsoft Word 2007 XML Template"
--infilter="MS Word 2007 XML Template"
--infilter="Microsoft Word 6.0"
--infilter="MS WinWord 6.0"
--infilter="Microsoft Word 95"
--infilter="MS Word 95"
--infilter="Microsoft Word 97/2000/XP"
--infilter="MS Word 97"
--infilter="Microsoft Word 2007 XML"
--infilter="MS Word 2007 XML"
--infilter="Microsoft WinWord 5"
--infilter="MS WinWord 5"
노틸러스 스크립트
이 스크립트는 libreoffice를 사용하여 LibreOffice와 호환되는 파일을 PDF로 변환합니다.
#!/bin/bash
## PDFconvert 0.1
## by Glutanimate (https://askubuntu.com/users/81372/)
## License: GPL 3.0
## depends on python, libreoffice
## Note: if you are using a non-default LO version (e.g. because you installed it
## from a precompiled package instead of the official repos) you might have to change
## 'libreoffice' according to the version you're using, e.g. 'libreoffice3.6'
# Get work directory
base="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"
#Convert documents
while [ $# -gt 0 ]; do
document=$1
libreoffice --headless --invisible --convert-to pdf --outdir "$base" "$document"
shift
done
설치 지침은 여기를 참조하십시오 : 노틸러스 스크립트는 어떻게 설치합니까?
참고 : 나는 이 질문에서 답을 삭제 unoconv
하고 psw
파일을 전혀 다루지 않고 다른 형식으로 성공적으로 변환하지 못한다 는 것을 알았을 때 수정 된 버전을 여기에 게시 하기로 결정했습니다 . 또한 문제가있을 수 있습니다 docx
및 xlsx
형식을 지원합니다.
그러나 Libreoffice
많은 파일 형식을 완벽하게 지원합니다. 전체 문서는 유효한 입력 및 출력 형식을 자세히 공식 사이트에서 확인할 수있다.
리포지토리에서 사용할 수 있는 명령 줄 libreoffice
변환 유틸리티 또는 unoconv 를 사용할 수 있습니다. 나는 unoconv
매우 유용하다고 생각하며 아마 당신이 원하는 것입니다. Takkat 이 간단히 언급 했지만 unoconv
, 자세한 내용과 일괄 변환 원 라이너를 제공하는 것이 유용하다고 생각했습니다.
터미널을 사용하면 cd
파일이 들어있는 디렉토리로 이동 한 다음 다음과 같이 하나의 라이너를 실행하여 모든 파일을 일괄 변환 할 수 있습니다.
for f in *.odt; do unoconv -f pdf "${f/%pdf/odt}"; done
(이 one-liner는 이 답변에 나와있는 번역 스크립트를 수정 한 것 입니다.)
나중에 다른 파일 형식을 사용하려면 odt
및 pdf
지원되는 다른 입력 및 출력 형식을 대신 사용하십시오. 을 입력하여 파일 형식에 지원되는 형식을 찾을 수 있습니다 unoconv -f odt --show
. 예를 들어, 하나의 파일 사용을 변환하려면 unoconv -f pdf myfile.odt
.
프로그램에 대한 자세한 정보와 옵션은 터미널에 입력 man unoconv
하거나 Ubuntu 맨 페이지 온라인 으로 이동하여 찾을 수 있습니다 .
이 매우 간단하고 가벼운 노틸러스 스크립트는 unoconv
LibreOffice와 호환되는 선택된 파일을 PDF 형식으로 변환하는 데 사용 됩니다.
#!/bin/sh
#Nautilus Script to convert selected LibreOffice-compatible file(s) to PDF
#
OLDIFS=$IFS
IFS="
"
for filename in $@; do
unoconv --doctype=document --format=pdf "$filename"
done
IFS=$OLDIFS
최근에 Pandoc이 ODT 파일을 읽을 수있는 기능을 확보하면서 일련의 새로운 변환 경로가 열렸 기 때문에 새로운 답변을 추가하고 있습니다.
Pandoc는 파일 형식으로 읽을 때 내부 형식 인 "기본"(JSON 형식)으로 변환합니다.
그런 다음 기본 형식에서 문서를 다양한 다른 형식으로 내보낼 수 있습니다. PDF뿐만 아니라 DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki 및 기타 등등 ...
여기서 원하는 출력 형식은 PDF이므로 Pandoc이 pdf-engine 이라고 부르는 다른 경로를 선택할 수 있습니다. 현재 사용 가능한 PDF 엔진 목록은 다음과 같습니다 (Pandoc v2.7.2 이상에서 사용 가능-이전 버전에서는 더 작은 목록 만 지원할 수 있음).
pdflatex : 이 필요 라텍스 Pandoc에 추가로 설치해야합니다.
xelatex : Pandoc과 함께 XeLaTeX 를 설치 해야합니다 (일반 TeX 배포판에 추가 패키지로 제공 ).
문맥 : 이 필요 컨텍스트를 Pandoc에 추가로 설치해야합니다; ConTeXt는 가장 일반적인 TeX 배포판에 추가 패키지로 제공됩니다 .
lualatex : Pandoc 와 함께 LuaTeX 를 설치 해야합니다 (일반 TeX 배포판에 추가 패키지로 제공 ).
pdfroff : 이 필요한 GNU ROFF는 Pandoc에 추가로 설치해야합니다.
wkhtml2pdf : 이 필요한 wkhtmltopdf가 Pandoc에 추가로 설치해야합니다.
왕자 : 이 필요한 PrinceXML이는 Pandoc에 추가로 설치해야합니다.
weasyprint : Pandoc 와 함께 weasyprint 를 설치 해야합니다 .
: 나는 아직 내가 현재보다 자세히 설명 할 수없는 자신을 사용하지 않은 지금 Pandoc에 통합 좀 더하고 새로운 PDF 엔진이 있습니다 지각 및 latexmk은 .
경고 : 모든 PDF 출력에서 원본 문서의 모양이 인쇄 미리보기 또는 ODT의 PDF 내보내기와 동일 할 것으로 예상하지 마십시오! 변환 할 때 Pandoc는 레이아웃을 보존하지 않습니다 , 그것은 보존 의 내용 과 구조 단어가 제목 등, 제목을 유지하지만 전체 모양이 상당히 변경할 수 있습니다 강조 남아 강조, 단락 단락을 유지 : 문서를.
pdflatex :
pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdflatex
XeLaTeX :
pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=xelatex
루아 텍스 :
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
Weasyprint :
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"
상단 가장자리에 2cm, 다른 세 가장자리에 1.12cm의 여백이있는 사용자 정의 페이지 크기 (DIN A4보다 약간 큼)를 사용합니다.