từ
pypdf2
nhập khẩu
pdffilereader, pdffilemerger, pdffilewriter
định nghĩa
get_reader(tên tệp, mật khẩu):
thử
:
tập tin cũ
=
mở
(tên tệp,
'rb'
)
ngoại trừ
ioerror là lỗi:
in
(
'Mở tập tin không thành công! '
+
đường
(lầm))
trở lại
không có
trình đọc pdf
=
pdffilereader(tệp_cũ, nghiêm ngặt
=
SAI)
nếu như
pdf_reader.isencrypted:
nếu như
mật khẩu
là
không có:
in
(
'%s file được mã hóa và yêu cầu mật khẩu! '
%
tên tập tin)
trở lại
không có
khác
:
nếu như
pdf_reader.decrypt(mật khẩu) !
=
1
:
in
(
'%sMật khẩu sai! '
%
tên tập tin)
trở lại
không có
nếu như
tập tin cũ
TRONG
người dân địa phương
():
old_file. đóng()
trở lại
trình đọc pdf
định nghĩa
encrypt_pdf(tên_tệp, mật_khẩu_mới, mật_khẩu_cũ
=
không có, tên_tệp_được_mã_hóa
=
không có):
trình đọc pdf
=
get_reader(tên_tệp, mật_khẩu_cũ)
nếu như
trình đọc pdf
là
không có:
trở lại
pdf_writer
=
pdffilewriter()
pdf_writer.appendpagesfromreader(pdf_reader)
pdf_writer.encrypt(mật_khẩu_mới)
nếu như
tên_tệp_đã_mã_hóa
là
không có:
tên_tệp_đã_mã_hóa
=
"".join(tên tệp.chia tách(
'.'
)[:
-
1
])
+
'_'
+
'được mã hóa'
+
'.pdf'
pdf_writer.viết(
mở
(tên_tệp_được_mã_hóa,
'wb'
))
định nghĩa
giải mã_pdf(tên_tệp, mật khẩu, tên_tệp đã giải mã
=
không có):
trình đọc pdf
=
get_reader(tên tệp, mật khẩu)
nếu như
trình đọc pdf
là
không có:
trở lại
nếu như
không
pdf_reader.isencrypted:
in
(
'Tệp không được mã hóa, không cần thực hiện hành động nào! '
)
trở lại
pdf_writer
=
pdffilewriter()
pdf_writer.appendpagesfromreader(pdf_reader)
nếu như
tên_tệp_giải_giải_giải
là
không có:
tên_tệp_giải_giải_giải
=
"".join(tên tệp.chia tách(
'.'
)[:
-
1
])
+
'_'
+
'đã giải mã'
+
'.pdf'
pdf_writer.viết(
mở
(tên_tệp đã giải mã,
'wb'
))
định nghĩa
split_by_pages(tên tệp, trang, mật khẩu
=
không có):
trình đọc pdf
=
get_reader(tên tệp, mật khẩu)
nếu như
trình đọc pdf
là
không có:
trở lại
số trang
=
pdf_reader.numpages
nếu như
trang <
=
1
:
in
(
'Mỗi tài liệu phải lớn hơn 1 trang! '
)
trở lại
pdf_num
=
số trang
/
/
trang
+
1
nếu như
số trang
%
trang
khác
số nguyên
(số trang
/
trang)
in
(
'File pdf được chia thành %d phần, mỗi phần có %d trang! '
%
(pdf_num, trang))
vì
tại sao_pdf_num
TRONG
phạm vi
(
1
, pdf_num
+
1
):
pdf_writer
=
pdffilewriter()
tách_tên_pdf
=
"".join(tên tệp)[:
-
1
]
+
'_'
+
đường
(cur_pdf_num)
+
'.pdf'
bắt đầu
=
trang
*
(cur_pdf_num
-
1
)
kết thúc
=
trang
*
tại sao_pdf_num
nếu như
tại sao_pdf_num !
=
pdf_num
khác
số trang
vì
Tôi
TRONG
phạm vi
(bắt đầu, kết thúc):
pdf_writer.addpage(pdf_reader.getpage(i))
pdf_writer.viết(
mở
(tên_tách_pdf,
'wb'
))
định nghĩa
split_by_num(tên tệp, số, mật khẩu
=
không có):
trình đọc pdf
=
get_reader(tên tệp, mật khẩu)
nếu như
không
trình đọc pdf:
trở lại
nếu như
số <
2
:
in
(
'Số lượng bản sao không thể ít hơn 2! '
)
trở lại
trang
=
pdf_reader.numpages
nếu như
trang < số:
in
(
'Số lượng bản sao không được lớn hơn tổng số trang trong pdf! '
)
trở lại
mỗi_pdf
=
trang
/
/
con số
in
(
'pdf có tổng cộng %d trang, chia thành %d phần, mỗi phần có %d trang! '
%
(trang, số, each_pdf))
vì
trong một
TRONG
phạm vi
(
1
, con số
+
1
):
pdf_writer
=
pdffilewriter()
tách_tên_pdf
=
"".join(tên tệp)[:
-
1
]
+
'_'
+
đường
(số)
+
'.pdf'
bắt đầu
=
mỗi_pdf
*
(trong một
-
1
)
kết thúc
=
mỗi_pdf
*
trong một
nếu như
num!
=
con số
khác
trang
in
(
đường
(bắt đầu)
+
','
+
đường
(kết thúc))
vì
Tôi
TRONG
phạm vi
(bắt đầu, kết thúc):
pdf_writer.addpage(pdf_reader.getpage(i))
pdf_writer.viết(
mở
(tên_tách_pdf,
'wb'
))
định nghĩa
merge_pdf(tên_tệp, tên_đã_hợp_nhất, mật khẩu
=
không có):
số tập tin
=
chỉ một
(tên tập tin)
pdf_sáp nhập
=
pdffilemerger(sai)
vì
Tôi
TRONG
phạm vi
(số tập tin):
nếu như
mật khẩu
là
không có:
mật khẩu
=
không có
khác
:
mật khẩu
=
mật khẩu[i]
trình đọc pdf
=
get_reader(tên_tệp[i], mật khẩu)
nếu như
không
trình đọc pdf:
trở lại
pdf_merger.append(pdf_reader)
pdf_merger.viết(
mở
(tên đã hợp nhất,
'wb'
))
định nghĩa
insert_pdf(pdf1, pdf2, insert_num, merged_name, password1
=
không có, mật khẩu2
=
không có):
pdf1_đọc
=
lấy_trình_đọc(pdf1, mật khẩu1)
pdf2_đọc
=
lấy_trình_đọc(pdf2, mật_khẩu2)
nếu như
không
pdf1_đọc
hoặc
không
trình đọc pdf2:
trở lại
pdf1_trang
=
pdf1_reader.numpages
nếu như
chèn_số <
0
hoặc
chèn_số_trang > pdf1:
in
(
'Vị trí chèn không bình thường. Số trang bạn muốn chèn là: %d. File pdf1 có tổng cộng: %d trang! '
%
(insert_num, pdf1_pages))
trở lại
m_pdf
=
pdffilemerger(sai)
m_pdf.append(pdf1)
m_pdf.merge(insert_num, pdf2)
m_pdf.viết(
mở
(tên đã hợp nhất,
'wb'
))
nếu như
__tên__
=
=
'__chủ yếu__'
:
chia_theo_số(
'ex2.pdf'
,
3
)
Tôi là một lập trình viên xuất sắc, rất giỏi!