Amr Rady
Amr Rady

Reputation: 1197

How to solve "pdftk: Bad CPU type in executable" on Mac?

I want to use pdftk but I always get this error zsh: bad CPU type in executable: pdftk I reinstalled pdftk and I changed the terminal from bsh to zsh as I found in my search for how to solve this error but without any success. I'm using the latest MacOS version "Catalina v10.15.4"

Upvotes: 73

Views: 28819

Answers (5)

Peram
Peram

Reputation: 69

Using masOS 13.3.1:

brew install pdftk-java
brew link pdftk-java

Make sure you have java installed

Upvotes: 1

sap51
sap51

Reputation: 55

Following Ben's answer, here is a bash script that search for the latest available PDFTK version from their website:

#!/bin/bash

PDFTK_VERSION="2.02"
MACOS_VERSION_MAJOR_START="10"
MACOS_VERSION_MAJOR_END="12"
MACOS_VERSION_MINOR_START="0"
MACOS_VERSION_MINOR_END="20"
DOWNLOAD_URL="https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-PDFTK_VERSION-mac_osx-MACOS_VERSION_MAJOR.MACOS_VERSION_MINOR-setup.pkg"

# Check if we want debug mode or not
if [[ "$1" == "debug" ]]; then
    DEBUG="YES"
fi

# Function that check if a file exist with curl
check_url_exist() {
    http_code=$( curl --output /dev/null --silent --head --fail -w '%{http_code}' "$1" 2>/dev/null )
    if [[ "$http_code" == "200" ]]; then
        echo "YES"
    else
        echo "NO"
    fi
}

echo "INFO - Searching for PDFTK version $PDFTK_VERSION, from MacOS version $MACOS_VERSION_MAJOR_START.$MACOS_VERSION_MINOR_START to $MACOS_VERSION_MAJOR_END.$MACOS_VERSION_MINOR_END."

# Search for available versions
MAJOR="$MACOS_VERSION_MAJOR_START"
while [ $MAJOR -le $MACOS_VERSION_MAJOR_END ]; do
    MINOR="$MACOS_VERSION_MINOR_START"
    while [ $MINOR -le $MACOS_VERSION_MINOR_END ]; do
        THIS_DOWNLOAD_URL=$( echo "$DOWNLOAD_URL" | sed -e "s|PDFTK_VERSION|$PDFTK_VERSION|g" | sed -e "s|MACOS_VERSION_MAJOR|$MAJOR|g" | sed -e "s|MACOS_VERSION_MINOR|$MINOR|g" )
        if [[ $( check_url_exist "$THIS_DOWNLOAD_URL" ) == "YES" ]]; then
            echo "FOUND     - Found version ! PDFTK:$PDFTK_VERSION, MacOS:$MAJOR.$MINOR. URL: $THIS_DOWNLOAD_URL"
        elif [[ "$DEBUG" == "YES" ]]; then
            echo "NOT FOUND - PDFTK:$PDFTK_VERSION, MacOS:$MAJOR.$MINOR. URL: $THIS_DOWNLOAD_URL"
        fi
        MINOR=$(( MINOR + 1))
        sleep 0.2
    done
    MAJOR=$(( MAJOR + 1))
done

And the result, at the date of 2022-10-15, is :

$ bash ./download_pdftk_mac.sh
INFO      - Searching for PDFTK version 2.02, from MacOS version 10.0 to 12.20.
FOUND     - Found version ! PDFTK:2.02, MacOS:10.6. URL: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.6-setup.pkg
FOUND     - Found version ! PDFTK:2.02, MacOS:10.11. URL: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg

Upvotes: 5

gatorback
gatorback

Reputation: 1537

Homebrew:

brew install pdftk-java

https://formulae.brew.sh/formula/pdftk-java

Compatible with Catalina, Big Sur

Upvotes: 21

kkbt
kkbt

Reputation: 11

As a preliminary solution, I was successful in installing the Intel version of homebrew in /usr/local (in parallel to the M1 version in /opt/homebrew) using Apple's Rosetta 2 layer. The Intel packages (homebrew formulae) seem to work without any problem on the Apple M1 architecture. Both pdftk and pandoc work even without prefixing 'arch -x86_64' (e.g., the command 'pandoc sample.md -o sample.html' as in the example linked below).

Commands:

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
alias ibrew='arch -x86_64 /usr/local/bin/brew'
ibrew analytics off
ibrew install pdftk-java
ibrew install pandoc

Further information:

Upvotes: 1

Ben
Ben

Reputation: 2195

This version of pdftk works on macOS Catalina (10.15).

https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-mac_osx-10.11-setup.pkg

The link on the website is not up to date. That means by clicking the download button on the website you get an old version.

Upvotes: 200

Related Questions