以下のような感じみたい
from pypdf import PdfReader, PdfWriter from reportlab.pdfgen import canvas import io import sys def main(): org_pdf_path = sys.argv[1] new_pdf_path = "new.pdf" pdf_reader = PdfReader( open(org_pdf_path, "rb") ) pdf_writer = PdfWriter() for page in pdf_reader.pages: page = add_rectangle_to_page(page) pdf_writer.add_page(page) # Write the modified PDF to a new file with open(new_pdf_path, "wb") as output_file: pdf_writer.write(output_file) def add_rectangle_to_page(page): packet = io.BytesIO() can = canvas.Canvas(packet, pagesize=(page.mediabox.width, page.mediabox.height)) # alpha=0に近い程,透明 can.setFillColorRGB(0.5, 0.5, 0.5, alpha=0.95) can.rect(20,20, # 左下座標 page.mediabox.width-40, # 幅 page.mediabox.height-40, # 高 fill=True) can.save() # move to the beginning of the StringIO buffer packet.seek(0) new_pdf = PdfReader(packet) # merge the rectangle with the page page.merge_page(new_pdf.pages[0] ) return page if __name__ == "__main__": main()