C#,检查pdf区域

时间:2019-04-26 09:23:31

标签: c# pdf itext

我需要在c#中输入现有pdf的文本(在页面顶部或底部)。 我需要确保我不会覆盖任何可见的文本或图像。

有什么办法可以检查pdf中是否包含文本,图像,控件等的区域?我了解它不会100%准确

1 个答案:

答案 0 :(得分:0)

您至少需要一个完整的PDF使用者,因为找出标记在页面上的位置的唯一方法是解析(并可能呈现)PDF。

您还没有解决一些并发症(可能您没有发生过);您认为PDF文件的面积是多少? MediaBox? CropBox,TrimBox,ArtBox,BleedBox?如果PDF文件包含例如覆盖页面的白色矩形填充怎么办? /分离空间/ White呢?是白色(通常在输出上以这种方式呈现)吗?是的,这是T恤印花行业中广泛使用的墨水。

对我来说,最简单的解决方案似乎是使用一种工具,该工具会在页面上显示标记的边界框。我知道Ghostscript bbox设备可以做到这一点,我想还有其他工具可以做到这一点。但是请注意(至少对于Ghostscript);如果白色(无论颜色空间如何)中有任何标记,这些标记均视为标记页面,并将被计入bbox。

相同的工具应该能够在PDF文件中给出各种Box的大小(当前,您需要Ghostscript使用pdf_info.ps程序来获得它)。然后,您可以快速计算未标记的区域。

但是“未标记”与“白色”不同。如果您不希望计算涂成“白色”的区域,那么问题会更大。您确实需要渲染内容,然后查看输出中的每个图像样本以查看其是否为白色,记录x和y坐标的最大值和最小值以确定页面的“非白色”区域

这是因为存在诸如传递函数,透明度混合,颜色管理和图像蒙版之类的复杂性,这些复杂性中的任何一项或全部都可能导致标记有非白色的区域呈现白色(透明度SMask用于例如)或标有白色的区域要呈现为非白色(例如,传递函数)。

您的问题尚不清楚,因为您尚未定义这些问题中的任何一个对您是否重要,以及您想如何对待它们。