如何构建一个应用程序,使用户填写可以下载为PDF或通过电子邮件发送的表单?

如何解决如何构建一个应用程序,使用户填写可以下载为PDF或通过电子邮件发送的表单?

我正在通过Phonegap(用HTML / CSS / JS编写)开发一个应用程序,目的是让用户填写一个表单(单选按钮,文本框等),然后将其下载(以PDF格式) ),也可以在完成后直接发送到特定的电子邮件(PDF格式)。

我一直在使用JavaScript函数,将页面打印为PDF,单击页面底部的按钮即可自动下载PDF。

但是我注意到从我无法在生成的PDF中突出显示打印文本的意义上,“打印为PDF”功能似乎不是真正的PDF。此外,每次打印中的信息量似乎都有限制。我无法在页面上打印超出特定长度的内容。我也不确定这是否适用于移动设备,但是在Chrome浏览器中进行测试(似乎有问题)时,它似乎可以正常工作。

在用户填写表格后创建PDF的最佳方法是什么?我已经读到我可以在服务器端创建一些东西,并在用户填写页面上的信息后,让该应用从服务器发送PDF(通过电子邮件)。听起来不错吗?

我可以这样做,以便用户填写应用程序中的信息,单击按钮,然后保存应用程序中的信息,并通过电子邮件发送所述信息的PDF吗?我不太确定如何设置服务器来做到这一点。

简而言之,我只希望我的客户在应用程序中填写信息,然后单击页面底部的按钮,然后获取该信息并吐出PDF。我很难找到一种有效的方法来真正做到这一点。

到目前为止,这是我的代码(无CSS头):

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/dom-to-image/2.6.0/dom-to-image.min.js"
        integrity="sha256-c9vxcXyAG4paArQG3xk6DjyW/9aHxai2ef9RpMWO44A=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.min.js"></script>

    <div id="content2" class="app">      
        <h1><u>4-Point Inspection</u></h1>

        <br>

        <div class="border">
        <center><form>
          <label for="fname">Insured/Applicant Name</label>
          <input type="text" id="fname" name="fname"><br><br>
        </form></center>
        <center><form>
          <label for="fname">Application/Policy #</label>
          <input type="text" id="fname" name="fname"><br><br>
        </form></center>
        <center><form>
          <label for="fname">Address Inspected</label>
          <input type="text" id="fname" name="fname"><br><br>
        </form></center>
        <center><form>
          <label for="fname">Phone</label>
          <input type="text" id="fname" name="fname"><br><br>
        </form></center>
        <center><form>
          <label for="fname">Actual Year Built</label>
          <input type="text" id="fname" name="fname"><br><br>
        </form></center>
        <center><form>
          <label for="fname">Email</label>
          <input type="text" id="fname" name="fname"><br><br>
        </form></center>
        <center><form>
          <label for="fname">Date Inspected</label>
          <input type="text" id="fname" name="fname"><br><br>
        </form></center></div>

    </div>

    <center><button class="btn btn-info" id="downloadPDF">Download PDF</button></center>

    <script>$('#downloadPDF').click(function () {
        domtoimage.toPng(document.getElementById('content2'))
            .then(function (blob) {
                var pdf = new jsPDF('l','pt',[$('#content2').width(),$('#content2').height()]);

                pdf.addImage(blob,'PNG',$('#content2').width(),$('#content2').height());
                pdf.save("test.pdf");

                that.options.api.optionsChanged();
            });
    }); </script>

这是Javascript函数(也在上面的代码结尾显示):

$('#downloadPDF').click(function () {
            domtoimage.toPng(document.getElementById('content2'))
                .then(function (blob) {
                    var pdf = new jsPDF('l',$('#content2').height()]);
    
                    pdf.addImage(blob,$('#content2').height());
                    pdf.save("test.pdf");
    
                    that.options.api.optionsChanged();
                });
        });

我只是想将这种交互式表单转换为可下载或仅通过电子邮件发送至特定电子邮件地址的PDF的方式-我只是不知道这样做的最有效方法。

任何人和所有帮助/建议将不胜感激。谢谢!

解决方法

您应该看看https://github.com/cesarvr/pdf-generator

用于生成(离线)pdf的简单插件。插件将HTML转换为 PDF,并提供了与其他应用共享pdf的机制 邮件等。如果您想添加其他内容,则暂时可以在iOS和Android中使用 平台随时贡献。

iOS HTML到PDF的转换基于这项工作BNHtmlPdfKit, 我只是添加了一个新方法,以允许在纯HTML到 PDF。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-