如何在HTML文档中包含文本,使其在PDF文档中“存在”(通过wkhtmltopdf
生成),但在查看或打印时不可见?
约束:
文本必须以正确的大小显示在正确的位置,因为目的是使用自动工具查找文本并在页面上发现其坐标和大小。
解决方案必须只与文本有关,因为我试图保持这个简单的CSS样式。任何“将其隐藏在另一个元素之下”并不能解决问题,因为在这些坐标中可能没有任何其他元素。
解决方案可能不依赖于页面上已有的内容;我无法检查页面上的背景元素,因为我无法动态地确定这些元素。该文本本身应该是不可见的。
使用自动工具(例如pdfgrep
)必须找到该文字,这意味着wkhtmltopdf
必须将文字放在文档文件中。
所以“display:none”样式或“opacity:0”不起作用,因为这使得PDF文档中的文本根本不存在。
所以我想要一个HTML文档,在文档中放置一个带有内联CSS样式的文本元素“FOO”,并通过wkhtmltopdf
处理它;然后,pdfgrep FOO
应该找到文本,文本位置和大小应该是正确的,但文本不应该以HTML格式显示,不会在查看PDF时显示,也不会在打印时显示。
答案 0 :(得分:1)
如果样式为color: transparent;
,则文本在页面上将完全透明,但在文档中查找该文本的任何工具都会正常显示。
答案 1 :(得分:1)
PDF语法支持不同的“文本呈现模式”。这些使得PDF创建软件(或任何使用简单文本编辑器创作PDF的人)可以呈现任何文本,无论选择的字体如何,
以下是PDF规范的说明:
但是,HTML或CSS(至少AFAIK)不支持此功能。因此,以类似方式完成任务的唯一选择是......
然后希望htmltopdf
将其翻译成代表相同的PDF ...
以下HTML代码(基本上使用 style="color:transparent"
)适合我。您必须确定它是否完全满足您的要求:
<html>
<head></head>
<body>
<div style="color:transparent; background:red; border: 1px dashed currentColor;">
The color of this text is transparent/invisible. <br />
The background of this text is red.
<div style="background:blue; height:9px;"></div>
Above this text is a blue box with a height of 9px. <br />
This block is surrounded by a transparent border.
</div>
</body>
</html>
然后,当打开PDF时,我无法读取任何文本行,但我可以选择/标记/突出显示它们。
运行时
pdftotext -layout my.html -
我看到以下文字:
The color of this text is transparent/invisible.
The background of this text is red.
Above this text is a blue box with a height of 9px.
This block is surrounded by a transparent border.
答案 2 :(得分:0)
使用PDF的背景颜色(例如白色)制作文本。