Генерация PDF-файлов в Ionic из pdf-строки, уже сгенерированной на стороне клиента, и сохранение ее на устройстве

0

Я работаю над приложением Ionic hydrid. Я хочу создать pdf файл из уже созданного pdfstring на стороне клиента и сохранить его на устройстве локально.

Создал pdfstring с помощью jspdf doc.output("datauristring");

pdfstring выглядит примерно так:

данные: применение /PDF; base64, JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAyIDAgUgovQ29udGVudHMgNCAwIFI + PgplbmRvYmoKNCAwIG9iago8PC9MZW5ndGggMTA3Nz4 + CnN0cmVhbQowLjU3IHcKMCBHCkJUCi9GMSAxMCBUZgoxMCBUTAowIGcKMjEyLjYwIDgxMy41NCBUZAooT3JkZXIgTnVtYmVyIDogMS0zMjAzNCkgVGoKRVQKQlQKL0YxIDEwIFRmCjEwIFRMCjAgZwo1Ni42OSA3ODUuMjAgVGQKKE9yZGVyIFR5cGUgOiBTZXJ2aWNlIE9yZGVyKSBUagpFVApCVAovRjEgMTAgVGYKMTAgVEwKMCBnCjU2LjY5IDc1Ni44NSBUZAooT3JkZXIgU3RhdHVzIDogUGVuZGluZykg....

Я хотел бы сохранить вышеуказанный контент в pdf файл и сохранить его в том месте, откуда приложение может получить доступ в случае необходимости и отобразить его пользователю.

попробовал следующее, но, похоже, не работает

$cordovaFile.createFile(fileDir + 'test/one/Invoice.pdf',true)
.then(function(fileEntry) {
                        });

$cordovaFile.writeFile( fileDir + 'test/one/Invoice.pdf',$scope.pdfString, '')
.then(function(result) {
});
Теги:
ionic-framework
pdf-generation

1 ответ

0

Добавить эту фабрику:

 angular.module('ionic.utils', [])
.factory('$localstorage', ['$window', function($window) {
  return {
    set: function(key, value) {
      $window.localStorage[key] = value;
    },
    get: function(key, defaultValue) {
      return $window.localStorage[key] || defaultValue;
    },
    setObject: function(key, value) {
      $window.localStorage[key] = JSON.stringify(value);
    },
    getObject: function(key) {
      return JSON.parse($window.localStorage[key] || '{}');
    }
  }
}]);

Затем вы можете поместить его в контроллер или запустить функцию:

angular.module('app', ['ionic', 'ionic.utils'])
.run(function($localstorage) {

  $localstorage.set('name', 'Max');
  console.log($localstorage.get('name'));
  $localstorage.setObject('post', {
    name: 'Thoughts',
    text: 'Today was a good day'
  });

  var post = $localstorage.getObject('post');
  console.log(post);
});

для того чтобы Ios не нарушал свои правила резервного копирования icloud, вы должны установить

<!-- config.xml -->

<?xml version='1.0' encoding='utf-8'?>
<widget ...>
  <preference name="BackupWebStorage" value="none" />
</widget>

В файле конфигурации xml. Также поймите, что локальное хранилище никогда не бывает таким хорошим, как БД.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню