c# - PDFsharp 1.50 beta 3: Empty owner password error when adding password to PDF -


i'm exploring pdfsharp library , having issues password protecting pdfs.

following example on website http://www.pdfsharp.com/pdfsharp/index.php?option=com_content&task=view&id=36&itemid=47,

here code

 try  {    string filename = "hi.pdf";    file.copy(path.combine("c:/user/ichigo/desktop", filename),    path.combine(directory.getcurrentdirectory(), filename), true);     pdfdocument document = pdfreader.open(filename, "some text");     pdfsecuritysettings securitysettings = document.securitysettings;     securitysettings.userpassword="user";    securitysettings.ownerpassword="owner";     securitysettings.permitaccessibilityextractcontent = false;    securitysettings.permitannotations = false;    securitysettings.permitassembledocument = false;    securitysettings.permitextractcontent = false;    securitysettings.permitformsfill = true;    securitysettings.permitfullqualityprint = false;    securitysettings.permitmodifydocument = true;    securitysettings.permitprint = false;     document.save(filename);  }  catch (exception e)   { throw new exception("something went wrong : " + e); } 

whenever add code sets passwords:

securitysettings.userpassword="user"; securitysettings.ownerpassword="owner"; 

i system.nullreferenceexception: object reference not set instance of object. when reach line saves pdf

document.save(filename); i'm getting error messages

---- debug assertion failed ---- ---- assert short message ---- empty owner password. ---- assert long message ----     @ pdfsharp.pdf.security.pdfstandardsecurityhandler.prepareencryption() in c:\users\ichigo\downloads\pdfsharp-migradocfoundation-1_50-beta3b\pdfsharp\src\pdfsharp\pdf.security\pdfstandardsecurityhandler.cs:line 590    @ pdfsharp.pdf.pdfdocument.dosave(pdfwriter writer) in c:\users\ichigo\downloads\pdfsharp-migradocfoundation-1_50-beta3b\pdfsharp\src\pdfsharp\pdf\pdfdocument.cs:line 392    @ pdfsharp.pdf.pdfdocument.save(stream stream, boolean closestream) in c:\users\ichigo\downloads\pdfsharp-migradocfoundation-1_50-beta3b\pdfsharp\src\pdfsharp\pdf\pdfdocument.cs:line 325    @ pdfsharp.pdf.pdfdocument.save(stream stream) in c:\users\ichigo\downloads\pdfsharp-migradocfoundation-1_50-beta3b\pdfsharp\src\pdfsharp\pdf\pdfdocument.cs:line 352    @ pdfsharp.pdf.pdfdocument.save(string path) in c:\users\ichigo\downloads\pdfsharp-migradocfoundation-1_50-beta3b\pdfsharp\src\pdfsharp\pdf\pdfdocument.cs:line 258 

why getting these errors?

edit- here's stack trace system.nullreferenceexception.

something went wrong : `system.nullreferenceexception: object reference not set instance of object.`       @ pdfsharp.pdf.security.pdfstandardsecurityhandler.sethashkey(pdfobjectid id)    @ pdfsharp.pdf.io.pdfwriter.writebeginobject(pdfobject obj)    @ pdfsharp.pdf.pdfdictionary.writeobject(pdfwriter writer)    @ pdfsharp.pdf.pdfpage.writeobject(pdfwriter writer)    @ pdfsharp.pdf.pdfdocument.dosave(pdfwriter writer)    @ pdfsharp.pdf.pdfdocument.save(stream stream, boolean closestream)    @ pdfsharp.pdf.pdfdocument.save(stream stream)    @ pdfsharp.pdf.pdfdocument.save(string path) 

turns out there problem pdfsharp 1.50 beta 3. nothing wrong code.

for quick fix, can download pdfsharp source code , make following change:

in file "pdfdocument.cs" in method "void dosave(pdfwriter writer)" "// hack: remove xreftrailer" (around line 375) , change (7 new lines replace 2 old lines):

// hack: remove xreftrailer if (_trailer pdfcrossreferencestream) {     // hack^2: preserve securityhandler.     pdfstandardsecurityhandler securityhandler = _securitysettings.securityhandler;     _trailer = new pdftrailer((pdfcrossreferencestream) _trailer);     _trailer._securityhandler = securityhandler; } 

disclaimer: tested hi.pdf , helloworld.pdf only. while hope new code never behave worse old version, there no guarantee.

future versions of pdfsharp, newer pdfsharp 1.50 beta 3, should not require patch.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -