1. PyPDF2๋ฅผ ์ฌ์ฉํ PDF ๋ณํฉ
PDF ํ์ผ ๋ณํฉ์ด ํ์ํ ์ด์
๋จผ์ , ์ PDF ํ์ผ์ ๋ณํฉํด์ผ ํ๋์ง์ ๋ํด ์์๋ณด์. ํํ "ํ๋์ PDF๊ฐ ์ด ๊ฐ์ PDF๋ณด๋ค ๋ซ๋ค!"๋ผ๊ณ ๋งํ์์. ์์ ํ๊ฒฝ์์๋ ๋ณด๊ณ ์, ์ฐ๊ตฌ ๊ฒฐ๊ณผ, ๊ธฐ์ ๋ฌธ์ ๋๋ ๋ฐํ ์๋ฃ ๋ฑ์ด ๋ณ๋์ ํ์ผ ํํ๋ก ์ ๊ณต๋ ์ ์์ด. ์ด๋ฐ ํ์ผ๋ค ์ฌ์ด๋ฅผ ๊ณ์ ์ค๊ฐ๋ฉฐ ์์ ํ๋ฉด ๋ถํธํ๊ธฐ๋ง ํ ๊ฒ ์๋๋ผ, ๋ญ๊ฐ ๋์น ์ํ๋ ์ปค. ๋ชจ๋ ํ์ผ์ ํ๋์ ๋ฌธ์๋ก ํฉ์น๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ถ์ํ๊ฑฐ๋ ๋ฐฐํฌํ๋ ๋ฐ ํจ์ฌ ์ฒด๊ณ์ ์ธ ์ ๊ทผ์ด ๊ฐ๋ฅํด.
๋ํ, PDF ํ์ผ ๋ณํฉ์ ์ดํ ์์นด์ด๋ธํํ๊ฑฐ๋ ์ต์ข ๋ณด๊ณ ์๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฌธ์์ ์ฌ๋ฌ ๋ฒ์ ์ ๊ฒฐํฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ ๋๋ ์ ์ฉํด. ๊ฐ๋ฅ์ฑ์ ๋ฌด๊ถ๋ฌด์งํด!
PyPDF2๋ฅผ ์ฌ์ฉํ PDF ๋ณํฉ ๊ธฐ๋ณธ
๋จผ์ PyPDF2๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋จ๊ณ๋ถํฐ ์์ํ์. ์ฌ๊ธฐ์๋ ์ฌ๋ฌ ๊ฐ์ PDF ํ์ผ์ ํ๋๋ก ํฉ์น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด๋ณผ ๊ฑฐ์ผ. ๋ฌผ๋ก , ์ฝ๋๋ ๊ฐ ๋จ๊ณ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ์ดํดํ ์ ์๋๋ก ์ฃผ์์ ํฌํจํ ๊ฑฐ์ผ.
import PyPDF2
# PyPDF2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ PdfMerger ๊ฐ์ฒด ์์ฑ
pdf_merger = PyPDF2.PdfMerger()
# ๋ณํฉํ๊ณ ์ ํ๋ PDF ๋ฌธ์ ๋ชฉ๋ก
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# PdfMerger ๊ฐ์ฒด์ ๊ฐ ํ์ผ ์ถ๊ฐ
for file in pdf_files:
pdf_merger.append(file)
# ๋ณํฉ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด PDF ํ์ผ๋ก ์ ์ฅ
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# ์์ ํด์ ๋ฅผ ์ํด PdfMerger ๊ฐ์ฒด ๋ซ๊ธฐ
pdf_merger.close()
print(f"๋ณํฉ๋ PDF ์์ฑ ์๋ฃ: {output_filename}")
๋ณํฉ๋ ๋ฌธ์์ ์์์ ๊ตฌ์กฐ
์ด์ PDF ๋ฌธ์๋ฅผ ๋ณํฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ผ๋ ํ์ด์ง ์์์ ๋ํด ์๊ฐํด๋ณด์.
PyPDF2๋ .append()
๋ฉ์๋์ ํ์ผ์ ๋๊ธด ์์๋๋ก ํ์ด์ง๋ฅผ
์ถ๊ฐํด. ๋ฐ๋ผ์ pdf_files
๋ฆฌ์คํธ์ ์์๊ฐ ์ต์ข
๋ฌธ์์ ์์์
์ํฅ์ ์ค๋ค๋ ์ ์ ๊ธฐ์ตํ์.
2. ๊ฐ๋ณ ํ์ด์ง ๋ณํฉ
๋ฌธ์๋ฅผ ๋ณํฉํ๋ ๋์ ๊ฐ ๋ฌธ์์ ์ผ๋ถ ํ์ด์ง๋ค๋ก ์ต์ข
๋ฌธ์๋ฅผ ๊ตฌ์ฑํ๊ณ
์ถ๋ค๋ฉด PdfMerger
๋์ PdfWriter
ํด๋์ค๋ฅผ
์ฌ์ฉํด์ผ ํด. ์์ :
import PyPDF2
# ๋ณํฉํ PDF ํ์ผ ๋ชฉ๋ก
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# ๋ณํฉ๋ PDF ์์ฑ์ ์ํ PdfWriter ๊ฐ์ฒด ์์ฑ
pdf_writer = PyPDF2.PdfWriter()
# ๊ฐ PDF ํ์ผ ์ํ
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# ๊ฐ ํ์ด์ง๋ฅผ PdfWriter์ ์ถ๊ฐ
for page_num in range(len(pdf_reader.pages)):
# ์ถ๊ฐํ์ง ์์ ํ์ด์ง๋ ๊ฑด๋๋ฐ๊ธฐ ๊ฐ๋ฅ
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# ๋ณํฉ๋ PDF ์ ์ฅ
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
์ด ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง?
-
ํ์ผ ๋ชฉ๋ก ์์ฑ:
pdf_files
๋ฆฌ์คํธ์ ๋ณํฉํด์ผ ํ PDF ๋ฌธ์ ๊ฒฝ๋ก๋ฅผ ๋ฃ์ด์ค. -
PdfWriter ์ด๊ธฐํ:
pdf_writer
๋ ์๋ก์ด PDF ํ์ผ ์์ฑ์ ์ํด ์ฌ์ฉ๋ผ. - ๊ฐ ํ์ผ ์ํ: ๊ฐ PDF ํ์ผ์ ์ฝ๊ธฐ ๋ชจ๋๋ก ์ด์ด.
-
ํ์ด์ง ์ถ๊ฐ: ํ์ผ์ ๋ชจ๋ ํ์ด์ง๋ฅผ
add_page()
๋ฉ์๋๋ฅผ ์ฌ์ฉํดpdf_writer
์ ์ถ๊ฐํด. -
๊ฒฐ๊ณผ ์ ์ฅ: ๋ชจ๋ ํ์ด์ง ์ถ๊ฐ๊ฐ ๋๋๋ฉด ์ต์ข
PDF๋ฅผ
merged_document.pdf
์ ์์ฑํด.
3. ์๋ก์ด ๋ฌธ์ ์คํ์ผ๋ง
๋ถ๋งํฌ ๋ฐ ๋ชฉ์ฐจ ์ถ๊ฐ
๋ณํฉ๋ ๋ฌธ์๊ฐ ๋๋ฌด ์ปค์ ํ์ํ๊ธฐ ํ๋ค๋ค๋ฉด? ์ด๋ด ๋ ๋ถ๋งํฌ๊ฐ ๋น์ ๋ฐํด! PyPDF2๋ ๊ฐ๋จํ ๋ถ๋งํฌ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด. ๋ณํฉํ๋ ๊ฐ ๋ฌธ์์ ๋ถ๋งํฌ๋ฅผ ์ถ๊ฐํด๋ณด์.
pdf_merger = PyPDF2.PdfMerger()
# ๋ถ๋งํฌ๋ฅผ ์ํ ํ์ด์ง ์คํ์
page_offset = 0
for file in pdf_files:
# ํ์ฌ ๋ฌธ์ ์ฝ๊ธฐ
pdf_reader = PyPDF2.PdfReader(file)
# PdfMerger์ ๋ฌธ์ ์ถ๊ฐ
pdf_merger.append(file)
# ํ์ผ ์ด๋ฆ์ผ๋ก ๋ถ๋งํฌ ์ถ๊ฐ
pdf_merger.add_bookmark(file, page_offset)
# ํ์ด์ง ์คํ์
๊ฐฑ์
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
์ด ํธ๋ฆญ์ PDF ๋ฌธ์๋ฅผ ์ฝ๊ฒ ํ์ํ ์ ์๋๋ก ๋์์ค.
๋ณํฉ๋ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ
๋ณํฉ ํ ๋ฌธ์์ ๋ฉํ๋ฐ์ดํฐ(์์ฑ์, ์ ๋ชฉ, ํค์๋ ๋ฑ)๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ ์๋ ์์ด.
import PyPDF2
pdf_files = ["file1.pdf", "file2.pdf"]
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# ๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ
pdf_writer.add_metadata({
"/Title": "๋ณํฉ๋ ๋ฌธ์",
"/Author": "์ด๋ฐ ์ด๋ฐ๋
ธํ",
"/Subject": "ํ๋งค ๋ณด๊ณ ์"
})
# ๋ณํฉ๋ ํ์ผ ์ ์ฅ
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
์ด ์ฝ๋๋ ๋ฌธ์๋ฅผ ์๋ณํ๊ณ ๊ตฌ์กฐํํ๋ ๋ฐ ์ ์ฉํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ค.
GO TO FULL VERSION