I created an Azure Function that writes user data into specific fields of a pdf and returns that pdf as a response to the client. However, I always get a 500 error code, even though all the steps up until the last seem to work just fine and it also runs locally without issue.
Here’s my init.py:
import logging
import azure.functions as func
from PyPDF2 import PdfFileReader, PdfFileWriter
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('----- Python HTTP trigger function processed a request. -----')
BLOB_NAME = 'sheet.pdf'
reader = PdfFileReader(BLOB_NAME)
writer = PdfFileWriter()
page = reader.pages[0]
writer.addPage(page)
sheetData = {}
sheetData["Full Name"] = "Name"
writer.updatePageFormFieldValues(writer.getPage(0), sheetData)
return func.HttpResponse(writer, mimetype="application/pdf")
I can return things like str(writer.getPage(0)) instead of writer so I assume my requirements.txt works fine. It only fails when returning the HttpResponse without a body of type string. I thought adding the correct mime-type would solve the problem but it returns the same status code. I’m kind of clueless at this point.
Advertisement
Answer
Try creating a bytes object to return:
import io pdf_bytes = io.BytesIO() writer.write(pdf_bytes) pdf_bytes.seek(0) return func.HttpResponse(bdf_bytes.read(), mimetype="application/pdf")