c# - 使用数字签名调整 PDF 文档的大小
问题描述
我在我的代码中使用 iTextSharp 来调整 PDF 文档的大小,它工作得很好,如下所示:
public byte[] ResizePdf(byte[] data) {
PdfReader reader = new PdfReader(data);
Document document = new Document(PageSize.A4);
MemoryStream stream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
PdfContentByte cb = writer.DirectContent;
for (int i = 1; i <= reader.NumberOfPages; i++) {
document.NewPage();
PdfImportedPage page = writer.GetImportedPage(reader, i);
cb.AddTemplate(page, 0.8, 0, 0, 0.8, 25f, 60f);
}
document.Close();
return stream.ToArray();
}
但是,当一个 PDF 文档被签名时,当我尝试调整它的大小时,我丢失了新调整大小的文档上的签名。
我尝试创建文档的副本(按照代码),它工作正常,但我无法调整它的大小。
public byte[] Test(byte[] data) {
PdfReader reader = new PdfReader(data);
Document document = new Document(PageSize.A4);
MemoryStream stream = new MemoryStream();
PdfCopy copy = new PdfCopy(document, stream);
document.Open();
PdfContentByte cb = copy.DirectContent;
for (int i = 1; i <= reader.NumberOfPages; i++) {
document.NewPage();
PdfImportedPage page = copy.GetImportedPage(reader, i);
cb.AddTemplate(page, 0.8, 0, 0, 0.8, 0, 0);
copy.AddPage(page);
}
document.Close();
return stream.ToArray();
}
有没有人有任何提示或任何可以帮助我的东西?提前致谢!
解决方案
推荐阅读
- node.js - Node js 应用程序的 Azure 部署失败:npm ERR!代码 EPERM
- android - 如何在 Kotlin 中生成标记数组
- azure - Azure devops 代理池与并行作业
- terminal - PowerLevel10k 和 ColorLS 符号未显示,如何解决此问题
- java - Java立即调用我在数组中初始化的方法
- r - 从 gmodels 中的 CrossTable 函数制作 corrplot
- python - 在 python pandas 中,如何合并两个数据帧,同时使用另一个数据帧的权重将值传播到一个数据帧中?
- python - [:] 有什么作用?
- github - 当用户更新他/她的个人资料时,github如何设法在任何地方反映用户详细信息
- javascript - 为什么这个变量不会增加?