As stated by @owlstead, the two applications are using different version of the open PGP protocol. Openpgpjs provides ASCII armored key using the new format while pks only accept the old format.
You need to decode the first byte of the key to notice it: Take the first 2 letters of the key and use the radix-64 table to get the binary value, then check the first 8 bits (one byte).
The first bit is always one, the second one should be one too (it means it's a new packet), then the following is the binary value corresponding to the content of the ASCII armor :
- 0 -- Reserved - a packet tag must not have this value
- 1 -- Public-Key Encrypted Session Key Packet
- 2 -- Signature Packet
- 3 -- Symmetric-Key Encrypted Session Key Packet
- 4 -- One-Pass Signature Packet
- 5 -- Secret Key Packet
- 6 -- Public Key Packet
- 7 -- Secret Subkey Packet
- 8 -- Compressed Data Packet
- 9 -- Symmetrically Encrypted Data Packet
- 10 -- Marker Packet
- 11 -- Literal Data Packet
- 12 -- Trust Packet
- 13 -- User ID Packet
- 14 -- Public Subkey Packet
In the old format, the binary value is coded on 4 bits (bits 5 to 2), in the new one, it's on 6 bits (from 5 to 0).
More details can be found in RFC 2440, chapter 4.