4

I'm dealing with a web scraper written in jQuery. What I need is to get a PDF file in a Base64 encoded string.

I get the PDF with an AJAX Submit:

$( '#myform' ).ajaxSubmit(function(data) {
    alert.console(data);
});

Console displays:

"%PDF-1.4 %���� 3 0 obj <>/Subtype/Form/BBox[0 0 361 50]/Matrix [1 0 0 1 0 0]/Length 3172/FormType 1/Filter/FlateDecode>>stream x��\M�%����)�BJ�����+/����l��N��I�b����#+UO���?ׯ�����?ׯ���%��>���O?����O��o�����~������������ϰ��Ր���W����[�>�3<�������B%<��Ld����K�����ij���/��-�5�[Z&�����߶���7p"m��f����&�W�Q�c ����f�ǟI�9,�JW� �p4�#���+�ZS� �pv�3I�� jHEL��˟I z��꽰��Z 0�.�(HWHz�^���-Ц�˟I b�����B�]�LR�BI� ��T���8����@_����n�@�|$��^�v}] [...]

Ok. Now I need the Base64 string.

I've used FileReader, jQuery Base64 plugins, but the encoded string it's always invalid:

JVBERi0xLjQKJe+/ve+/ve+/ve+/vQozIDAgb2JqCjw8L1R5cGUvWE9iamVjdC9SZXNvdXJjZXM8PC9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXT4+L1N1YnR5cGUvRm9ybS9CQm94WzAgMCAzNjEgNTBdL01hdHJpeCBbMSAwIDAgMSAwIDBdL0xlbmd0aCAzMTcyL0Zvcm1UeXBlIDEvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0KeO+/ve+/vVxN77+9Je+/ve+/ve+/ve+/vSnvv70EQkrvv73vv73vv70VBu+/ve+/vSsvDO+/vQzvv70Y77+9B++/vWzvv73vv71O77+977+9GEnvv71i77+9Du+/ve+/vQvvv70jKwJVT++/vR0V77+977+9Xz/Xr++/ve+/ve+/ve+/ve+/vT/Xr++/ve+/ve+/vSXvv73vv70+A++/ve+/ve+/vU8/77+977+9E3/vv73vv71P77+977+9H2/vv71/77+977+977+977+9H37vv73vv73vv73vv73vv71ff++/ve+/ve+/ve+/ve+/ve+/ve+/vc+w77+977+91ZDvv73vv70P77+9V++/ve+/ve+/ve+/vVvvv70+77+9Mzzvv73vv73vv73vv71/77+977+9H++/vUIlPO+/ve+/vUxk77+977+977+9He+/vUvvv73vv73vv70f77+977+9aWrvv73vv73vv70v77+9Gu+/vS3vv70177+9W1om77+977+977+977+9HO+/vd+ [...]

If I save the file into my FS then I can execute:

$ base64 ~/tmp/myfile.pdf

and I get a valid Base64 string:

JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlL1hPYmplY3QvUmVzb3VyY2VzPDwvUHJvY1Nl dCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0+Pi9TdWJ0eXBlL0Zvcm0vQkJv eFswIDAgMzYxIDUwXS9NYXRyaXggWzEgMCAwIDEgMCAwXS9MZW5ndGggMzE3Mi9Gb3JtVHlwZSAx L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCnicrVxBjiS3Ebz3K+YFRJGsYpFfMKCDTjoYvhm2 YXgFrC7+vorMJDMq6YOBCexBwVTmRGCm2TmxsV0/P8fXdXz9eP5zfP3nk0tc/706+Nfnt8/vn/j1 30/6+svT9O9PPL5++fz1b8fX3z8/nz/fGv9/hrXnqYac5X8oPsJxlBSfwvHCr+H+549/fq7QLvlC JVyXtAxkg6PFHfVL/ePz60vtahqaX6f/RX6HeMrsHe5TWgay0dHijhzyqt+2Hw9q+g0cyEbr+7tZ 1zf62+TxCHeU4ZiCfj8Hslnp8WcSfw6T/gy1Kv+AQNib3JFEX0K5lf8OqSj/gEA4uvyZpOAOtaiC Gs75ExgQGEeXP5MUtHDo1Xtg0Ze1QGAcXf7MUZCOkPT+PbDqa1ugTUuXP5MUxHDqJUwpHFPBgMA4 [...]

THAT is what I need. Can anyone help me?

Thanks in advance.

Abel Osorio
  • 843
  • 8
  • 13
  • 1
    Show the response `Content-Type` header and the code you currently use to do the client-side base64 conversion. Also, just a thought: If you need a base64 string on the client, maybe you should make your server return a base64 string instead of a binary file. – Tomalak Oct 18 '16 at 14:10
  • May be this can help: http://stackoverflow.com/questions/19124701/get-image-using-jquery-ajax-and-decode-it-to-base64 – arnabkaycee Oct 18 '16 at 14:12

0 Answers0