Pretty much all of the PDF readers I have tried will work for form filling, however I have some similar issues with all of them.

I mainly use Okular or Atril.

Issue 1 is when filling out multiple fields in a PDF, it becomes extremely slow, to the point of typing some text, and having to wait for 5-10 second for it to show up and I can continue.

Issue 2 is that both Okular and Atril will insert the text with a much larger font size and/or different font than the document. Even in cases where the fields have some pre-populated text, if I touch the field, the font changes. Sometimes the change is significant enough that the text is not readable, or makes surrounding elements not readable.

The best way I have found that works is to use FireFox. The form filling in that works fast and doesn’t mess up the fonts, but the way FireFox handles saving PDFs is tedious. I can’t just click ctrl+s to save, as it prompts me to choose a location to save at and makes me overwrite the original file every time, rather than just editing it in place.

Is there any PDF reader that people are aware of that does not have these issues? Or is this something that is weird with my setup?

I’m running Debian 12 with the KDE Plasma desktop environment

  • @tsonfeir@lemm.ee
    link
    fedilink
    7
    edit-2
    5 months ago

    This isn’t a gui solution and probably is way off from your intentions, but you could use pdftk to dump the fillable field name and pdftk again to populate them with an xfdf file.

    edit, I got interested:

    #!/bin/bash
    
    # Check for required arguments
    if [ $# -ne 2 ]; then
        echo "Usage: $0 <source-pdf> <destination-pdf>"
        exit 1
    fi
    
    SOURCE_PDF=$1
    DEST_PDF=$2
    XFDF_FILE=tmp.xfdf
    
    # Extract form field names
    FIELD_NAMES=$(pdftk "$SOURCE_PDF" dump_data_fields | grep "FieldName:" | cut -d ' ' -f2-)
    
    # Start XFDF file
    echo '<?xml version="1.0" encoding="UTF-8"?>' > $XFDF_FILE
    echo '<xfdf xmlns="http://ns.adobe.com/xfdf/">' >> $XFDF_FILE
    echo '<fields>' >> $XFDF_FILE
    
    # Prompt for user input for each field
    for FIELD in $FIELD_NAMES; do
        read -p "$FIELD: " INPUT
        echo "<field name=\"$FIELD\"><value>$INPUT</value></field>" >> $XFDF_FILE
    done
    
    # Close XFDF file
    echo '</fields>' >> $XFDF_FILE
    echo '</xfdf>' >> $XFDF_FILE
    
    # Populate the PDF form
    pdftk "$SOURCE_PDF" fill_form $XFDF_FILE output "$DEST_PDF"
    
    # Clean up
    rm $XFDF_FILE
    
    echo "PDF form filled and saved as $DEST_PDF"