如何从flutter中的资产文件夹中下载PDF文件(直接)

发布于 2025-01-20 02:48:56 字数 105 浏览 2 评论 0原文

资产目录的屏幕截图

在此处输入图像描述

Screenshot of assets directory

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拒绝两难 2025-01-27 02:48:56

要在 Web 和移动设备(Android 和 iOS)的 Flutter 应用程序中下载资源 PDF

对于 Web:

import 'dart:typed_data';
import 'package:flutter/services.dart' show rootBundle;
import 'package:universal_html/html.dart' as html;

void downloadPdfWeb() async {
  final ByteData bytes = await rootBundle.load('assets/sample.pdf');
  final Uint8List list = bytes.buffer.asUint8List();
  final blob = html.Blob([list], 'application/pdf');
  final url = html.Url.createObjectUrlFromBlob(blob);
  final anchor = html.AnchorElement(href: url)
    ..setAttribute('download', 'sample.pdf')
    ..click();
  html.Url.revokeObjectUrl(url);
}

对于 Android 和 iOS iOS:

import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/services.dart' show rootBundle;
import 'package:path_provider/path_provider.dart';

void downloadPdfMobile() async {
  try {
    final ByteData bytes = await rootBundle.load('assets/sample.pdf');
    final Uint8List list = bytes.buffer.asUint8List();
    final directory = await getExternalStorageDirectory();
    final file = File('${directory?.path}/sample.pdf');
    await file.writeAsBytes(list);
    print('PDF Downloaded to ${file.path}');
  } catch (e) {
    print('Error downloading PDF: $e');
  }
}

To download an asset PDF in a Flutter application for both web and mobile (Android and iOS)

For Web:

import 'dart:typed_data';
import 'package:flutter/services.dart' show rootBundle;
import 'package:universal_html/html.dart' as html;

void downloadPdfWeb() async {
  final ByteData bytes = await rootBundle.load('assets/sample.pdf');
  final Uint8List list = bytes.buffer.asUint8List();
  final blob = html.Blob([list], 'application/pdf');
  final url = html.Url.createObjectUrlFromBlob(blob);
  final anchor = html.AnchorElement(href: url)
    ..setAttribute('download', 'sample.pdf')
    ..click();
  html.Url.revokeObjectUrl(url);
}

For Android & IOS:

import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/services.dart' show rootBundle;
import 'package:path_provider/path_provider.dart';

void downloadPdfMobile() async {
  try {
    final ByteData bytes = await rootBundle.load('assets/sample.pdf');
    final Uint8List list = bytes.buffer.asUint8List();
    final directory = await getExternalStorageDirectory();
    final file = File('${directory?.path}/sample.pdf');
    await file.writeAsBytes(list);
    print('PDF Downloaded to ${file.path}');
  } catch (e) {
    print('Error downloading PDF: $e');
  }
}
混吃等死 2025-01-27 02:48:56

试试看,

import 'dart:html' as html;

downloadFile(url) {
  html.AnchorElement(href: url)
  ..download = "your_file_name.pdf" // Specify the filename
  ..click();
}

只需确保您在此处通过正确的资产URL即可。

try this instead

import 'dart:html' as html;

downloadFile(url) {
  html.AnchorElement(href: url)
  ..download = "your_file_name.pdf" // Specify the filename
  ..click();
}

Just make sure you pass correct url of your assets here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文