Мне нужно было сделать то же самое в последнее время - создать файл и принудительно загрузить его в расширении Chrome. Вот фрагмент кода, который делает это, используя ES6 и рекомендуемые методы:
let docContent = ... /* your content */;
let doc = URL.createObjectURL( new Blob([docContent], {type: 'application/octet-binary'}) );
chrome.downloads.download({ url: doc, filename: filename, conflictAction: 'overwrite', saveAs: true });
Вы также должны объявить правильную привилегию в manifest.json
:
"permissions" : ["downloads"]