Convert a Google Form to a Fillable PDF: Real AcroForm Fields, Not a Printout
"Convert Google Form to fillable PDF" sounds like a format change, but it is actually a different kind of document. A PDF you get from printing a form is a flat picture of questions — you cannot type into it. A fillable PDF contains interactive AcroForm fields (text boxes, radio groups, checkboxes, dropdowns) that a reader can complete in Acrobat, Preview or a browser. Google Forms has no export that creates those fields. This guide shows the field mapping, a runnable generator, and the honest list of things that cannot be carried over.
Why printing a Google Form never gives you fields
Radio buttons and checkboxes in a web form are HTML <input> elements styled with CSS. When the browser paints the page to PDF, it draws the visual circle or square — but the interactive control is gone. Print the cleanest form you like: there is no field to click and nowhere to type.
A fillable PDF instead carries an AcroForm dictionary: each field has a name (e.g. q1_lastname), a type (/Tx text, /Btn button), a rectangle on the page, flags (required, multiline, read-only), and for radio groups a set of shared values. Viewers render an actual widget over that rectangle. Nothing in Google Forms exports that dictionary, which is why "can you convert a google form to a pdf" and "fillable" are different questions.
Field mapping: Google Forms question type → PDF field
| Google Forms type | AcroForm field | Notes |
|---|---|---|
| Short answer | Text field (/Tx) | Set maxlen from any response validation |
| Paragraph | Multiline text field | Set the multiline flag; give it a taller rectangle |
| Multiple choice | Radio group (/Btn) | One field name, one widget per option with distinct on-values |
| Checkboxes | Checkbox group | Each option is its own named field; multiple can be on |
| Dropdown | Choice / combo field | Options become the /Opt array; set the combo flag |
| Linear scale | Radio group | Values 1–N with labels |
| Date / Time | Text field + format hint | PDF has no native date picker; validate on submission |
| File upload | No equivalent | A PDF cannot attach a respondent's file; use a link field or a separate upload step |
| Section / page break | Page boundary + conditional logic | Branching ("go to section based on answer") is not expressible in a static AcroForm |
| Response validation / required | Field flags + JavaScript | Only some viewers honour PDF JavaScript reliably |
Two routes to a fillable PDF
Route A — generate fields from the question structure (recommended). Export the form as structured rows (Number, Type, Stem, Option A–E, Answer), then lay out a page and create one AcroForm field per question. Field names come from the question numbers, so filled PDFs can be read back programmatically. See Export Google Form to CSV for the source schema.
Route B — rebuild in a PDF editor. Open a PDF of the printed form in Acrobat / LibreOffice Draw / a web PDF editor and place fields by hand. Fine for 5 questions, unusable for 40, and field names end up arbitrary.
Not a route: converting a Word document to PDF. A .docx with underlined blanks still has no form fields unless the Word file itself contains content controls that the converter maps to AcroForm — most do not.
Runnable generator (Python + reportlab)
Install with pip install reportlab. This reads the same CSV schema used elsewhere and emits a real fillable PDF:
import csv
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import LETTER
from reportlab.lib.colors import HexColor
W, H = LETTER
LEFT, RIGHT = 54, W - 54
rows = list(csv.DictReader(open("questions.csv", encoding="utf-8-sig")))
def build(path, with_answers=False):
c = canvas.Canvas(path, pagesize=LETTER)
c.setTitle("Exam - Fillable")
c.setFont("Helvetica-Bold", 16)
c.drawString(LEFT, H - 54, "Exam" + (" - Answer Key" if with_answers else ""))
c.setFont("Helvetica", 10)
c.drawString(LEFT, H - 74, "Name: ____________________ Date: __________")
y = H - 110
for r in rows:
qnum = r["Number"]
stem = r["Stem"]
opts = [r[k] for k in ("Option A","Option B","Option C","Option D","Option E") if r.get(k)]
c.setFont("Helvetica-Bold", 10)
c.drawString(LEFT, y, "%s. %s" % (qnum, stem[:95]))
y -= 18
if opts:
# one radio group: same field name, distinct on-values
for i, o in enumerate(opts):
c.setFont("Helvetica", 10)
c.drawString(LEFT + 34, y, "%s. %s" % (chr(65+i), str(o)[:80]))
c.acroForm.radio(
name="q%s" % qnum, tooltip="Question %s" % qnum,
value=chr(65+i), selected=False,
x=LEFT + 14, y=y - 3, size=12,
buttonStyle="circle", shape="circle",
borderColor=HexColor("#888888"), fillColor=HexColor("#ffffff"),
forceBorder=True)
y -= 20
else:
c.acroForm.textfield(
name="q%s" % qnum, tooltip="Question %s" % qnum,
x=LEFT + 14, y=y - 12, width=RIGHT - LEFT - 28, height=44,
borderStyle="inset", forceBorder=True,
fieldFlags="multiline", maxlen=1000)
y -= 58
if with_answers and r.get("Answer"):
c.setFont("Helvetica-Oblique", 9)
c.drawString(LEFT + 14, y, "Answer: %s (%s pts)" % (r["Answer"], r.get("Marks","")))
y -= 16
if y < 90:
c.showPage(); y = H - 60
c.save()
build("exam_fillable.pdf", False)
build("exam_key.pdf", True)Important details: radio widgets in one group must share the name and have different value strings, or viewers treat them as independent buttons. Use utf-8-sig for the CSV so a BOM does not turn Number into \ufeffNumber. reportlab's built-in Helvetica does not cover CJK glyphs — register a Unicode TTF (e.g. Noto Sans) with pdfmetrics.registerFont if your questions are not Latin script. And fieldFlags="multiline" is what makes a paragraph box actually accept several lines.
Convert a Google Form to a fillable PDF in 6 steps
What cannot be mapped (be honest about it)
- File upload questions. A PDF form field cannot receive an uploaded file. Provide a URL field or a separate upload channel.
- Branching logic. "Go to section 3 based on answer" needs PDF JavaScript or XFA; support across viewers is inconsistent. Flatten the flow into one linear form instead.
- Automatic grading and answer keys. AcroForm fields do not grade. Generate a separate answer-key PDF as in the code above.
- Images in questions. Draw them with
drawImage()from a reachable source; a URL reference is not an embedded image. - Response validation. Regex/number validation is web-form logic. PDF viewers implement validation differently or not at all — validate when you read the filled PDFs back.
- Collecting the answers back. A fillable PDF distributed by email comes back as many separate files. You then need an FDF/XFDF or field-extraction step to consolidate them. A Google Form does that for you automatically.
Troubleshooting
- Fields invisible in the browser, visible in Acrobat. Some browser PDF viewers do not render AcroForm widgets. Test in Acrobat Reader and Preview.
- Only one radio in a group can be selected, but all can. The widgets have different
namevalues. All radios of one question must share one name. - Text boxes reject Enter. Missing the multiline flag.
- Non-Latin text shows as black squares. Helvetica lacks those glyphs; register a Unicode font.
- The CSV first column is missing. BOM — open with
utf-8-sig. - Fields overlap the next question. Track the
ycursor and callshowPage()before it falls below your bottom margin, as in the code.
When a fillable PDF is the wrong answer
If you need offline completion, a fillable PDF is genuinely useful — field work, signed forms, printed-and-scanned workflows. If respondents are online and you need responses in one place, grading, timestamps and automatic consolidation, a Google Form is strictly better. Most people searching "fillable pdf from google form" actually want a printable copy, which is simpler: see Save Google Form as PDF or Google Form Quiz to Word Document.
Export the question structure
Number, Type, Stem, Option A–E, Answer, Marks — one CSV row per question.
Map each type to a field
Text / multiline text / radio group / checkbox / combo; note the unmappable ones.
Lay out the page
Track a y-cursor, leave a bottom margin, and start a new page before a question is split.
Generate fields
Use reportlab acroForm.textfield / radio with stable names from question numbers.
Register a Unicode font if needed
Helvetica does not cover CJK or maths glyphs.
Test in a real viewer
Acrobat Reader and Preview; confirm tab order, multiline and radio grouping.
Frequently asked questions
Can you convert a Google Form to a fillable PDF?
Not with a built-in export. Printing a form to PDF produces a flat document with no interactive fields. To get a fillable PDF you must recreate the questions as AcroForm fields — either by hand in a PDF editor or by generating them from the exported question structure with a library such as reportlab.
What is the difference between a PDF and a fillable PDF?
A normal PDF contains static text and graphics. A fillable PDF carries an AcroForm dictionary with named field annotations (/Tx for text, /Btn for buttons) that viewers render as typeable boxes, radio groups and checkboxes. Browser printing never creates those annotations.
Which Google Forms question types map to PDF fields?
Short answer → text field, paragraph → multiline text, multiple choice and linear scale → radio group, checkboxes → checkbox group, dropdown → choice/combo field, date → text field with a format hint. File upload, branching sections and automatic grading have no AcroForm equivalent.
How do I create fillable fields programmatically?
Export the question structure to CSV, then use Python reportlab: c.acroForm.textfield(name='q1', ...) for text and c.acroForm.radio(name='q2', value='A', ...) for each option of a radio group. All radios of one question must share the same name. The runnable script above does exactly this.
Do I need a fillable PDF or just a printable one?
If respondents will write by hand or type into a document, a printable PDF or a Word exam is enough and much simpler. Use a fillable PDF only when you need offline digital entry, signatures, or programmatic field extraction afterwards.
Google Form converters
ExamParser has a dedicated page for each export format. Word for an editable document, PDF for a paginated archive copy, CSV for raw data, Excel for a working spreadsheet, and Google Sheets for a live linked sheet.
Related guides
- Google Form Quiz to Word Document (printable exam)
- Save Google Form as PDF (desktop & iPad)
- Google Form to PDF (all three PDF needs)
- Export Google Form to CSV (question schema)
- Google Form to Word (.docx)
Get the structure first, then any format
Whether the target is a fillable PDF, a Word exam or a paginated handout, it starts with the same thing: the question structure — order, options, answer key and points — exported exactly as written. No AI rewriting.
Open the Google Form to Word converter →