最近接到新的任务,要求把pdf的文档,编辑后发邮件

首先pdf表单提交,需要用到这个东西pdftk,GitHub地址:https://github.com/mikehaertl/php-pdftk

首先用到他需要安装,我的环境是win7,先已到项目的根目录,然后用composer安装

1、

composer require mikehaertl/php-pdftk

安装完了,在项目根目录会多出来这些东西(没有.setting,buildpath啥的应该,这些是我加到编辑器里面自动加上的)

还有一个办法是在GitHub上面直接下载 地址 而且这里面有教程啊

2、在项目根目录新建一个bootstrap.php,里面放上这串代码


<?php
 require '/vendor/autoload.php';

use mikehaertl\pdftk\Pdf;
 use mikehaertl\pdftk\FdfFile;

// 用数据数组填充表单
$pdf = new Pdf('form.pdf');
$pdf->fillForm([
'name'=>'西贝小小凤',
'sex' => '女',
])
->needAppearances()
->saveAs('filled.pdf'); // 从FDF填写表格 data.xfdf文件长啥样呢?看下面的代码
$pdf = new Pdf('form.pdf');
$pdf->fillForm('data.xfdf')
->saveAs('filled.pdf'); // 检查错误
if (!$pdf->saveAs('my.pdf')) {
$error = $pdf->getError();
}

然后保存一下,我看这个我看了好长时间没看懂,我这个理解能力也是醉了,最后请教了大佬

这是比较简单的,运行第一个,会自定下载一个filled.pdf文件,内容是你你填写的内容

第二个也是

3、从PHP数组创建XFDF/FDF文件,也就是上面的那个data.xfdf文件

use mikehaertl\pdftk\XfdfFile;
use mikehaertl\pdftk\FdfFile; $xfdf = new XfdfFile(['name' => '西贝小小凤','sex' => '女']);
$xfdf->saveAs('/path/to/data.xfdf'); 

$fdf = new FdfFile(['name' => '西贝小小凤','sex' => '女']);
$fdf->saveAs('/path/to/data.fdf');

然后生成这样的文件

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<fields>
<field name="name">
<value>西贝小小凤</value>
</field>
<field name="sex">
<value>女</value>
</field>
</fields>
</xfdf>

因为我本地环境有问题,我不能直接保存,我用了一条命令保存的

pdftk a.pdf fill_form data.fdf output  b.pdf

a.pdf是模板文件

data.fdf是填充数据

b.pdf是填充后保存的数据

我们再做的时候发现这样的一个问题,就是填充完了,但是不显示,需要点击后才显示,看网上说是字体的问题,改为微软雅黑也不可以,求各位大神指教

---------------------------分割线------------------------------------------------

因为填充的问题,我有换了新的方法,也彻底放弃了上面所有的方法,功亏一篑的感觉真难受,

下面我说一下新的方法,文件下载链接https://files.cnblogs.com/files/xbxxf/fpdm.rar

下载文件,会看到这些文件

linux系统,首先把模板文件用命令执行一下,然后作为模板文件

pdftk .pdf output fixed.pdf

然后执行ex-array.php,会直接打开pdf文件

<?php

//引入文件
require('fpdm.php');
//数组数据填充,字段要对应pdf的表单字段
$fields = array(
'name' => '你好',
'type' => '',
);
//引入模板文件
$pdf = new FPDM('fixed.pdf');
$pdf->Load($fields, true); // second parameter: false if field values are in ISO-8859-1, true if UTF-8
$pdf->Merge();
$pdf->Output();//输出文件
?>

然后执行pdf.php,会生成一个新的文件

<?php
$aa = file_get_contents('http://localhost/fpdm/ex-array.php');//上面的ex_array.php文件
$myfile = file_put_contents("1122.pdf", $aa)//生成新的填充后的1122.pdf文件
?>

但是我在框架里面测试的时候把ex_array.php文件的内容放在函数里面,生成新的文件会报错,所以还得用原生的php方法去写,

其实也很简单,我是前台提交数据,然后接收数据后填充pdf,

首先表单提交单pdf.php文件,接受数据后把file_get_contents('http://localhost/fpdm/ex-array.php?name=123&type=233');   把数据加到url里面,然后ex-array.php接受数据,填充pdf

file_put_contents 生成新的pdf,我们获得了填充后的pdf就简单了,之后再跳回方法里面去执行其他的操作

说的好乱,但是有问题请留言,趁着刚做完还能记住

再叨叨一句,说一下pdf表单的设置,对表单右键->属性,设置一下,我用的   迅捷PDF编辑器,那个Adobe的Acrobat挺好用的,就是我没有破解版的,自己找去吧

												

php 填写pdf 表单的更多相关文章

  1. Java 创建、填充PDF表单域

    表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加 ...

  2. 对pdf 表单域 或文本框的操作---动态填充PDF 文件内容

    前提:需要pdf模板:并且模板内容以pdf 文本框的形式填写 package com.test;import java.io.File;import java.io.FileOutputStream; ...

  3. PDF表单域(FormField)在HTML显示与提交数据到服务器

    1.Adobe Arobat Pro等可以编辑表单域,只有几种控件: 2.展示PDF,可用PdfObject.js,Chrome自带? @{ViewBag.Title = @ViewBag.aaa;} ...

  4. 怎样使我们的用户不再抵触填写Form表单?

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/8-tips-for-an-awesome-sign ...

  5. c#程序为PDF文件填写表单内容

    众所周知,PDF文件一般情况下是无法修改的,如果你有一张现成的PDF表格,这时想通过编程实现从数据库或者动态生成内容去填写这张表格,就会有些问题了,首先我们要解决以下2个重要的问题: 1.如何将内容写 ...

  6. java中将表单转换为PDF

    经过网上搜索大概有三种方式:PDF模板数据填充,html代码转换pdf,借用wkhtmltopdf工具 一 .PDF模板数据填充 1.新建word,在word中做出和表单一样的布局的空表单,然后另存为 ...

  7. javaWeb项目springMVC框架下利用ITextpdf 工具打印PDF文件的方法(打印表单、插入图片)

    方法一:打印PDF表单以及在PDF中加入图片 需要的资料: jar包:iTextAsian.jar ,itext-2.1.7.jar: 源码: public static void main(Stri ...

  8. Java导出Pdf格式表单

    前言   作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式 模拟需求   需求:按照下面格式导出pdf格式的学生成绩单 准备工作 Excel软件 ...

  9. 在Adobe Reader中保存PDF表单数据的方法

    通常,Adobe Reader 用户填写表单后,是无法保存所填表单的副本的.但是,对于 Reader 8 和更高版本的用户,您可以扩展其权限,使他们可以完成此操作.如果您使用的是 Acrobat Pr ...

随机推荐

  1. LAMP+discuz网站搭建过程

    LAMP+discuz网站的搭建 一. LAMP环境搭建 0x01下载配置虚拟机 网上下载centOS7 64的镜像,然后在vmware里面配置好,我配置的是linux终端桌面,运行快,占内存小. 0 ...

  2. Codeforce 459A - Pashmak and Garden (已知两点求另外两点构成正方形)

    Pashmak has fallen in love with an attractive girl called Parmida since one year ago... Today, Pashm ...

  3. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.2)-- Asynchronous Event Request command

    5.2 异步事件请求命令 异步事件用于当状态.错误.健康信息这些事件发生时通知主机软件.为了使能这个controller报告的异步事件,主机软件需要提交一个或多个异步事件请求命令到controller ...

  4. vue里使用elementUI里的下拉树表格,如何定义个性化的子表格?

    最近项目写到一个业务,首先需要展示各类分组的基本信息,然后需要点击每个分组展示该分组下子的所有具体信息 一开始我是打算用tab来展示就是首先父分组的名称就是各个不同的tab按钮,然后点击按钮再展示不同 ...

  5. python3运行调用htmltestrunner时,报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0

    之前解决过一次,又忘了,这次写下来了..百度没有的,跟我环境有关! 环境:自动化运行环境python3.6.5 上期说到了,写了一个bat来运行runallcase.py. 但是双击运行却报错:Uni ...

  6. 检测识别问题中的metrics

    之前一直记不熟各种指标的具体计算,本文准备彻底搞定这个问题,涵盖目前遇到过的所有评价指标. TP,TN,FP,FN 首先是true-false和positive-negative这两对词.以二分类为例 ...

  7. Deepin安装常用软件

    Deepin安装常用软件 安装git sudo apt-get install git sudo是Debian系列以管理员运行的前缀 卸载软件 sudo apt-get remove package_ ...

  8. 腾讯短链接url生成接口/腾讯短网址在线生成/新浪微博短链接生成器的分享

    在通常情况下,URL是由系统生成的,通常包括URI路径,多个查询参数,可以对参数进行加密和解密. 当人们要分享某个URL,比如短信,邮件,社交媒体,这就需要短URL.而短网址,顾名思义就是在长度上比较 ...

  9. 赋值SQL语句

    UPDATE TAB_DEV_MS SET DT_DETECTION_STARTTIME = TO_DATE ( '2017-01-01 00:00:00', 'YYYY-MM-DD HH24:MI: ...

  10. echo -e 实现color output

    拓展: cp  简化: c'p  -rv   /data/project/test {.txt,_bak.txt}