我需要获取 PDF 中每个字符的 x/y、宽度/高度和页码,最好是百分比。
显然,Ghost Script 能够做到这一点,因为否则无法将 PDF 转换为光栅图像。有没有一种简单的方法可以让 Ghostscript 向我提供这些信息,或者我是否需要修改源代码才能连接到这个功能?
我需要获取 PDF 中每个字符的 x/y、宽度/高度和页码,最好是百分比。
显然,Ghost Script 能够做到这一点,因为否则无法将 PDF 转换为光栅图像。有没有一种简单的方法可以让 Ghostscript 向我提供这些信息,或者我是否需要修改源代码才能连接到这个功能?
字形被渲染为位图(使用 FreeType)并存储在用字体和矩阵标记的字形缓存中,以便可以唯一地识别它们。当文本呈现到页面时,首先查询缓存,如果存在命中,则在当前点绘制位图。如果不是,则渲染和缓存字形。
但是,非常大的点大小不会被缓存,并且每次都会渲染以避免填满或溢出缓存。
因此,为了使用 Ghostscript 检索此信息,您需要编写一个具有一组文本方法的设备。您需要从字形中捕获位图以确定字形的宽度和高度,并且当前点将为您提供页面上的位置。output_page 方法会告诉您页面已完成,因此您需要自己跟踪页码。
您可以查看 txtwrite 设备以查看如何处理文本,并查看 epswrite 设备以查看如何检索位图,您需要将两者结合起来。
请注意,PDF 文件中的“文本”不必是文本。看似文本的内容可以是位图或矢量。文本可以以不寻常的方式编码,并且可能无法检索 Unicode 或有关字形的其他可识别信息(如果可能,txtwrite 设备再次显示如何提取此类信息)。
此外,字体并不总是嵌入在 PDF 文件中,在这种情况下使用替代字体,这会弄乱您的宽度/高度信息。
这是一个相当大的工程。