在VMware Workspace ONE Boxer邮件中无法使iText5生成的PDF水印不可移除的问题求助
在VMware Workspace ONE Boxer邮件中无法使iText5生成的PDF水印不可移除的问题求助
大家好,我最近碰到一个棘手的问题,想请各位帮忙分析下。我用iText5给PDF文件添加了不可移除的水印,在大多数PDF阅读器里都能正常生效,但在VMware Workspace ONE Boxer邮件客户端中,这个水印居然可以被用户移除,这完全不符合我的需求。
我添加水印的核心代码如下:
public class TestWatermark { public static String resourcesPath = "C:\\Users\\java\\Desktop\\TestWaterMark\\"; public static String FILE_NAME = resourcesPath + "test.pdf"; public static void main(String[] args) throws IOException { System.out.println("########## STARTED ADDING WATERMARK ###########"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { byte[] byteArray = Files.readAllBytes(Paths.get(FILE_NAME)); String watermarkText = "confidential"; String fontPath = resourcesPath + "myCustomFont.ttf"; Font arabicFont = FontFactory.getFont(fontPath, BaseFont.IDENTITY_H, 16); BaseFont baseFont = arabicFont.getBaseFont(); PdfReader reader = new PdfReader(byteArray); PdfStamper stamper = new PdfStamper(reader, baos); // 省略了后续循环每页绘制水印的逻辑 // 我的实现是将水印添加到PDF的背景层,确保无法被选中和编辑 } catch (Exception e) { e.printStackTrace(); } finally { // 资源关闭逻辑 if (stamper != null) { try { stamper.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } if (reader != null) { reader.close(); } baos.close(); } } }
我原本的思路是把水印绘制在PDF的背景层,在Adobe Acrobat、Chrome内置阅读器这些工具里,水印确实无法被选中、修改或移除,完全符合预期。但一旦把这个PDF通过邮件发送,用VMware Workspace ONE Boxer打开时,用户却能轻松移除水印。
想请教下:
- 有没有朋友了解VMware Workspace ONE Boxer的PDF渲染机制?它是不是对PDF的图层处理有特殊逻辑?
- 我用iText5添加水印的方式是不是存在疏漏?比如图层选择不对,或者没有正确设置PDF的权限控制?
麻烦各位帮忙指点迷津,谢谢!
备注:内容来源于stack exchange,提问作者Mahmoud Saleh
相关产品推荐
相关产品推荐

