Skip to content

打印表单

高级版提供了表单打印和导出为 PDF 的功能,通过 API 方法可以方便地实现这些操作。

基本使用方法

打印表单

调用 api.print() 方法可以打印当前渲染的表单

导出为PDF

调用 api.exportPdf() 方法可以将表单导出为 PDF 文件

代码示例

vue
<template>
    <div id="app">
        <form-create v-if="rule.length" v-model="formData" v-model:api="fApi" @submit="handleSubmit" :rule="rule"
                     :option="option"></form-create>
        <el-button @click="print">打印表单</el-button>
        <el-button @click="exportPdf">下载 PDF</el-button>
    </div>
</template>
<script setup>
    import {formCreate} from 'path/to/fcDesignerPro';
    const rule = ref([]);
    const options = ref({});
    const fApi = ref(null);
    //表单数据
    const formData = ref({});
    //打印表单
    function print() {
        fApi.print();
    }
    //下载 PDF
    function exportPdf() {
        fApi.exportPdf();
    }
    function handleSubmit(formData) {
        // 模拟提交表单数据到后端
        axios.post('/api/submitFormData', formData)
            .then(response => {
                console.log('提交成功:', response.data);
            })
            .catch(error => {
                console.error('提交失败:', error);
            });
    }
    onMounted(() => {
        // 模拟从后端加载表单JSON规则
        axios.get('/api/getFormRules')
            .then(response => {
                const {ruleJson, optionsJson, formData} = response.data;
                rule.value = formCreate.parseJson(ruleJson);
                options.value = formCreate.parseJson(optionsJson);
                formData.value = formData;
            })
            .catch(error => {
                console.error('加载表单规则失败:', error);
            });
    });
</script>

定制样式

打印/导出时会给表单自动添加 .fc-print-form 类名,可以通过这个类名自定义打印样式:

css
.fc-print-form .el-input__wrapper, .fc-print-form .el-textarea__inner, .fc-print-form .el-select__wrapper {
    box-shadow: none !important;
    border: 1px solid var(--el-input-border-color, var(--el-border-color));
}