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")