Как мне преобразовать этот «массив байтов» в PDF в ROR (Ruby)? - PullRequest
2 голосов
/ 22 сентября 2011

За веб-сервисом мне возвращается массив байтов. Часть из которых выглядит следующим образом ... Как я могу получить это обратно в файл? (Все началось в формате pdf)

rg1uje94ppbarWm6azwlDCJeHFFJuXlMN532v46qiyi2u/WNVHCgl10DFe64oZVSFKHN7pZ6qaulNHULZJjix33PWhzPLBVwcbptx5Husx+a7Y4q3T76KBu7pfjvXeav1emibcBSG2mMFakTv0Ho7LvYsVf57hzUq8ptL752worpSKa3L0s9IJ6Z6qIlFzDaXW4ml+3WCWvaHhUW2H+6xfFSuhjHzL8pKmd5t3aI8vsun16YY1VwLw9ivAGX+GUPRVBOTYpVqgLikJhKB7Fkpn5SJSATFAQGoviYGsw7A+B2hA0dpVlisUf0mvC2LjYwfEhcUPGmvwG3sRpGJkUPtzXWx+5a2UaTOtytnLR9qwFbXKf8s2DxS9dR/p+/rwjb9mr24p7E2e8e/ZWNP7dpX7V7xJWpLAxu67lOYhixHFPRZff6063L5q8yGXtOc/J/YP5sSev6l8trGk+c+WNXSa5+b7PfpqY/WJbkefxp4Xe5RfaHqx6oqU/o9ObBdjn3MDm3MzkvFmrvWaXfPavC9s6/8gZZdMeI3cPyp8n/nBSnpjXYUwelZlyKm+ek7Pl8YfhXM4c6uTwxhPyJvZscfRnzaSd7cwWLTs3zj8ucXWe7TGzR+NGXumfk7HqVXCAkrJVS/T+uNDXKHSh5viMpPuTzW+vXu7vIj7eOXLT47XX1vYynzBdcaGx1qo0qrEijTL81UcSZRrFwS7Zv72L/paRvgswpPVdNKe/Qq9hT2R/XQXC8De/HaGVqkC1rkqFIxCto1vzFn1+1xGpOgu+fG/I7P7NBiqm+Ri823b7edVvMEvoIuVLjvjJ7Mv3nTRcV2ZKn+CeR06xqGtHnfN6XVCyyiRx8d2DdxbM0Whz19Imd928mSGz9KpLbXZ0NZhaNX7e08BjbR4fsO+fcdZ7fnhMz0FN2rEnplApbV+aLRt/zHFc15fDpt3/6Kz77vjM+aGNgjJ/eaCpseryirwPdcHuovZPLr3sVRnp2XZwpwH5hwrK0u3vB

Я пробовал несколько вещей, наиболее близким является следующее (хотя я не уверен в выводе, если он правильный):

File.open(pdf_filename, 'w' ) do |output|
   byteArray.each_byte do | byte |
        output.print byte
        puts byte
   end
end

, который возвращает в консоли следующее, но не создает действительный файл (я предполагаю, что эти числа являются байтами в форме целого числа (base10) или что-то в этом роде)

77
52
79
89
    57
   etc..

1 Ответ

2 голосов
/ 22 сентября 2011

Я не эксперт. Я сейчас изучаю рубин (глядя на вопросы по SO, чтобы немного варьировать техники; -)

, но вы пробовали:

File.open(pdf_filename, 'wb' ) do |output|
   byteArray.each_byte do | byte |
       output.print byte
       puts byte
   end
end

или, может быть, даже (я действительно не знаю, сработает ли это). У меня не установлен Ruby для тестирования:

File.open(pdf_filename, 'wb') { |output|
    output << byteArray
}

Я получил эту информацию здесь (среди других мест):

http://strugglingwithruby.blogspot.com/2008/11/ruby-file-access.html

Файлы двоичных файлов точно такие же;вы просто добавляете ab ко второму параметру метода open.

В зависимости от формата вашего байтового массива вам может понадобиться использовать метод unpack.

File.open(pdf_filename, 'wb' ) do |output|
   output << byteArray.unpack("m")
end

Ниже приведены возможные параметры метода распаковки: http://www.codeweblog.com/ruby-string-pack-unpack-detailed-usage/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...