- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在探索 PDFsharp 库,但在密码保护 PDF 时遇到问题。
按照他们网站上的这个例子 http://www.pdfsharp.com/PDFsharp/index.php?option=com_content&task=view&id=36&Itemid=47 ,
这是我的代码
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); }
每当我添加设置密码的代码时:
securitySettings.UserPassword="user";
securitySettings.OwnerPassword="owner";
我得到 System.NullReferenceException: Object reference not set to an instance of an object.
当我到达保存 PDF 的行时
文档.保存(文件名);我也收到错误消息
---- DEBUG ASSERTION FAILED ----
---- Assert Short Message ----
Empty owner password.
---- Assert Long Message ----
at PdfSharp.Pdf.Security.PdfStandardSecurityHandler.PrepareEncryption() in c:\Users\Ichigo\Downloads\PDFsharp-MigraDocFoundation-1_50-beta3b\PDFsharp\src\PdfSharp\Pdf.Security\PdfStandardSecurityHandler.cs:line 590
at PdfSharp.Pdf.PdfDocument.DoSave(PdfWriter writer) in c:\Users\Ichigo\Downloads\PDFsharp-MigraDocFoundation-1_50-beta3b\PDFsharp\src\PdfSharp\Pdf\PdfDocument.cs:line 392
at 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
at PdfSharp.Pdf.PdfDocument.Save(Stream stream) in c:\Users\Ichigo\Downloads\PDFsharp-MigraDocFoundation-1_50-beta3b\PDFsharp\src\PdfSharp\Pdf\PdfDocument.cs:line 352
at PdfSharp.Pdf.PdfDocument.Save(String path) in c:\Users\Ichigo\Downloads\PDFsharp-MigraDocFoundation-1_50-beta3b\PDFsharp\src\PdfSharp\Pdf\PdfDocument.cs:line 258
为什么会出现这些错误?
编辑 - 这是 System.NullReferenceException 的堆栈跟踪。
Something went wrong : `System.NullReferenceException: Object reference not set to an instance of an object.`
at PdfSharp.Pdf.Security.PdfStandardSecurityHandler.SetHashKey(PdfObjectID id)
at PdfSharp.Pdf.IO.PdfWriter.WriteBeginObject(PdfObject obj)
at PdfSharp.Pdf.PdfDictionary.WriteObject(PdfWriter writer)
at PdfSharp.Pdf.PdfPage.WriteObject(PdfWriter writer)
at PdfSharp.Pdf.PdfDocument.DoSave(PdfWriter writer)
at PdfSharp.Pdf.PdfDocument.Save(Stream stream, Boolean closeStream)
at PdfSharp.Pdf.PdfDocument.Save(Stream stream)
at PdfSharp.Pdf.PdfDocument.Save(String path)
最佳答案
事实证明 PDFsharp 1.50 beta 3 有问题。您的代码没有问题。
要快速修复,您可以下载 PDFsharp 源代码并进行以下更改:
在文件“PdfDocument.cs”中的方法“void DoSave(PdfWriter writer)”中查找“//HACK: Remove XRefTrailer”(第 375 行左右)并像这样更改它(7 行替换 2 行旧行):
// HACK: Remove XRefTrailer
if (_trailer is PdfCrossReferenceStream)
{
// HACK^2: Preserve the SecurityHandler.
PdfStandardSecurityHandler securityHandler = _securitySettings.SecurityHandler;
_trailer = new PdfTrailer((PdfCrossReferenceStream) _trailer);
_trailer._securityHandler = securityHandler;
}
免责声明:我仅使用 Hi.pdf 和 HelloWorld.pdf 对此进行了测试。虽然我确实希望新代码的表现永远不会比旧版本差,但我不能保证。
PDFsharp 的 future 版本,比 PDFsharp 1.50 beta 3 更新,应该不需要这个补丁。
关于c# - PDFsharp 1.50 测试版 3 : Empty owner password error when adding password to PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38575425/
到目前为止,我能够允许用户编辑他自己的帖子,但每当我通过 if he's owner of the subreddit/category 条件时,它就会完全停止工作。 我有这3张 table User
到目前为止,我能够允许用户编辑他自己的帖子,但每当我通过 if he's owner of the subreddit/category 条件时,它就会完全停止工作。 我有这3张 table User
我正在通过一本书学习 Spring 和 Hibernate,并且有一个可选练习来使用 Hibernate 创建多对多关系。不幸的是,作者没有在 GitHub 上提供可选示例,我在调试一些我不熟悉的东西
在下面的类中,“owner”参数对 myClass 和基类做了什么? public class Base { public myClass(owner) : base (owner) { }
我有这个架构:(简化) class A { container c } class B { A* owner } 这些类位于不同的头文件中,对于这种架构,我必须包括: B.h in A
您可能已经注意到我们现在在社区 Wiki 帖子上显示编辑摘要: community wiki 220 revisions, 48 users 我还想显示“最拥有”页面上显示的最终内容的用户,作为剩余文
我想用测试所有者标记每个测试(或者可能只是每个文件)。当测试失败时,我想包含一个与所有者的打印声明。使用默认的 pytest 功能可以实现类似的功能吗?我想不出任何方法来判断测试是否失败,这是第一步。
我不了解 Airflow 中的“所有者”。 ower 的注释是“任务的所有者,建议使用 unix 用户名”。 我写了一些以下代码。 Default_args = { 'owner': 'max'
[on web] 尝试在 FittedBox 中放入一些小部件像这样 : FittedBox( fit: BoxFit.scaleDown, child: AnimatedContain
我的堆直方图告诉我我正在使用大量字符数组 ([C)、字节数组 ([B)、哈希节点和锁。 What tool will tell me who 'owns' these character arrays
在 XAML 窗口中隐藏此代码我错过了什么 //创建一个窗口并让这个窗口成为它的所有者窗口 ownedWindow = new Window();ownedWindow.Owner = this;ow
我认为以下伪代码很好地总结了我的问题...... class Owner { Bar b = new Bar(); dostuff(){...} } class Bar {
我正在尝试禁用除“neta”组成员之外的所有用户对 IP 1.2.3.4 的访问。这是我专门为此创建的一个新组。 iptables -I OUTPUT -o eth0 -p tcp -d 1.2.3.
数据库用户 一个 应该只能访问特定数据。 此数据目前由 View 提供B.VIEW1 从架构拥有的表中选择 乙 和 C . CREATE VIEW [B].[VIEW1] AS SELECT * FR
我正在查看this question我现在想知道,在组件构造函数中 nil 作为所有者是什么意思。 SomeComponent := TSomeComponent.Create(nil); 我知道,在
所以我从这些简单的例子中学习,有 2 个表,USERS 和 USER_DETAILS,足够简单,每个用户都有 user_details 并且它是一对一的关系。所以这个样本是这样的, @Entity @
我(正在尝试)开发一个Web应用程序系统,它处理用户请求和计算,并通过扩展Threads和Runtime.exec()(在Linux和/或Windows上)将它们传递到服务器上的(定制的)可执行文件)
我正在做并发问题作业。我有许多线程执行特定的操作,并且有一个方法决定这些线程何时可以访问资源。 所以我的类看起来像这样: public class Boss extends ReentrantLock
MSDN documentation状态: When a form is owned by another form, it is closed or hidden with the owner fo
我有以下场景:“电话”子表可以通过连接表为多个父表提供服务,如下所示: CREATE TABLE phone ( id BIGINT AUTO_INCREMENT, number VA
我是一名优秀的程序员,十分优秀!