Home › Google Form to Fillable PDF

Convert a Google Form to a Fillable PDF: Real AcroForm Fields, Not a Printout

Updated November 11, 2026 · ~10 min read

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

Key distinction: Print-to-PDF produces static text and CSS-drawn radio circles. A fillable PDF needs named field annotations (/FT /Tx, /Btn) with a defined value space. One is a document; the other is a data-entry form.

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 typeAcroForm fieldNotes
Short answerText field (/Tx)Set maxlen from any response validation
ParagraphMultiline text fieldSet the multiline flag; give it a taller rectangle
Multiple choiceRadio group (/Btn)One field name, one widget per option with distinct on-values
CheckboxesCheckbox groupEach option is its own named field; multiple can be on
DropdownChoice / combo fieldOptions become the /Opt array; set the combo flag
Linear scaleRadio groupValues 1–N with labels
Date / TimeText field + format hintPDF has no native date picker; validate on submission
File uploadNo equivalentA PDF cannot attach a respondent's file; use a link field or a separate upload step
Section / page breakPage boundary + conditional logicBranching ("go to section based on answer") is not expressible in a static AcroForm
Response validation / requiredField flags + JavaScriptOnly 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)

Troubleshooting

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.

1

Export the question structure

Number, Type, Stem, Option A–E, Answer, Marks — one CSV row per question.

2

Map each type to a field

Text / multiline text / radio group / checkbox / combo; note the unmappable ones.

3

Lay out the page

Track a y-cursor, leave a bottom margin, and start a new page before a question is split.

4

Generate fields

Use reportlab acroForm.textfield / radio with stable names from question numbers.

5

Register a Unicode font if needed

Helvetica does not cover CJK or maths glyphs.

6

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

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 →