首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

打开PDF文件时,在文件下面加一组随机码的水印

2013-03-14 
打开PDF文件时,在文件上面加一组随机码的水印在打开PDF文件时,怎么才能做到放一组随机数据以水印的形式添

打开PDF文件时,在文件上面加一组随机码的水印
在打开PDF文件时,怎么才能做到放一组随机数据以水印的形式添加在文件中。
[解决办法]
itextsharp 

PdfReader reader = new PdfReader("C:/PDF/Test.pdf");
        PdfStamper stamp = new PdfStamper(reader, new FileStream("C:/PDF/Test.pdf", FileMode.Create));
        int n = reader.NumberOfPages;
        int i = 0;
        PdfContentByte under;
        iTextSharp.text.Image im = iTextSharp.text.Image.GetInstance("C:/Image/123.jpg");
        im.SetAbsolutePosition(440, 730);
        im.ScaleAbsolute(160, 60);

        while (i < n)
        {
            i++;
            under = stamp.GetOverContent(i);
            under.AddImage(im);
        }
        stamp.Close();
        reader.Close(); 


[解决办法]
参考我之前的代码
static void waterMark(String inputFile, String outputFile,String userPassWord, String ownerPassWord, String waterMarkName, int permission) 


        try { 
            PdfReader reader = new PdfReader(inputFile); 
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(  outputFile)); 
            // 设置密码   
            stamper.setEncryption(userPassWord.getBytes(), ownerPassWord.getBytes(), permission, false); 
            BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED); 
            int total = reader.getNumberOfPages() + 1; 
            Image image = Image.getInstance(imageFilePath); 
            image.setAbsolutePosition(200, 400); 
            PdfContentByte under; 
            int j = waterMarkName.length(); 
            char c = 0; 
            int rise = 0; 
            for (int i = 1; i < total; i++) { 


                rise = 500; 
                under = stamper.getUnderContent(i); 
                // 添加图片 
                // under.addImage(image); 
                under.beginText(); 
                under.setColorFill(Color.CYAN); 
                under.setFontAndSize(base, 30); 
                // 设置水印文字字体倾斜 开始 
                if (j >= 15) { 
                    under.setTextMatrix(200, 120); 
                    for (int k = 0; k < j; k++) { 
                        under.setTextRise(rise); 
                        c = waterMarkName.charAt(k); 
                        under.showText(c + ""); 
                        rise -= 20; 
                    } 
                } else { 
                    under.setTextMatrix(180, 100); 
                    for (int k = 0; k < j; k++) { 
                        under.setTextRise(rise); 
                        c = waterMarkName.charAt(k); 
                        under.showText(c + ""); 
                        rise -= 18; 
                    } 
                } 
                // 字体设置结束 


                under.endText(); 
                // 画一个圆 
                // under.ellipse(250, 450, 350, 550); 
                // under.setLineWidth(1f); 
                // under.stroke(); 
            } 
            stamper.close(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 

热点排行