etc./StackOverFlow

여러 PDF 파일을 하나의 PDF로 병합/변환

청렴결백한 만능 재주꾼 2023. 4. 23. 02:47
반응형

질문자 :alcohol


여러 PDF 파일을 하나의 큰 PDF 파일로 병합/변환하려면 어떻게 해야 합니까?

다음을 시도했지만 대상 파일의 내용이 예상과 달랐습니다.

 convert file1.pdf file2.pdf merged.pdf

매우 간단하고 기본적인 CLI(명령줄) 솔루션이 필요합니다. 베스트 이성애자로 파이프 병합 / 변환의 출력을 할 수 있다면 것 pdf2ps (원래 여기 내 이전에 질문 질문에 시도로 : 리눅스 배관 (변환 -> pdf2ps -> LP) ).



그 고려 pdfunite 의 일부입니다 poppler 사용보다도 간단하다, 그것은 더 높은 기회가 설치되어 있어야합니다 pdftk :

 pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

out.pdf를 제공하는 것을 out.pdf . 그렇지 않으면 명령의 마지막 파일을 덮어씁니다.


Hubert Kario

좋은 고스트 스크립트를 사용해보십시오:

 gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf

또는 저해상도 PDF용 개선된 버전의 경우에도 이 방법을 사용합니다(이를 지적해 준 Adriano에게 감사드립니다).

 gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf

두 경우 모두 출력 해상도는 변환을 사용하는 이 방법보다 훨씬 더 높고 더 좋습니다.

 convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf

이런 식으로 다른 것을 설치할 필요가 없으며 이미 시스템에 설치한 것으로 작업하면 됩니다(적어도 둘 다 기본적으로 제 상자에 들어 있습니다).

도움이 되었기를 바랍니다,

업데이트: 우선 모든 좋은 의견에 감사드립니다!! 여러분에게 도움이 될만한 팁입니다. 구글링 후 PDF 크기를 줄이는 훌륭한 트릭을 찾았습니다. 300MB의 PDF 하나를 허용 가능한 해상도로 15MB로 줄였습니다! 그리고 이 모든 것이 좋은 대본으로, 여기에 있습니다:

 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

건배!!


Gery

죄송합니다. Google과 약간의 운을 사용하여 스스로 답을 찾았습니다. :)

관심있는 사람들을 위해;

데비안 서버에 pdftk(pdf 툴킷)를 설치하고 다음 명령을 사용하여 원하는 출력을 얻었습니다.

 pdftk file1.pdf file2.pdf cat output output.pdf

또는

 gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...

이것은 차례로 pdf2ps로 직접 파이프될 수 있습니다.


alcohol

파일이 여러 개 있고 이름을 하나씩 입력하지 않으려는 경우 이것이 가장 쉬운 솔루션입니다.

 qpdf --empty --pages *.pdf -- out.pdf

SaTa

또한 pdfjoin a.pdf b.pdf 는 .pdf 및 b.pdf의 내용으로 b-joined.pdf 를 생성합니다.


rodrigob

pdfunite 는 전체 PDF를 병합하는 데 적합합니다. 당신이 원하는 경우, 예를 들어, 페이지 file2.pdf에서 file1.pdf 2-7 및 페이지 1,3,4, 당신은 사용할 필요가 pdfseparate 에 제공하기 위해 각 페이지에 대해 별도의 PDF 파일에 파일을 분할 pdfunite .

그 시점에서 당신은 아마도 더 많은 옵션을 가진 프로그램을 원할 것입니다. qpdf 는 PDF 조작을 위해 찾은 최고의 유틸리티입니다. pdftk 는 더 크고 느리며 Red Hat/Fedora는 gcj에 대한 종속성 때문에 패키징하지 않습니다. 다른 PDF 유틸리티에는 Mono 또는 Python 종속성이 있습니다. qpdf pdfseparatepdfunite 를 사용하여 페이지를 30페이지 출력 PDF(970kB 대 1,6450kB)로 조합하는 것보다 훨씬 작은 출력 파일을 생성한다는 것을 발견했습니다. 더 많은 옵션을 제공하기 때문에 qpdf 의 명령줄은 그렇게 간단하지 않습니다. file1과 file2를 병합하려는 원래 요청은 다음을 사용하여 수행할 수 있습니다.

 qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

skierpage

변환 명령을 직접 사용할 수 있습니다.

 convert sub1.pdf sub2.pdf sub3.pdf merged.pdf

Noor

python https://pypi.python.org/pypi/pdftools/1.0.6 에서 PDF 도구 사용

tar.gz 파일을 다운받아 압축을 풀고 아래와 같이 명령어를 실행합니다.

 python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3

위의 명령을 실행하기 전에 pyhton3을 설치해야 합니다.

이 도구는 다음을 지원합니다.

  • 추가하다
  • 끼워 넣다
  • 제거하다
  • 회전
  • 나뉘다
  • 병합
  • 지퍼

자세한 내용은 아래 링크에서 찾을 수 있으며 오픈 소스입니다.

https://github.com/MrLeeh/pdftools


Ravikiran Reddy Kotapati

아파치 PDFBox http://pdfbox.apache.org/

PDFMerger 이 응용 프로그램은 pdf 문서 목록을 가져와 병합하여 결과를 새 문서에 저장합니다.

사용법: java -jar pdfbox-app-xyzjar PDFMerger "원본 PDF 파일(2 ..n)" "대상 PDF 파일"


lumpchen

sejda-console , 무료 및 오픈 소스를 사용할 수 있습니다. 압축을 풀고 sejda-console merge -f file1.pdf file2.pdf -o merged.pdf

책갈피, 링크 주석, acroforms 등을 유지합니다. 실제로 재생할 수 있는 많은 옵션이 있습니다. 모두 보려면 sejda-console merge -h


Andrea Vacondio

다운로드한 모든 이미지를 하나의 pdf로 변환하려면 다음을 실행하십시오.

convert img{0..19}.jpg slides.pdf


Trupti Kini

저는 PyMuPDF(MuPDF의 Python 바인딩) 개발자 중 한 명으로 편향되어 있습니다.

당신은 그것으로 (그리고 훨씬 더) 당신이 원하는 것을 쉽게 할 수 있습니다. 스켈레톤 코드는 다음과 같이 작동합니다.

 #------------------------------------------------- import fitz # the binding PyMuPDF fout = fitz.open() # new PDF for joined output flist = ["1.pdf", "2.pdf", ...] # list of filenames to be joined for f in flist: fin = fitz.open(f) # open an input file fout.insertPDF(fin) # append f fin.close() fout.save("joined.pdf") #-------------------------------------------------

그게 다야. 페이지 범위만 선택, 공동 목차 유지, 페이지 순서 반전 또는 페이지 회전 변경 등을 위해 여러 옵션을 사용할 수 있습니다.

우리는 PyPi에 있습니다.


Jorj McKie

pdfunite 권장 사항을 두 번째로 사용합니다. 그러나 > 2k PDF 파일을 병합하려고 시도할 Argument list too long

저는 이 패키지와 두 개의 외부 패키지를 위해 Python으로 눈을 돌렸습니다. PyPDF2 (PDF와 관련된 모든 것을 처리하기 위해) 및 natsort (디렉토리 파일 이름의 "자연스러운" 정렬을 수행하기 위해). 이것이 누군가를 도울 수 있는 경우:

 from PyPDF2 import PdfFileMerger import natsort import os DIR = "dir-with-pdfs/" OUTPUT = "output.pdf" file_list = filter(lambda f: f.endswith('.pdf'), os.listdir(DIR)) file_list = natsort.natsorted(file_list) # 'strict' used because of # https://github.com/mstamy2/PyPDF2/issues/244#issuecomment-206952235 merger = PdfFileMerger(strict=False) for f_name in file_list: f = open(os.path.join(DIR, f_name), "rb") merger.append(f) output = open(OUTPUT, "wb") merger.write(output)

Greg Sadetsky

명령줄 솔루션은 아니지만 macos 사용자에게 도움이 될 수 있습니다.

  1. PDF 파일 선택
  2. 강조 표시된 파일을 마우스 오른쪽 버튼으로 클릭
  3. 빠른 작업 > PDF 만들기를 선택합니다.

DevonDahon

무료 및 오픈 소스 pdftools를 사용하는 것을 볼 수 있습니다(면책 조항: 저는 저자입니다).

기본적으로 Latex pdfpages 패키지에 대한 Python 인터페이스입니다.

pdf 파일을 하나씩 병합하려면 다음을 실행할 수 있습니다.

 pdftools --input-file file1.pdf --input-file file2.pdf --output output.pdf

디렉토리의 모든 pdf 파일을 병합하려면 다음을 실행할 수 있습니다.

 pdftools --input-dir ./dir_with_pdfs --output output.pdf

robertspierre

다음은 작동하고 구현하기 쉬운 방법입니다. 여기에서 다운로드할 수 있는 fpdffpdi 라이브러리가 모두 필요합니다.

 require('fpdf.php'); require('fpdi.php'); $files = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf']; $pdf = new FPDI(); foreach ($files as $file) { $pdf->setSourceFile($file); $tpl = $pdf->importPage(1, '/MediaBox'); $pdf->addPage(); $pdf->useTemplate($tpl); } $pdf->Output('F','merged.pdf');

billynoah

나는 Chasmo의 아이디어를 좋아하지만 다음과 같은 이점을 사용하는 것을 선호합니다.

 convert $(ls *.pdf) ../merged.pdf

convert 여러 소스 파일을 제공하면 공통 pdf로 병합됩니다. 이 명령은 모든 파일을 병합 .pdf 로 실제 디렉토리에 확장 merged.pdf 부모 디렉토리입니다.


user3709983

터미널에서 qpdf를 사용했고 Windows(Mobaxterm) 및 Linux에서 저를 위해 일했습니다. 예를 들어 새 파일 C.pdf에서 A.pdf를 B.pdf와 결합하는 명령은 다음과 같습니다.

qpdf --empty --pages oficios/A.pdf informes/B.pdf -- salida/C.PDF

추가 문서가 필요한 경우 [https://net2.com/how-to-merge-or-split-pdf-files-on-linux/][1]


Doberon

PdfCpu는 훌륭하게 작동합니다.

 pdfcpu merge c.pdf a.pdf b.pdf

https://pdfcpu.io/core/merge


Steven Penny

pdfconcat -o out.pdf 1.pdf 2.pdf

``pdfconcat은 여러 PDF 파일을 긴 PDF 문서로 연결(병합)할 수 있는 ANSI C로 작성된 작고 빠른 명령줄 유틸리티입니다.''


kleinbottle4

다음은 병합 오류를 확인하는 Bash 스크립트입니다.

몇 가지 PDF 병합으로 인해 일부 오류 메시지가 생성되는 문제가 있었습니다. 손상된 PDF를 찾는 것은 꽤 많은 시행착오를 거쳐 스크립트를 작성했습니다.

다음 Bash 스크립트는 폴더에서 사용 가능한 모든 PDF를 하나씩 병합하고 각 병합 후 성공 상태를 제공합니다. PDF가 있는 폴더에 복사하고 거기에서 실행하기만 하면 됩니다.

 #!/bin/bash PDFOUT=_all_merged.pdf rm -f "${PDFOUT}" for f in *.pdf do printf "processing %-50s" "$f ..." >&2 if [ -f "$PDFOUT" ]; then # https://stackoverflow.com/questions/8158584/ghostscript-to-merge-pdfs-compresses-the-result # -dPDFSETTINGS=/prepress status=$(gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="${PDFOUT}.new" "${PDFOUT}" "$f" 2> /dev/null) if [ "$status" ] then echo "gs ERROR: $status" >&2 else echo "successful" >&2 fi mv "${PDFOUT}.new" "${PDFOUT}" else cp "$f" "${PDFOUT}" echo "successful" >&2 fi done

예시 출력:

 processing inp1.pdf ... successful processing inp2.pdf ... successful

Markus Dutschke

또 다른 옵션은 병합할 문서 내부의 페이지도 선택하려는 경우입니다.

 pdfjoin image.jpg '-' doc_only_first_pages.pdf '1,2' doc_with_all_pages.pdf '-'

texlive-extra-utils 패키지와 함께 제공됩니다.


jgpATs2w

Ghostscript를 사용하여 디렉토리의 모든 PDF 파일을 결합하려면 find를 사용하면 됩니다. 다음은 예입니다.

 find . -name '*.pdf' -exec gs -o -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=../out.pdf {} +

현재 디렉토리에서 모든 pdf를 찾고 상위 디렉토리에서 out.pdf를 생성합니다. 고스트스크립트를 사용하여 전체 디렉토리를 빠르게 수행할 수 있는 방법을 찾고 있는 경우 유용할 수 있습니다.


Rainb

출처 : http:www.stackoverflow.com/questions/2507766/merge-convert-multiple-pdf-files-into-one-pdf

반응형