This repository was archived by the owner on Sep 30, 2026. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathmain.py
More file actions
200 lines (158 loc) · 5.46 KB
/
Copy pathmain.py
File metadata and controls
200 lines (158 loc) · 5.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
import os
# Path to save the scripts
base_path = '/home/jasvir/PycharmProjects/PDF/'
# List of scripts with filenames and their content
scripts = {
'merge_pdfs.py': '''\
from PyPDF2 import PdfMerger
def merge_pdfs(pdf_list, output_path):
merger = PdfMerger()
for pdf in pdf_list:
merger.append(pdf)
merger.write(output_path)
merger.close()
if __name__ == "__main__":
pdf_list = ['file1.pdf', 'file2.pdf']
output_path = 'merged.pdf'
merge_pdfs(pdf_list, output_path)
''',
'split_pdf.py': '''\
from PyPDF2 import PdfReader, PdfWriter
def split_pdf(input_path, output_folder):
pdf = PdfReader(input_path)
for page_num in range(len(pdf.pages)):
pdf_writer = PdfWriter()
pdf_writer.add_page(pdf.pages[page_num])
output_path = f"{output_folder}/page_{page_num + 1}.pdf"
with open(output_path, 'wb') as output_pdf:
pdf_writer.write(output_pdf)
if __name__ == "__main__":
input_path = 'input.pdf'
output_folder = 'output'
split_pdf(input_path, output_folder)
''',
'extract_text_from_pdf.py': '''\
from PyPDF2 import PdfReader
def extract_text_from_pdf(input_path):
pdf = PdfReader(input_path)
text = ''
for page in pdf.pages:
text += page.extract_text()
return text
if __name__ == "__main__":
input_path = 'input.pdf'
text = extract_text_from_pdf(input_path)
print(text)
''',
'add_watermark.py': '''\
from PyPDF2 import PdfReader, PdfWriter
def add_watermark(input_pdf, watermark_pdf, output_pdf):
pdf_reader = PdfReader(input_pdf)
watermark_reader = PdfReader(watermark_pdf)
pdf_writer = PdfWriter()
watermark_page = watermark_reader.pages[0]
for page in pdf_reader.pages:
page.merge_page(watermark_page)
pdf_writer.add_page(page)
with open(output_pdf, 'wb') as output_file:
pdf_writer.write(output_file)
if __name__ == "__main__":
input_pdf = 'input.pdf'
watermark_pdf = 'watermark.pdf'
output_pdf = 'watermarked.pdf'
add_watermark(input_pdf, watermark_pdf, output_pdf)
''',
'rotate_pdf_pages.py': '''\
from PyPDF2 import PdfReader, PdfWriter
def rotate_pdf_pages(input_path, output_path, rotation_degree):
pdf_reader = PdfReader(input_path)
pdf_writer = PdfWriter()
for page in pdf_reader.pages:
page.rotate_clockwise(rotation_degree)
pdf_writer.add_page(page)
with open(output_path, 'wb') as output_pdf:
pdf_writer.write(output_pdf)
if __name__ == "__main__":
input_path = 'input.pdf'
output_path = 'rotated.pdf'
rotation_degree = 90
rotate_pdf_pages(input_path, output_path, rotation_degree)
''',
'merge_pdfs_range.py': '''\
from PyPDF2 import PdfMerger
def merge_pdfs_with_range(pdf_list, page_ranges, output_path):
merger = PdfMerger()
for pdf, pages in zip(pdf_list, page_ranges):
merger.append(pdf, pages=pages)
merger.write(output_path)
merger.close()
if __name__ == "__main__":
pdf_list = ['file1.pdf', 'file2.pdf']
page_ranges = [(0, 2), (1, 3)] # Specify page ranges to merge from each PDF
output_path = 'merged_with_range.pdf'
merge_pdfs_with_range(pdf_list, page_ranges, output_path)
''',
'create_pdf_with_text.py': '''\
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def create_pdf_with_text(output_path, text):
c = canvas.Canvas(output_path, pagesize=letter)
c.drawString(100, 750, text)
c.save()
if __name__ == "__main__":
output_path = 'text.pdf'
text = 'Hello, this is a PDF with text!'
create_pdf_with_text(output_path, text)
''',
'extract_pdf_metadata.py': '''\
from PyPDF2 import PdfReader
def extract_pdf_metadata(input_path):
pdf = PdfReader(input_path)
metadata = pdf.metadata
return metadata
if __name__ == "__main__":
input_path = 'input.pdf'
metadata = extract_pdf_metadata(input_path)
print(metadata)
''',
'fill_pdf_form.py': '''\
from pdfrw import PdfReader, PdfWriter, PageMerge
def fill_pdf_form(template_path, output_path, data):
template_pdf = PdfReader(template_path)
output_pdf = PdfWriter()
for page in template_pdf.pages:
page_merge = PageMerge(page)
page_merge.add(PageMerge().add(data, prepend=True))
output_pdf.addpage(page)
output_pdf.write(output_path)
if __name__ == "__main__":
template_path = 'template.pdf'
output_path = 'filled_form.pdf'
data = {'field_name': 'value'} # Example data
fill_pdf_form(template_path, output_path, data)
''',
'remove_pages_from_pdf.py': '''\
from PyPDF2 import PdfReader, PdfWriter
def remove_pages_from_pdf(input_path, output_path, pages_to_remove):
pdf_reader = PdfReader(input_path)
pdf_writer = PdfWriter()
for page_num in range(len(pdf_reader.pages)):
if page_num not in pages_to_remove:
pdf_writer.add_page(pdf_reader.pages[page_num])
with open(output_path, 'wb') as output_pdf:
pdf_writer.write(output_pdf)
if __name__ == "__main__":
input_path = 'input.pdf'
output_path = 'without_pages.pdf'
pages_to_remove = [0, 2] # Remove the first and third pages
remove_pages_from_pdf(input_path, output_path, pages_to_remove)
'''
}
# Ensure the directory exists
os.makedirs(base_path, exist_ok=True)
# Create and write each script file
for filename, content in scripts.items():
file_path = os.path.join(base_path, filename)
with open(file_path, 'w') as file:
file.write(content)
print("Scripts have been created in", base_path)