Tickboxes do not appear in /merge/api pdfs when saving to disk

PDF files that are saved to disk are missing tickboxes
Setup: Call xfdf/merge and save the file

When I call instance.loadDocument on the file, it loads perfectly.
However, when I download the file, the tickboxes don’t appear.

I’ve tried saving the file with:

const xfdfString = await annotManager.exportAnnotations({links:false,widgets:false});

and a download link

Hi Benson,

We are able to reproduce the issue and are investigating it. We will get back to you as soon as we have a fix.


Hey there!

We are still investigating exactly what is going on here. What seems to be happening is that certain PDF viewers do not like the way we are setting the checkboxes (even though we are following PDF Spec).

This is actually somewhat common as every PDF viewer implements the PDF specification differently, and many times certain viewers will not fully implement the spec which leads to scenarios like this.

Technically this is not an issue on our end as we are following the PDF spec, however we will continue to investigate and see what we can do to make the checkboxes appear as expected on all PDF viewers.

In the meantime, it would be useful if you could send us the PDF you are testing with, and also let us know which viewer you are opening the downloaded document in.

I will reply here with any future updates.

Thank you for your patience!


The attached pdf was filled using pdfjs-express, calling merge, uploading the file, and downloading the same file.

I’ve tried viewing the file with Firefox, Chrome, Edge, and Acrobat Reader - the checkboxes did not appear in any of them.

aDefaultFileName (9).pdf (527.3 KB)

I just chose this pdf because it had a variety of controls to test with - this pdf was not created by us. If you fixed this issue for this pdf, is there a chance that it wouldn’t work for actual pdfs that we plan to distribute?


Can you send me the source file (that has not been run through the API or Express etc).

This kind of issue definitely can be file specific, but we’ll try to make it as robust as possible.


Hey again,

I pushed some changes that seem to make the resulting document work in most viewers (all except the default Chrome viewer for some reason) - let me know if you notice a difference.

If that does not work for you, then as a temporary work around, I find that the set endpoint creates better results, so you could switch to that instead of merge for now - they do the exact same thing and have the same API, so all you need to do it change your endpoint.

Give that a try and let me know how it goes.


Here’s the unfilled pdf.
form_unfilled.pdf (531.7 KB)

I’m having trouble with both APIs. With Set, it looks as though all controls have been removed. I’ve tried viewing them in Firefox

I removed { links: false, widgets: false } from exportAnnotations and it seems to work great.

Haha yes sorry, I didn’t even notice that. Having those set will exclude form fields from the XFDF which explains why you didn’t see any form fields.

We will still continue to investigate why our checkboxes don’t show up in some viewers.



Just a long overdue update on this issue.

After hours and hours of debugging we finally found a fix to make the merge endpoint work better.

We will be deploying an update to the XFDF server shortly, and also have some more fixes related to checkboxes in the next release (this week).