Vue离子电容器未在android中下载文件

问题描述

我正在尝试创建一个应用程序,该应用程序根据用户提供的信息,从本地资产中获取 PDF 公式,在其上写入该信息,然后下载。

它在浏览器上运行得非常好,我成功地获取文件,但是当我创建应用程序构建并在移动设备中尝试时,没有任何反应。我收到“文件已下载!”的消息或我放置的任何日志,但该文件从未开始下载。我已经拥有存储权限。只是正常结束函数但忽略下载。

我使用 unpkg 库下载,但也尝试使用 SaveAs 并创建一个 然后单击它,但我得到了完全相同的结果。

这是完整的功能

    async generateDecklist()
    {
        const formUrl=('../../../assets/decklist.pdf');

        const formPdfBytes = await fetch(formUrl).then(res => res.arrayBuffer());

        const pdfDoc = await PDFDocument.load(formPdfBytes);
        const form = pdfDoc.getForm();

        const formFields = form.getFields()

        //START FILLING FORM

        //Deck Name & Nation
        form.getTextField('Deck NameRow1').setText(this.deck.name);
        form.getTextField('ClanRow1').setText(this.deck.nation);

        for (let i = 0; i<this.deck.decklist.length; i++)
        {
            const cs = this.deck.decklist[i];
            const card = Global.cards.find(e => e.id == cs.cardId);

            //Card Name
            const mainDeckCard = "Main deck 50 cardsRow" + (i+1);
            form.getTextField(mainDeckCard).setText(card.name);
            
            //Card Grade
            formFields[16+i].setText(card.grade.toString());

            //Card Amount
            const mainDeckAmount = "Main deck Qty" + (i+1);
            form.getTextField(mainDeckAmount).setText(cs.amount.toString());          
            
            //Card set (Only if there is only one set)
            if(card.sets.length ==1)
            {
                const mainDeckSet = 'No.'+ ((i+13)>=15? (i+14) : (i+13));
                form.getTextField(mainDeckSet).setText(card.sets[0]);
            }

            //Card trigger or sentinel
            let triggerOrSentinel ='';
            if(card.type == 'Trigger Unit')
            {
                triggerOrSentinel += card.trigger; 
            }
            if(card.keywords.includes('Sentinel'))
            {
                triggerOrSentinel += triggerOrSentinel==''? 'Sentinel' : '/Sentinel';
            }
            const mainDecktrigger = "Main deck Row" + (i+1);
            form.getTextField(mainDecktrigger).setText(triggerOrSentinel);

        }

        //END FILLING FORM


        //PROBLEM STARTS HERE
        const pdfBytes = await pdfDoc.save();

        download(pdfBytes,`${this.deck.name}_decklist.pdf`,"application/pdf");

        
        modalController.dismiss();

     }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)