日期:2014-05-18  浏览次数:21081 次

iTextSharp高手进来接分
我用一个网络上给出的例子给一个已有的PDF文件加密,加密代
码如下.可见代码中是通过建立新文件,然后给新文件加密后将
要加密内容COPY到新文件中。但那是用这种方式后原PDF文件的
书签锚点(也就是目录)并没有过来。我想问一下用什么方式能
把书签目录也一起复制过来或者有没有方法能够不用复制直接将
要加密的文件进行密码加密的?比较急,高手请帮忙!
  using System.Text;  
  using System.IO;  
  using iTextSharp.text;  
  using iTextSharp.text.pdf;  
  string sname=Server.MapPath("temp/")+"\\UML开发教
程.pdf";  
  string sname1=Server.MapPath("temp/")+"\\UML开发教程
_psd.pdf";  
   
  PdfReader reader = new PdfReader(sname);  
  int n = reader.NumberOfPages;  
  Document document = new Document
(reader.GetPageSizeWithRotation(1));  
  PdfWriter writer=PdfWriter.GetInstance(document,  
new FileStream(sname1, FileMode.Create));  
  writer.SetEncryption(PdfWriter.STRENGTH128BITS,  
"123456", null, PdfWriter.AllowPrinting);  
  document.Open();  
  PdfContentByte cb = writer.DirectContent;  
  PdfImportedPage page;  
  int rotation;  
  int i = 0;  
  // step 4: we add content  
  while (i < n)  
  {  
  i++;  
  document.SetPageSize(reader.GetPageSizeWithRotation
(i));  
  document.NewPage();  
  page = writer.GetImportedPage(reader, i);  
  rotation = reader.GetPageRotation(i);  
  if (rotation == 90 || rotation == 270)  
  
  {  
  cb.AddTemplate(page, 0, -1f, 1f, 0, 0,  
reader.GetPageSizeWithRotation(i).Height);  
  }  
  else  
  {  
  cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);  
 
  }  
   
  }  
  document.Close();  
  writer.Close();  


------解决方案--------------------
用过 只是简单的参照提供的实例做...
------解决方案--------------------
同1楼用过
只能帮顶
------解决方案--------------------
我昨天也在想这个问题,你看有没有拷贝书签的函数
可以交流一下,我最近也在研究这个
sayid@foxmail.com
------解决方案--------------------
只能帮顶了
------解决方案--------------------
我在 WinForm 中做过,直接用 PdfStamper 类就可以达到源文件另存,同时增加功能(如加密)的效果。当初看的示例还是 WebForm 中的呢,记得构造函数的第二个参数用的是 MemoryStream,我这里是个 FileStream,并无大碍。
C# code
                PdfReader pdfReader = new PdfReader(textBoxFilename.Text);
                FileStream stream = new FileStream(saveFileDialogPdf.FileName, FileMode.Create);
                PdfStamper pdfStamper = new PdfStamper(pdfReader, stream);
                if (checkBoxHideBar.Checked)
                {
                    pdfStamper.ViewerPreferences = PdfWriter.HideMenubar | PdfWriter.HideToolbar;
                }
                pdfStamper.SetEncryption(PdfWriter.STRENGTH128BITS, textBoxUserPassword.Text, textBoxOwnerPassword.Text, 0);
                pdfStamper.Close();