java - 在 UIDAI aadhaar pdf 中屏蔽 aadhaar 编号
问题描述
有谁知道如何在从 UIDAI 网站下载的 aadhaar pdf 中屏蔽 aadhaar 号码。
我已经尝试过下面的 itext 代码。它不适用于 aadhaar PDF,但适用于其他普通 pdf
public static void main(String[] args) throws IOException, DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new MainClassName().manipulatePdf(SRC, DEST);
}
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfDictionary dict = reader.getPageN(1);
PdfObject object = dict.getDirectObject(PdfName.CONTENTS);
PdfArray refs = null;
if (dict.get(PdfName.CONTENTS).isArray()) {
refs = dict.getAsArray(PdfName.CONTENTS);
} else if (dict.get(PdfName.CONTENTS).isIndirect()) {
refs = new PdfArray(dict.get(PdfName.CONTENTS));
}
for (int i = 0; i < refs.getArrayList().size(); i++) {
PRStream stream = (PRStream) refs.getDirectObject(i);
byte[] data = PdfReader.getStreamBytes(stream);
stream.setData(new String(data).replace("8989 7890 4567", "XXXX XXXX 4567").getBytes());
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();
}
也尝试了这篇文章的建议(即,使用 pdfbox) 使用 JAVA 搜索和替换 PDF 中的文本
即使这不适用于aadhaar PDF,但适用于普通pdf
(我知道我们可以从 UIDAI 网站本身下载蒙面的 aadhaar pdf,但我需要通过 JAVA 来完成)
解决方案
推荐阅读
- javascript - firebase.auth.EmailAuthProvider 未定义
- react-native - React Native 中地图内容的底页,类似于谷歌地图 UI
- javascript - Reddit 是如何快速加载最近加载的页面的?
- javascript - 简化用于表单验证的 Javascript 代码
- c# - 如何在 WPF 中的 DataGrid 的 DataGridCheckBoxColumn 中处理鼠标事件(MouseEnter、MouseLeave、MouseMove、..)?
- r - 是否可以在 R 中为正则表达式子字符串提供一组选项?
- json - 类型“AreaData”不符合协议“Encodable”
- python - 如何通过使用“removeHandler(...)”删除所有处理程序来干净地开始多次记录?
- html - 如何使导航项到达页面末尾
- xamarin - 棱镜:在 ViewModel 中设置值后视图没有更新?