c#,检查pdf区域

问题描述 投票:-3回答:1

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

如果它包含文本,图像,控制等,我有什么办法可以检查pdf中的某个区域吗?我知道它不会100%准确

c# pdf itext
1个回答
0
投票

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

你没有涉及的并发症(可能你没有想过);您认为PDF文件的区域是什么? MediaBox? CropBox,TrimBox,ArtBox,BleedBox?如果PDF文件包含例如覆盖页面的白色矩形填充,该怎么办?怎么样的/分隔空间称为/白色?是白色(它通常在输出上以那种方式呈现)或不?是的,这是T恤印花行业中广泛使用的油墨。

对我来说,最简单的解决方案似乎是使用一个工具,它将为您提供页面上标记的BoundingBox。我知道Ghostscript bbox设备可以做到这一点,我想有其他工具可以做到这一点。但请注意(至少对于Ghostscript);如果有任何白色标记(无论颜色空间如何),这些都被视为标记页面并将计入bbox。

同一个工具应该能够给出PDF文件中各种Box的大小(你需要ghostscript的pdf_info.ps程序才能获得这个,目前)。然后,您可以快速计算未标记的区域。

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

这是因为存在传递函数,透明度混合,颜色管理和图像遮罩等复杂问题,其中任何一个或全部都可能导致标记为非白色的区域变为白色(例如透明度为SMask)或标有白色的区域,使其呈现非白色(例如传递函数)。

您的问题不明确,因为您尚未确定这些问题是否对您很重要,以及您希望如何对待它们。

© www.soinside.com 2019 - 2024. All rights reserved.