【问题标题】:Displaying a created PDF in a new tab for flutter web在 Flutter Web 的新选项卡中显示创建的 PDF
【发布时间】:2022-11-02 23:14:33
【问题描述】:

我目前正在创建一个 PDF 来显示用户输入的数据,并且我想在新选项卡中显示 pdf,以便他们可以打印或下载或关闭。

当前的PDF创建方法是:

Future<void> createPDF() async{
    final PdfDocument document = PdfDocument(); 

     document.pages.add().graphics.drawString(
        'Hello World!', PdfStandardFont(PdfFontFamily.helvetica, 20),
        brush: PdfSolidBrush(PdfColor(0, 0, 0)),
        bounds: Rect.fromLTWH(20, 60, 150, 30));

    List<int> bytes = await document.save();
    
    document.dispose();

    saveAndLaunchFile(bytes, '$NewConfig.pdf');
  }

然后打开文件我有这个方法:

Future<void> saveAndLaunchFile(List<int> bytes, String fileName) async {

Uint8List test = Uint8List.fromList(bytes);

final pdfController = PdfController(document:PdfDocument.openData(test));

PdfView(controller: pdfController);
}

我遇到的问题是打开的新选项卡显示如下:

37806870454946551310371311462502541310493248321119810613106060131047841211121013247679711697108111103131047809710310111532503248328213106262131010111010011198106131050324832111981061310606013104784121112101324780971031011151310477510510011532915132483282931310476711111711011632491310478210111511111711499101115326060626213101310477710110010597661111203291483248325357533256525093131062621310101110100111981061310513248321119810613106060131047671111171101163249131047841211121013247809710310111513104775105100115329152324832829313104780971141011101163250324832821310626213101011101001119810613105232483211198106131060601310478412111210132478097103101131047809711410111011632513248328213104767111110116101110116115329153324832823254324832823255324832829313104782101115111117114991011153260601310478011411199831011163291478068703247841011201169313104770111110116326060131047994998565353545345534851514552101565345985399504553565154485748981015048513256324832821310626213101310626213101310626213101011101001119810613105332483211198106131060601310477010510811610111432477010897116101681019911110010113104776101110103116104325713106262131011511611410197109131012094434001140114131010111010011511611410197109131010111010011198106131054324832111981061310606013104770105108116101114324770108971161016810199111100101131047761011101031161043257131062621310115116114101971091310120941140082082131010111010011511611410197109131010111010011198106131055324832111981061310606013104770105108116101114324770108971161016810199111100101131047761011101031161043250505713106262131011511611410197109131012094101143657534916133239129252135241322146718217921720554949169175213642071871051869320038539138254122147698014597301321532472302034337215176592471105216061243225561856225136314915325146710778105157252165162164620485841822824418812023711612918515227228989410517881108111961551426748148156415712843203422444621814625525521417525223914411496171408922315518373155231199452369425460117164423832424364215131201621976962111762147219361615719178233240147195177114221341688311317017616894244613148201231158207322789229127168204178122502141225624896143871835514860100184613795972178011310101110100115116114101971091310101110100111981061310563248321119810613106060131047841211121013247701111101161310478311798116121112101324784121112101491310476697115101701111101163247721011081181011161059997131047691109911110010511010332478710511065110115105691109911110010511010313106262131010111010011198106131012011410110213104832571310484848484848484848483254535351533210213104848484848484848495532484848484832110131048484848484848485550324848484848321101310484848484848484956483248484848483211013104848484848484850535732484848484832110131048484848484848525256324848484848321101310484848484848485351543248484848483211013104848484848484854505232484848484832110131048484848484848575152324848484848321101310116114971051081011141310606013104782111111116324932483282131047831051221013257131062621310131011511697114116120114101102131049485157131037376979701310

我猜是字节,但我不知道我应该从这里做什么。

任何信息?

【问题讨论】:

    标签: flutter flutter-dependencies flutter-web


    【解决方案1】:

    我建议你直接使用像native_pdf_view 这样的pub 包。 在我看来,它比你的方法更容易,你不需要重新发明轮子。

    【讨论】:

    • 这是否适用于 PDF 在技术上不是文件而是内部文档?
    • @AidenP 我想是的,如果你只有字节,你可以使用方法PdfDocument.openData((FutureOr&lt;Uint8List&gt;) data),但我很确定如果你有文件名,你可以使用方法PdfDocument.openFile('path/to/file/on/device')
    • “文件名”不是文件路径,如果用户选择下载 pdf,文件将被命名。我有字节,因为在应用程序中创建了 pdf,但您发送的第一个方法显示此错误:参数类型“类型”无法分配给参数类型“FutureOr<Uint8List>”
    • 问题已根据您提供的内容进行了更新。
    • @AidenP 您是否尝试使用 Uint8List.fromList(bytes) 将您的 List&lt;int&gt; 转换为 Uint8List ?如果这不起作用,我想我不能再帮助你了:/
    猜你喜欢
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 2019-10-27
    • 2021-10-21
    • 2020-11-26
    • 1970-01-01
    • 2018-01-15
    • 2022-10-13
    相关资源
    最近更新 更多