目前我们有一个由客户调用的网络服务来获取 pdf 文件。网络服务到另一个系统去获取那个文件,以十六进制格式返回。然后,我们的 Web 服务将 Hex 字符串转换为字节,然后使用 pdf 文件响应客户端,如下所示:
Byte[] pdfBtyes = ConvertHexStringToBytes(hexValueFromOtherSystem);
HttpResponse _response = Context.Response;
_response.Clear();
_response.ContentType = "application/pdf";
_response.AppendHeader("Content-Disposition", "inline;filename=" + FileName + ".pdf");
_response.BufferOutput = true;
_response.AddHeader("Content-Length", pdfBtyes.Length.ToString());
_response.BinaryWrite(pdfBtyes);
_response.End();
但是现在我们需要找到一种方法来掩盖或隐藏或编辑或完全删除文件中的某些内容,基本上是一些基于用户类型的敏感信息,然后再将其发送给客户。这必须是实时的,就像以前我们没有屏蔽要求一样。
目前假设隐藏/屏蔽/删除/编辑基于文件的特定位置区域。就像识别左上、右上、右下、左下矩形区域一样。另一件事是,可能有不止一个这样的矩形区域。
或者,如果 PDF 有任何Line Numbers的概念,我们可以在可行的情况下使用它,例如文件的第 5、6、7、8、9 行掩码,从 Left-0 到 Right-n。
Q1 - 核心问题是如何使用任何开源和免费库、API、SDK 来实现这一点?还是从头开始定制开发?或者必须选择像 PDFTron 这样的付费选项(这似乎只适用于 Windows 应用程序)https://www.pdftron.com/documentation/samples/cs/PDFRedactTest?platforms=dotnet。
或 SyncFusion https://www.syncfusion.com/blogs/post/easy-ways-to-redact-pdfs-using-c.aspx
Q2 - 我想到的第二个实际上更关键的问题是,实时执行此操作是否是一个好主意?可以在 500 毫秒内完成吗?