How to Convert DOCX to PDF in Bulk with the LibreOffice Command Line

If you have dozens of Word documents, opening each one in LibreOffice and exporting it separately is slow and easy to interrupt. A command such as soffice --convert-to pdf can convert a batch, but common snags include sending PDFs to the wrong folder, losing filenames with spaces, having LibreOffice attach the job to an already-open window, or producing PDFs whose layout differs from Word. The workflow below starts with one test file, moves to a safe batch command, and ends with checks for missing or malformed output.

These examples use the current LibreOffice command-line syntax documented in LibreOffice 26.8 Help, checked October 6, 2026. They use writer_pdf_Export, the PDF export filter for Writer documents. Conversion is suitable for ordinary DOCX files, but complex layouts still need review because LibreOffice and Microsoft Word may render some fonts and page layouts differently.

Before you convert a folder

Install LibreOffice on the computer that will run the conversion. On a server, use the package manager or installer for that system and confirm that soffice is available in the command shell. On Windows, the executable is commonly under C:\Program Files\LibreOffice\program\soffice.exe; the installation path can differ.

Prepare two separate folders: one for the source DOCX files and one for the resulting PDFs. Start with a new or empty output folder. If you convert into a folder that already contains PDFs with the same base names, LibreOffice may ask about overwriting or fail to replace them, depending on the process and environment. Keeping source and output separate also prevents an accidental conversion loop when scripts scan a directory.

For documents with uncommon typefaces, install the same fonts used by the original author before conversion. Missing fonts can change line breaks, page count, table widths, and pagination even when the DOCX opens without an error.

1. Test one DOCX first

Convert a representative document before running a large batch. In the examples below, replace the sample paths with your own:

mkdir -p "/srv/docs/converted"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"

--headless runs LibreOffice without opening its graphical interface. --convert-to selects the output format and optional filter, while --outdir names the destination. LibreOffice’s filter table lists writer_pdf_Export for PDF output from Writer. Review the test PDF before converting everything: check page breaks, headers and footers, tables, images, hyperlinks, and special characters.

If the test produces no PDF, confirm that the source path is correct, the file is readable, and the output folder is writable. Also check that LibreOffice is installed for the same account that runs the command. Official references: LibreOffice file conversion filters and LibreOffice command-line parameters.

2. 모든 DOCX 파일을 하나의 Bash 명령으로 변환합니다.

Linux 또는 macOS에서 터미널을 열고 파일 이름 패턴을 사용하세요. 해당 파일이 soffice시스템에 있는지 확인하세요 PATH. macOS에서는 LibreOffice 애플리케이션 번들 내의 실행 파일을 호출해야 할 수도 있습니다. 이 예제는 하나의 입력 폴더 안에 있는 DOCX 파일을 직접 처리합니다.

src="/srv/docs/incoming"
out="/srv/docs/converted"

mkdir -p "$out"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$src"/*.docx

Bash는 *.docxLibreOffice를 시작하기 전에 각 파일 경로를 개별 인수로 확장합니다. 각 경로명이 하나의 인수로 전달되므로 디렉터리 이름과 파일 이름의 공백이 유지됩니다. 출력 PDF는 원본 파일 이름의 어간을 유지하므로 최종 파일 이름은 '.' Annual Report.docx이 됩니다 Annual Report.pdf. 이 명령은 해당 폴더의 파일만 처리하며 하위 폴더는 검색하지 않습니다.

첫 실행 시에는 대상 폴더를 비워 두십시오. 와일드카드 명령을 실행하기 전에 입력 폴더에 의도한 파일이 있는지, PDF 파일을 저장할 디스크 공간이 충분한지 확인하십시오. Bash에서는 셸 옵션을 설정하지 않으면 일치하지 않는 와일드카드가 그대로 유지될 수 있습니다. 폴더가 비어 있을 가능성이 있는 경우, 먼저 DOCX 파일이 하나 이상 있는지 확인하거나 다음 섹션의 파일별 반복문을 사용하십시오.

3. 대용량 폴더의 경우 반복문을 사용하거나 명시적인 오류 처리를 활용하세요.

폴더에 수천 개의 문서가 있는 경우 셸은 매우 긴 인자 목록을 거부할 수 있습니다. 루프를 사용하면 모든 파일 이름을 하나의 명령으로 운영 체제에 전송하는 것을 방지하고 경로를 따옴표로 묶으면 공백도 안전하게 처리할 수 있습니다.

src="/srv/docs/incoming"
out="/srv/docs/converted"
mkdir -p "$out"

found=false
for file in "$src"/*.docx; do
  [ -f "$file" ] || continue
  found=true
  soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$file" || {
    printf 'Conversion failed: %s\n' "$file" >&2
  }
done
[ "$found" = true ] || { echo 'No DOCX files found.' >&2; exit 1; }

따옴표로 묶인 for루프는 파일 이름에 공백이 있는 경우에도 처리하며, 전체 파일 목록을 하나의 큰 인수로 보내지 않습니다. 파일당 하나의 LibreOffice 변환을 실행하므로 단일 와일드카드 명령보다 시간이 더 오래 걸릴 수 있습니다. 입력 폴더 바로 안에 있는 파일만 검색합니다. 하위 폴더를 포함하려면 재귀적 파일 검색을 사용하고 출력 레이아웃에서 각 입력 폴더를 유지해야 합니다. 그렇지 않으면 기본 이름이 같은 두 파일로 인해 PDF 파일 이름이 충돌할 수 있습니다.

4. Windows PowerShell에서 폴더 변환하기

PowerShell에서는 각 전체 경로를 단일 인수로 전달합니다. 다음 루프는 LibreOffice에서 0이 아닌 종료 코드를 반환하는 파일을 보고합니다.

$soffice = 'C:\Program Files\LibreOffice\program\soffice.exe'
$inputDir = 'C:\Documents\incoming'
$outputDir = 'C:\Documents\converted'

New-Item -ItemType Directory -Force -Path $outputDir | Out-Null
$files = Get-ChildItem -LiteralPath $inputDir -Filter '*.docx' -File
if ($files.Count -eq 0) {
    throw "No DOCX files found in $inputDir"
}

$failed = @()
foreach ($file in $files) {
    & $soffice --headless --convert-to pdf:writer_pdf_Export --outdir $outputDir $file.FullName
    if ($LASTEXITCODE -ne 0) {
        $failed += $file.FullName
    }
}
if ($failed.Count -gt 0) {
    Write-Warning "Review failed conversions: $($failed -join '; ')"
}

LibreOffice가 다른 위치에 설치되어 있는 경우 이 부분을 수정하십시오 $soffice. PowerShell Get-ChildItem예제는 재귀 호출을 지원하지 않으므로 -Recurse, 중첩된 폴더에서 출력 파일 이름이 중복되는 것을 방지하는 방법을 미리 계획해 둔 경우에만 추가하십시오. 0이 아닌 종료 상태 코드는 유용한 경고이지만, 예상되는 각 PDF 파일이 존재하고 올바르게 열리는지 확인하는 작업을 대체하지는 않습니다.

5. 프로필 충돌 및 예상치 못한 덮어쓰기를 방지하세요

LibreOffice는 사용자 프로필에 대한 쓰기 권한이 필요합니다. 이미 대화형 LibreOffice 창이 실행 중인 경우 명령줄 변환은 해당 인스턴스를 재사용하거나 잠긴 프로필을 기다릴 수 있습니다. 일회성 작업을 시작하기 전에 다른 LibreOffice 창을 닫으십시오. 자동화 또는 별도로 실행해야 하는 작업의 경우 -env:UserInstallation부트스트랩 옵션을 사용하여 변환에 전용 사용자 프로필을 제공하십시오. LibreOffice 설명서에는 기본값이 아닌 프로필을 선택하는 옵션이 나와 있습니다.

soffice -env:UserInstallation=file:///tmp/lo-bulk-profile \
  --headless --convert-to pdf:writer_pdf_Export \
  --outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"

변환을 실행하는 계정에서 쓰기 권한이 있는 프로필 디렉터리를 사용하십시오. 동일한 프로필에 대해 두 개의 LibreOffice 프로세스를 동시에 실행하지 마십시오. 각 동시 작업자마다 다른 프로필을 사용하십시오. 설치된 버전과 저장소 설정을 테스트할 때까지 자동화를 순차적으로 진행하십시오.

기존 PDF 파일을 어떻게 처리할지 결정하지 않고 프로덕션 폴더로 변환 작업을 실행하지 마십시오. 이전 결과를 백업하거나 다른 곳으로 이동하거나, 타임스탬프가 포함된 새 디렉터리에 저장하십시오. 일괄 내보내기 시 서명, 승인 또는 이전에 검토된 PDF 파일을 자동으로 덮어쓰지 않도록 하십시오.

6. 일반적인 배치 변환 오류 해결

  • 출력 파일이 없는 경우: 입력 glob 패턴 또는 PowerShell 필터를 확인하고, 공백이 포함된 경로는 따옴표로 묶고, 출력 디렉터리가 존재하고 쓰기 권한이 있는지 확인하십시오. 경로 문제와 배치 문제를 구분하기 위해 단일 파일 테스트를 다시 실행하십시오.
  • 명령은 종료되었지만 일부 파일이 누락되었습니다. 터미널 출력과 종료 상태를 확인한 다음 소스 목록과 생성된 PDF 파일을 비교하십시오. 손상되었거나 암호로 보호된 DOCX 파일은 변환 전에 복구하거나 수동으로 열어야 할 수 있습니다.
  • LibreOffice가 멈추거나 프로필이 잠겼다는 메시지가 표시되면, 실행 중인 LibreOffice 프로세스를 모두 종료하거나 전용 -env:UserInstallation프로필을 사용하여 다시 시도하십시오. LibreOffice에서 프로필을 사용 중인 동안에는 프로필 디렉터리를 삭제하지 마십시오.
  • 글꼴이나 페이지 매김 방식이 Word와 다를 수 있습니다. 필요한 글꼴을 설치하고 PDF 파일을 원본과 비교해 보세요. Word 파일과 정확히 동일한 형식으로 출력되어야 하는 문서의 경우, 문서 작성 프로그램이나 승인된 렌더링 서비스를 통해 레이아웃을 확인하십시오.
  • 기존 PDF 파일은 변경되지 않습니다. 빈 출력 폴더로 변환한 후 명령이 해당 폴더를 가리키는지 확인하십시오. 배치 작업을 다시 실행하면 이전 PDF 파일이 항상 덮어쓰여진다고 생각하지 마십시오.

LibreOffice는 필터 이름 뒤에 페이지 범위나 접근성 관련 설정과 같은 PDF 내보내기 옵션을 추가할 수 있습니다. 이러한 옵션은 모든 파일이 동일한 내보내기 동작을 가져야 할 때 유용하지만, 일괄 처리에 적용하기 전에 샘플 파일에서 테스트하는 것이 좋습니다. 공식 PDF 내보내기 명령줄 매개변수를 참조하십시오 .

7. 완성된 제품을 확인합니다.

명령이 프롬프트로 돌아왔는지 여부만으로 성공 여부를 판단하지 마십시오. 원본 DOCX 파일의 개수와 출력 폴더에 있는 PDF 파일의 개수를 비교한 다음, 배치 작업의 여러 부분에서 몇 개의 PDF 파일을 직접 확인하십시오. 각 파일이 제대로 열리는지, 예상 페이지 수를 포함하는지, 마지막 페이지, 표, 이미지, 머리글, 바닥글, 그리고 악센트가 있는 문자나 기호와 같은 문자가 모두 포함되어 있는지 확인하십시오.

Linux에서는 다음 명령어를 사용하여 비재귀적 입력 및 출력 파일의 개수를 셀 수 있습니다.

find "/srv/docs/incoming" -maxdepth 1 -type f -iname '*.docx' | wc -l
find "/srv/docs/converted" -maxdepth 1 -type f -iname '*.pdf' | wc -l

파일 개수 일치 여부는 유용한 초기 점검 사항이지만, 모든 파일이 정확하다는 것을 보장하는 것은 아닙니다. 개수가 다르면 파일 이름을 비교하여 변환이 누락된 파일을 식별하십시오. 대량 처리 또는 규제된 워크플로의 경우, 각 소스 경로, 반환 코드, 출력 경로 및 유효성 검사 결과를 기록하고 PDF 검토가 완료될 때까지 소스 파일을 보관하십시오. LibreOffice의 명령줄 워크플로는 반복적인 수동 내보내기 작업을 없애주고, 별도의 유효성 검사 과정을 통해 자동화 시스템에서 자체적으로 정확하게 판단할 수 없는 레이아웃 및 파일 수준 문제를 잡아냅니다.

댓글 남기기

Microsoft Word에서 그림을 이동하는 방법

Microsoft Word에서 그림을 이동하는 방법

워드에서 그림을 드래그하여 이동하는 방법, 텍스트 줄 바꿈을 선택하는 방법, 단락에 그림을 함께 배치하거나 페이지에 고정하는 방법, 그리고 이동하지 않는 이미지를 해결하는 방법을 알아보세요.

엑셀에 체크박스를 삽입하는 두 가지 간편한 방법

엑셀에 체크박스를 삽입하는 두 가지 간편한 방법

셀 내 도구를 사용하여 Excel에 확인란을 삽입하는 방법, 수식을 사용하여 선택된 항목 수를 계산하는 방법, 또는 이전 데스크톱 버전에서 연결된 폼 컨트롤을 추가하는 방법을 알아보세요.

엑셀에서 알파벳 자동 완성하는 방법: A부터 Z까지, 그리고 그 이상

엑셀에서 알파벳 자동 완성하는 방법: A부터 Z까지, 그리고 그 이상

Excel에서 채우기 핸들 함수, SEQUENCE 함수 또는 재사용 가능한 사용자 지정 목록을 사용하여 A부터 Z까지의 소문자 또는 Z를 초과하는 레이블을 생성할 수 있습니다.

엑셀에서 취소선을 긋는 방법: 단축키 및 단계별 방법

엑셀에서 취소선을 긋는 방법: 단축키 및 단계별 방법

Windows, Mac 및 웹에서 Excel을 사용하여 셀에 취소선을 긋고, 셀의 일부 서식을 지정하고, 값을 삭제하지 않고 줄을 제거하는 방법을 알아보세요.

Microsoft Access란 무엇인가요? Microsoft Access의 데이터베이스 도구는 어떻게 작동하나요?

Microsoft Access란 무엇인가요? Microsoft Access의 데이터베이스 도구는 어떻게 작동하나요?

Microsoft Access는 관련 레코드를 저장하고, 쿼리를 작성하고, 데이터 입력 양식을 만들고, 보고서를 생성하는 데 사용할 수 있는 Windows 데이터베이스 응용 프로그램입니다. Access의 작동 방식과 적합한 사용 사례를 알아보세요.

Word 2010에서 눈금선 높이와 너비 변경하기

Word 2010에서 눈금선 높이와 너비 변경하기

Word 2010에서 격자선 높이와 너비를 조정하고, 표시되는 선의 빈도를 변경하고, 기본 가로 및 세로 그리기 격자 간격을 설정하는 방법을 알아보세요.

Office Outlook 2010 가져오기 및 내보내기: PST 파일을 이용한 데이터 이동

Office Outlook 2010 가져오기 및 내보내기: PST 파일을 이용한 데이터 이동

Outlook 2010으로 PST 파일을 가져오거나 메일, 연락처, 일정 및 작업을 내보내는 방법을 알아보세요. 올바른 메뉴를 따라가면 폴더 누락이나 중복을 방지할 수 있습니다.

Nucleus Kernel을 사용하여 Outlook PST 암호 복구하기

Nucleus Kernel을 사용하여 Outlook PST 암호 복구하기

Kernel에서 제공하는 최신 단계를 따라 잊어버린 Outlook PST 암호를 복구하세요. 여기에는 올바른 파일을 식별하는 방법, 백업을 만드는 방법, 도구의 한계를 확인하는 방법이 포함됩니다.

파워포인트 슬라이드에 웹페이지를 삽입하는 방법

파워포인트 슬라이드에 웹페이지를 삽입하는 방법

LiveWeb 추가 기능을 사용하여 PowerPoint 슬라이드에 웹사이트를 배치하고, 크기와 새로 고침 동작을 설정하고, 발표 전에 호환성을 확인할 수 있습니다.

Access 2010 데이터베이스를 폼에서 열 수 있도록 하는 방법

Access 2010 데이터베이스를 폼에서 열 수 있도록 하는 방법

Access 2010 데이터베이스 응용 프로그램을 데이터 입력 양식으로 바로 열도록 설정하고, 개체 목록을 숨기고, 메뉴를 제한하고, 공유하기 전에 설정을 확인합니다.