有没有办法让iTextSharp与Windows 10 Universal应用程序一起使用?当我尝试通过NuGet包管理器添加iTextSharp版本5.5.8时,我收到以下错误:iTextSharp 5.5.8 is not compatible with UAP, Version=v10.0(win10-XXX)S...

有没有办法让iTextSharp与Windows 10 Universal应用程序一起使用?当我尝试通过NuGet包管理器添加iTextSharp版本5.5.8时,我收到以下错误:
iTextSharp 5.5.8 is not compatible with UAP, Version=v10.0(win10-XXX)
Some packages are not compatible ith UAP,Version=v10.0(win10-XXX)
其中XXX是x64或x86等平台.
我们在Windows 8商店应用程序中使用iTextSharp来获取PDF模板,然后使用用户提供的数据填充字段.用户还提供模板,以便按照他们想要的方式格式化文档.为此,我们使用iTextSharp库中的PDFStamper类来执行此操作,如以下代码所示:
public async Task<byte[]> fillPDF(string templatePath, FormData mergeDataItems)
{
StorageFile file = await StorageFile.GetFileFromPathAsync(templatePath);
var buf = await FileIO.ReadBufferAsync(file);
var reader = new PdfReader(buf.ToArray());
var outStream = new MemoryStream();
var stamper = new PdfStamper(reader, outStream);
var form = stamper.AcroFields;
form.GenerateAppearances = true; //Added this line, fixed my problem
var fieldKeys = form.Fields.Keys;
foreach (KeyValuePair<String, String> pair in mergeDataItems.MergeFieldValues)
{
if (fieldKeys.Any(f => f == pair.Key))
{
form.SetField(pair.Key, pair.Value);
}
}
stamper.Close();
reader.Close();
return flattenPdf(outStream.ToArray());
}
和这里
private static byte[] flattenPdf(byte[] pdf)
{
var reader = new PdfReader(pdf);
var outStream = new MemoryStream();
var stamper = new PdfStamper(reader, outStream);
stamper.FormFlattening = true;
stamper.Close();
reader.Close();
return outStream.ToArray();
}
任何有关使iTextSharp与Windows 10应用程序一起使用的帮助或任何关于如何从没有iTextSharp的模板生成PDF文档的建议将非常感激.
谢谢,
解决方法:
UWP框架是.NET生态系统的一个明显重大更新,特别是在安全性和加密方面.例如,在UWP中,散列算法类位于命名空间Windows.Security.Cryptography.Core中,而直到.NET 4.x它们位于System.Security.Cryptography中.某些类也已重命名.
对于iTextSharp,以及它的安全依赖性BouncyCastle,这是一个重大变化,因为System.Security.Cryptography程序集用于数字签名. NuGet或UWP本身显然知道所使用的.NET程序集,并拒绝添加无法在UWP中编译的依赖项 – 无论您是否使用与数字签名相关的任何iTextSharp功能.
仅供参考我是iText的员工,几周前我们就发现了这个问题.调查仍在进行中,因此我可能无法在此解释中做到一切正确.我们还在制定支持UWP和.NET 4.x的策略 – 据我所知,这在加密方面是互斥的.如果谷歌的术语“与UAP不兼容”,那么你可以阅读许多知名库的类似问题,因此这不仅是iTextSharp的问题.
编辑
如果您确实需要快速解决方案,那么您可以下载iTextSharp的源代码并将其复制粘贴到Visual Studio中的新UWP类库项目中.编译错误的数量看起来令人生畏,但其中大约80%对我来说似乎微不足道.例如其中一半是对Exception类的继承构造函数中的Serializable和SerializationInfo的引用,它们不再存在,因此可以安全地删除它们(!).
另一种方法是等待iTextSharp的新版本,目前(2016年1月6日)没有预定的发布日期.此外,为了清楚起见,还没有决定是否以及如何通过下一版本或iTextSharp中的任何后续版本支持UWP.
编辑2
我最近写了一篇关于这个问题的博客文章,作为iText团队的官方声明. http://itextpdf.com/blog/itextsharp-and-uwp
本文标题为:c# – 使用Windows 10 Universal App的iTextSharp


基础教程推荐
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- C#中的Linq to JSON操作详解 2023-06-08
- C# 解析XML和反序列化的示例 2023-04-14
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- 实例详解C#实现http不同方法的请求 2022-12-26
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- Unity shader实现高斯模糊效果 2023-01-16