BASALT · JOURNAL
Filling in a PDF form on a Mac so the values stay put
You fill in a PDF form, save it, email it, and the recipient opens a blank document. Or the boxes look right on screen and print empty. Or the values are there but the recipient edits them before passing the file along. All three come from one structural fact: a form field's value and the drawing of that value on the page are separate objects, and different software keeps them in sync differently.
What a fillable PDF form is made of
An interactive PDF form is an AcroForm. The document catalog holds an /AcroForm dictionary with a /Fields array listing every field, plus default appearance settings and drawing resources.
Each field is a dictionary. It has a partial name in /T, a type in /FT (/Tx for text, /Btn for buttons and checkboxes, /Ch for choice lists, /Sig for signatures), and, once filled, a value in /V. Fields can nest, so a field's full name is its ancestors' names joined with periods.
Each field appears on a page through a widget annotation, which carries an appearance stream in /AP, a small content stream that draws what you see: the border, the background, and the text of the current value. That stream is what gets rendered and printed. The /V entry is what the value actually is. Two representations of the same thing, kept in agreement by whichever application last touched the file.
Why values disappear or print blank
The appearance stream was never generated. Some form producers set /NeedAppearances to true in the AcroForm dictionary, which tells the reader "the values are in /V, please draw them yourself." Readers that honor this render the form correctly. Readers that do not draw the empty appearance streams that shipped with the file, so the form looks blank even though every value is present.
The field was filled but never saved as a filled form. A reader can display typed values in memory and, on save, write a document that keeps the original empty appearances. Exporting a new copy rather than saving in place usually forces a complete write.
A non-interactive form was annotated instead of filled. If the PDF has no AcroForm, typing on it in Preview creates free text annotations, separate objects floating over the page rather than field values. Some workflows strip annotations, and the typing goes with them.
The recipient's software rebuilt the appearances. A reader that regenerates appearance streams using its own default settings can shift font, size, or alignment, so a form that looked correct on your Mac looks wrong on theirs.
Filling forms on macOS, in practice
Preview fills AcroForm fields and handles most straightforward forms. Where it struggles is with forms carrying /NeedAppearances, nested field hierarchies, calculated fields driven by JavaScript, and digital signature fields.
Two habits avoid most problems. Save a filled copy under a new name rather than overwriting the blank form. Then open that copy in a different application before sending it: if the values still show, the appearance streams exist and the recipient will see them, and if it looks blank, the values are in /V with no appearances generated and you need to flatten.
Painting over a field does not clear it
This one causes real harm, so it is worth stating without hedging.
A filled value lives in the field dictionary. Drawing a white or black rectangle over a field adds a filled path to the page content stream. It changes what is painted. It does not touch /V.
The value remains fully readable by any tool that walks the AcroForm, which includes routine form data extraction, discovery platforms, and a two-line script. A social security number covered by a white box is a social security number sitting in the file. The same failure mode with page text is discussed in why a black box is not a redaction, and form values are a category in hidden data in PDFs. If a value has to be gone, it must be removed from the field, not covered on the page.
Locking the form: flattening
Flattening converts each field's current appearance stream into ordinary page content and removes the field and its widget. Afterward the values are painted marks on the page like any other text, and there is no AcroForm left to fill, edit, or read out of. You want this for anything final.
Flattening depends on the appearance streams being correct at that moment, since those streams are exactly what gets written to the page. A form with /NeedAppearances and no generated appearances flattens to a blank page unless the tool regenerates appearances first, which is worth checking on the output. There is a fuller treatment in what flattening a PDF actually does.
One caveat: flattening is not redaction. A flattened value is now page text, extractable by copy and paste. Flattening stops editing; it does not conceal.
Frequently asked questions
How do I fill out a PDF form on a Mac?
Open the PDF in Preview or a dedicated PDF application, click into each field, type the value, then save the result under a new file name rather than overwriting the blank form. If the document has no interactive fields, Preview's text tool adds annotations on top of the page instead, which is structurally different from filled form data. Open the saved copy in a second reader to confirm the values display.
Why does my filled PDF form look blank to the recipient?
Because the values are stored in the field dictionaries but no appearance streams were generated to draw them, usually because the form sets /NeedAppearances to true. Readers that honor that flag render the values; readers that do not show the empty appearances that shipped with the blank form. Flattening before sending fixes it permanently.
Does covering a form field with a white box delete the value?
No, a white box is a filled rectangle drawn on the page and it has no effect on the field's stored value. The value remains in the field dictionary and can be read by anything that walks the form structure, including simple extraction scripts. To remove a value you must clear the field, and to remove it irreversibly you must redact.
What does flattening a PDF form do?
Flattening writes each field's current appearance onto the page as ordinary content and removes the interactive field, so the values become fixed marks rather than editable data. After flattening, nobody can change the entries and no tool can extract them as form data. The text is still selectable page content, so flattening prevents editing rather than hiding information.
Should I flatten a form before emailing it?
Yes, for anything you consider final, because flattening guarantees the recipient sees exactly what you saw and cannot alter the entries. It also removes the risk that their reader regenerates appearances with different fonts or fails to draw the values at all. Keep an unflattened copy if you might need to correct an entry later.
Why did the font change when the recipient opened my form?
Because their reader regenerated the field appearance streams using the form's default appearance settings rather than displaying the ones your application wrote. Different readers make different substitutions when a specified font is not embedded, so size and alignment can shift too. Flattening before sending locks the appearance in place.
Is a flattened form the same as a redacted one?
No, flattening makes values uneditable while leaving them fully visible and extractable as page text, whereas redaction destroys content so it cannot be recovered at all. They solve opposite problems: flattening finalizes a document you want read, redaction removes what must not be read. A form holding information that should not reach the recipient needs redaction.
Doing it in Basalt
Basalt fills a PDF form and then locks it, converting the field values into ordinary page content so nothing can be edited or read back out of the form structure. Every tool writes a new file, so your blank form and your filled draft both survive untouched. Everything runs in a sealed engine process with no network entitlement, enforced by macOS at the code-signature level, so forms holding personal or financial data never leave the Mac. Redaction with a built-in verifier, metadata cleanup, and fifteen other tools sit in the same window. It is $29 once for up to three Macs, free for 24 hours, at basaltformac.com.
Redaction that proves itself
Basalt destroys the content you mark, then re-opens the file it wrote and proves the content is gone before it saves anything. Your documents never leave your Mac.