如何删除Screen或Movie等注释的黑色边框?

通过SDK的接口在PDF上创建Screen 或者moive等注释时,通常是自带有黑色边框的。如下所示:

如果希望希望控制边框的粗细或颜色,可以通过setBorderInfo()接口设置。

但如果需要删除边框线,可以在注释生成后通过获取注释外观流的方式,删除黑框。删除后,效果如下:

完整代码如下:


            PDFDoc doc=new PDFDoc();
            doc.load(null);
            PDFPage page= doc.insertPage(0,PDFPage.e_SizeA4);
            page.startParse(0,null,true);
            Annot annot= page.addAnnot(Annot.e_Screen,new RectF(100,100,300,200));
            Screen screen=new Screen(annot);
            screen.setImage(new Image("D:\\test\\foxitLogo.png"),0,0);
            screen.resetAppearanceStream();
            PDFStream stream= screen.getAppearanceStream(0,"");
            long dataLen=stream.getDataSize(true).longValue();
            byte[] streamData = new byte[(int) dataLen];

            stream.getData(true,dataLen,streamData);
            String oldAp=new String(streamData, "UTF-8");
            // 删除外观流中的黑色矩形框
            StringBuilder newAp = new StringBuilder();
            String[] lines = oldAp.split("\n");
            for (int i = 0; i < lines.length; i++) {
                if (i < 1 || i > 6) {
                    if (newAp.length() > 0) {
                        newAp.append("\n");
                    }
                    newAp.append(lines[i]);
                }
            }
            stream.setData(newAp.toString().getBytes());
            doc.saveAs("D:\\DownLoad\\result.pdf",0);