Productivity
PDF Processing
Create, read, and manipulate PDF documents programmatically. Use when users need to generate, extract, or convert PDF files.
Create, read, and manipulate PDF documents programmatically. Use when users need to generate, extract, or convert PDF files.
Create, read, and manipulate PDF documents programmatically.
pip install PyPDF2 reportlab
from PyPDF2 import PdfReader, PdfWriter
# Read PDF
reader = PdfReader('input.pdf')
for page in reader.pages:
text = page.extract_text()
print(text)
# Write PDF
writer = PdfWriter()
# Add pages...
writer.write('output.pdf')
from PyPDF2 import PdfReader
def extract_text(pdf_path):
reader = PdfReader(pdf_path)
text = ''
for page in reader.pages:
text += page.extract_text()
return text
from PyPDF2 import PdfReader
def get_metadata(pdf_path):
reader = PdfReader(pdf_path)
return reader.metadata
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
def create_pdf(output_path, content):
c = canvas.Canvas(output_path, pagesize=letter)
width, height = letter
# Add content
c.drawString(72, height - 72, content['title'])
c.drawString(72, height - 100, content['body'])
c.save()
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
def create_report(data):
c = canvas.Canvas('report.pdf', pagesize=letter)
width, height = letter
# Header
c.setFont('Helvetica-Bold', 24)
c.drawString(72, height - 72, data['title'])
# Body
c.setFont('Helvetica', 12)
y = height - 120
for line in data['content']:
c.drawString(72, y, line)
y -= 20
c.save()
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()
from PyPDF2 import PdfReader, PdfWriter
def split_pdf(pdf_path, page_ranges):
reader = PdfReader(pdf_path)
for i, (start, end) in enumerate(page_ranges):
writer = PdfWriter()
for page_num in range(start, end + 1):
writer.add_page(reader.pages[page_num])
writer.write(f'output_{i}.pdf')
from PyPDF2 import PdfReader, PdfWriter
def rotate_pdf(pdf_path, rotation, output_path):
reader = PdfReader(pdf_path)
writer = PdfWriter()
for page in reader.pages:
page.rotate(rotation)
writer.add_page(page)
writer.write(output_path)
from PyPDF2 import PdfReader
def get_form_fields(pdf_path):
reader = PdfReader(pdf_path)
return reader.get_form_text_fields()
from PyPDF2 import PdfReader, PdfWriter
def fill_form(pdf_path, fields, output_path):
reader = PdfReader(pdf_path)
writer = PdfWriter()
writer.append(reader)
writer.update_page_form_field_values(writer.pages[0], fields)
writer.write(output_path)