使用GhostScript获取PDF中所有字符的x / y和宽度/高度

时间:2013-07-18 22:03:35

标签: pdf ghostscript

我需要获取PDF中每个字符的x / y,宽度/高度和页码,最好是百分比。

显然,Ghost Script能够执行此操作,因为否则无法将PDF转换为光栅图像。是否有一种简单的方法可以让Ghostscript给我这些信息,或者我是否需要修改源代码来挂钩这个功能?

1 个答案:

答案 0 :(得分:1)

字形呈现为位图(使用FreeType)并存储在标记有字体和矩阵的字形缓存中,以便可以唯一标识它们。当文本呈现给页面时,首先查询缓存,如果存在命中,则在当前点绘制位图。如果没有,那么渲染和缓存字形。

但是,非常大的点大小会保持未缓存状态,并且每次都会渲染以避免填满或溢出缓存。

因此,为了使用Ghostscript检索此信息,您需要编写一个具有一组文本方法的设备。您需要从字形中捕获位图以确定字形的宽度和高度,并且当前点将为您提供页面上的位置。 output_page方法会告诉您页面已完成,因此您需要自己跟踪页码。

您可以查看txtwrite设备以查看文本的处理方式,并查看epswrite设备以查看如何检索位图,您需要两者的组合。

请注意,PDF文件中的“文字”不一定是文字。看似文本的内容可能是位图或矢量。文本可以以不寻常的方式编码,并且可能无法检索有关字形的Unicode或其他可识别信息(txtwrite设备也会显示如何在可能的情况下提取此类信息)。

此外,字体并不总是嵌入在PDF文件中,在这种情况下会使用替代字体,这会弄乱您的宽度/高度信息。

这是一个非常大的项目。