我想更改PDF文件的背景。 我必须每月对一些 PDF 文件进行此更改。 我希望您能协助实现此自动化。 我愿意接受使用其他库的解决方案
import fitz # PyMuPDF
from reportlab.lib.pagesizes import A4 #letter
from reportlab.pdfgen import canvas
input_pdf_path = "input_pdf_path.pdf"
output_pdf_path = "output.pdf"
background_color = (185, 231, 186)
c = canvas.Canvas(input_pdf_path, pagesize=A4)
c.setFillColorRGB(*[x / 255 for x in background_color])
c.rect(0, 0, A4[0], A4[1], fill=True)
c.setTitle("Background")
c.showPage()
c.save()
input_pdf = fitz.open(input_pdf_path)
output_pdf = fitz.open(output_pdf_path)
# I'm stuck here
output_pdf.save(output_pdf_path)
output_pdf.close()
print("Background color changed and saved to", output_pdf_path)
你可以使用
add_colored_background
功能,然后你必须定义自己的RGB颜色,你可以从这个链接找到那些,然后你可以提到你的输入和输出pdfs
from PyPDF2 import PdfReader, PdfWriter
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
import io
def add_colored_background(input_pdf_path, output_pdf_path, background_color=(255, 165, 0)):
# RGB color values for orange
r, g, b = background_color
r /= 255.0
g /= 255.0
b /= 255.0
input_pdf = PdfReader(open(input_pdf_path, 'rb'))
output_pdf = PdfWriter()
for page_num in range(len(input_pdf.pages)):
page = input_pdf.pages[page_num]
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.setFillColorRGB(r, g, b)
can.rect(0, 0, letter[0], letter[1], fill=True, stroke=False)
can.save()
packet.seek(0)
new_pdf = PdfReader(packet)
page.merge_page(new_pdf.pages[0])
output_pdf.add_page(page)
with open(output_pdf_path, 'wb') as output_file:
output_pdf.write(output_file)
if __name__ == "__main__":
input_pdf_path = "input.pdf" # Replace with your input PDF file path
output_pdf_path = "output.pdf" # Replace with the desired output PDF file path
add_colored_background(input_pdf_path, output_pdf_path)
这在 PyMuPDF 中超级简单、简短且快速:
import fitz # PyMuPDF
input_pdf_path = "input_pdf_path.pdf"
output_pdf_path = "output.pdf"
background_color = (185/255, 231/255, 186/255)
doc = fitz.open(input_pdf_path)
for page in doc:
page.draw_rect(page.rect, color=None, fill=background_color, overlay=False)
doc.ez_save(output_pdf_path)
doc.close()
print("Background color changed and saved to", output_pdf_path)
此外,您不需要任何其他库。
您可以查看以下使用 Spire.Pdf for Python 的示例(pip install Spire.Pdf):
from spire.pdf.common import *
from spire.pdf import *
# Create a PdfDocument object
doc = PdfDocument()
# Load a PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.pdf")
# Loop through each page in the document
for i in range(doc.Pages.Count):
page = doc.Pages[i]
# Set a background color for the page
page.BackgroundColor = Color.get_LightYellow()
# Save the document to a different file
doc.SaveToFile("output/SetBackgroundColor.pdf")
doc.Close()
更多详细信息可以在本文中找到:Python:为 PDF 设置背景颜色或图像
免责声明:我为开发该库的公司工作。