Poppler:如何提取可填写的表单文本?

问题描述

问题:

我在使用 Qt4 或 Qt5 的嵌入式系统(打印机)中使用 poppler 来查看和打印 pdf 文档。
我需要能够在预印材料上打印可填写的表格
这要求能够打印仅由用户填写的表单部分,而不是说明。而且它们必须适合预先打印的表格。
我可以抓取页面Poppler::FormField -

QList<Poppler::FormField *> fields = page->formFields();

但这些字段包含方向以及可填写部分。
另外,我不知道有没有办法创建一个页面并将字段放在上面——我还没有找到方法

我的尝试:

  1. 创建一个 QGraphicsScene添加包含表单域文本的文本项。
    然后渲染并打印 QGraphicsScene.
    问题:字体大小、间距、对齐方式...与屏幕上的内容不匹配,并且不适合表单。

  2. 创建一个包含与表单字段矩形对应的黑色矩形的 QImage,然后使用 QPainter::CompositionMode_SourceIn
    组成呈现的页面 问题:虽然一切都正确对齐,但我得到了方向(可能被剪裁了),这是不允许的,因为它们会打印在预印的顶部,可能会脱落并且颜色不同。

我需要什么:

  • 我想获取没有方向的字段,
  • 我需要一种方法来将它们完全按照原始页面上的方式放置在页面上。
  • 也许是一种不同的方式来执行此操作,但我还没有尝试过?

希望能同时适用于 Qt4.8 和 5.x poppler 版本,因为我的打印机型号需要不同的 Qt 版本。
操作系统:Linux Ubuntu(不同版本)
Qt使用c++(不同版本)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...