最近接到新的任务,要求把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挺好用的,就是我没有破解版的,自己找去吧

																

最新文章

  1. Nginx学习笔记--001-Nginx快速搭建
  2. spring mvc 获取页面日期格式数据
  3. cnblogs,我回来了
  4. 在Unity中为模型使用表情
  5. [转] 国外程序员整理的 C++ 资源大全
  6. HDU 1166 敌兵布阵 线段树
  7. CC150 - 11.6
  8. html元素背景样式大小调整
  9. sqlplus时报Linux-x86_64 Error: 13: Permission denied
  10. Layout.xml中控件的ID命名方式
  11. 【转】Sqlserver通过链接服务器访问Oracle的那些事儿!
  12. 使用like时left outer join和inner join的区别
  13. python使用smtplib库和smtp.qq.com邮件服务器发送邮件(转)
  14. HTML基础--position 绝对定位 相对定位 锚点链接
  15. 学习笔记-echarts x,y轴样式
  16. android官方技术文档翻译——工具属性
  17. spring boot本地调试服务器部署项目
  18. oss对象云存储
  19. iOS学习之--字符串的删除替换(字符串的常用处理,删除,替换)
  20. Springboot解决资源文件404,503等特殊报错,无法访问

热门文章

  1. Vue 实例挂载的实现(六)
  2. Vue.js 源码目录设计(二)
  3. IntelliJ WebStorm 最新版 安装永久破解教程【最强,可用至2099年】
  4. webpack 之搭建本地服务器
  5. 题解【洛谷P5788】【模板】单调栈
  6. C语言二维数组指针与指针数组
  7. Bootstrap框架学习
  8. AcWing 893. 集合-Nim游戏
  9. torch.cat拼接 stack拼接 分块chunk
  10. P1582 倒水(贪心 + lowbbit)