【发布时间】:2018-09-11 22:57:24
【问题描述】:
我一直在 Stack Overflow 上使用一些很棒的答案来帮助解决我的问题,但我遇到了障碍。
我要做什么
- 从 CSV 行中读取值
- 将值从 CSV 写入唯一 PDF
- 处理 CSV 文件中的所有行并将每一行写入不同的唯一 PDF
我目前所拥有的
from PyPDF2 import PdfFileWriter, PdfFileReader
import io
import pandas as pd
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
# Read CSV into pandas dataframe and assign columns as variables
csv = '/myfilepath/test.csv'
df = pd.read_csv(csv)
Name = df['First Name'].values + " " + df['Last Name'].values
OrderID = df['Order Number'].values
packet = io.BytesIO()
# create a new PDF with Reportlab
can = canvas.Canvas(packet, pagesize=letter)
can.setFont("Helvetica", 12)
if OrderID is not None:
can.drawString(80, 655, '#' + str(OrderID)[1:-1])
can.setFont("Helvetica", 16)
if Name is not None:
can.drawString(315, 630, str(Name)[2:-2]
can.save()
# move to the beginning of the StringIO buffer
packet.seek(0)
new_pdf = PdfFileReader(packet)
# read your existing PDF
existing_pdf = PdfFileReader(open("Unique1.pdf", "rb"))
output = PdfFileWriter()
# add the new pdf to the existing page
page = existing_pdf.getPage(0)
page2 = new_pdf.getPage(0)
page.mergePage(page2)
output.addPage(page)
# finally, write "output" to a real file
outputStream = open("Output.pdf", "wb")
output.write(outputStream)
outputStream.close()
以上代码在以下情况下有效:
- 我指定了要写入的 PDF
- 我指定输出文件名
- CSV 只有 1 行
我需要什么帮助
- 一次从 CSV 读取一行值并将它们存储为要写入的变量
- 选择一个唯一的 PDF,并写入上面的值,然后保存该文件并选择下一个唯一的 PDF
- 循环遍历 CSV 中的所有行并在到达最后一行时结束
附加信息:独特的 PDF 将包含在一个文件夹中,因为它们每个都具有相同的布局但不同的条形码
任何帮助将不胜感激!
【问题讨论】:
-
你的问题听起来像是一个有很多待办事项的项目。您遇到的具体障碍是什么?
-
我试图在帖子中概述它们,但我无法弄清楚如何循环遍历 CSV 的每一行(现在是 pandas 数据框)并将内容输出到唯一的 PDF,然后移动到下一行并在下一行使用不同的唯一 PDF,依此类推,直到我用完行。我想我错过了: 1. 在目录中选择第一个唯一的 PDF 并将其设置为输入 PDF 2. 选择 CSV 的第一行并将要写入的内容设置为 PDF 3. 使用不同的输入 PDF 和行循环执行上述 2 个步骤每次\
-
尝试为项目编写一个带有英文语句的伪代码,检查您如何确定步骤成功的方式,将现有代码组织到伪代码中的步骤,指出具体问题以供审查。请接受您可能正在尝试一项超出您的技能水平的任务,因此如上所述将其拆分为较小的子项目应该会有所帮助。