如何使用javascript检测用PDF标记图像的位置

时间:2016-01-19 19:26:16

标签: javascript pdf

您好

我正在尝试实现一个允许我签署PDF文档的小项目,我已经实现了一个Html 5 pad来绘制签名并将Image添加到pdf中。 我正在使用 Github 中的 signature_pad 库:

var canvas = document.querySelector("canvas");
var signaturePad = new SignaturePad(canvas);
signaturePad.toDataURL(); // save image as PNG
signaturePad.toDataURL("image/jpeg"); // save image as JPEG
signaturePad.fromDataURL("data:image/png;base64,iVBORw0K...");
signaturePad.clear();
signaturePad.isEmpty();
signaturePad.off();
signaturePad.on();

我最大的问题是如何知道用户必须将签名标记到pdf中的位置,因为pdf不一样,用户可以上传自己的pdf。

任何人都可以帮我解决这个问题,我真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我做了类似这样的事情:

  • 将PDF上传到服务器。

  • 使用GhostScript为每个页面生成图像。

  • 使用pdftk在pdf上创建报告。

  • 从报告中获取图片尺寸。请注意,某些pdf被旋转,例如,如果报告中的旋转为270(270/90 =奇数),则必须交换宽度和高度。

  • 使用jquery允许在生成的图像页面作为内容的div上拖放签名位置。将图像设置为固定宽度,以便稍后可以使用该数字计算位置。

  • 计算相对于每个页面的签名位置的绝对位置。获得每页的位置非常重要,而不是整个文档。高度对于整个文档来说不够准确,导致位置偏离多个页面。

  • 使用wkhtmltopdf生成仅包含签名的pdf叠加层。使用精确的页面大小(以mm为单位)(从报告中检索),而不是预设的页面大小。如果绝对测量值以像素(点)为单位,则必须转换为mm,反之亦然(0.352777 ..像素/ mm)。

  • 生成pdf html时,您可以使用page-break-after: always !important;开始新页面,然后在此之后将签名绝对定位在div中。

  • 使用pdftk将overlay pdf与原始文件合并。