Itext图层合并/分离

Itext图层合并/分离技术要点 Itext 图层合并 图层分离合并 分离 最后技术要点 Itext 图层合并 图层分离合并 思路 1 图层来的是单独文件 需要使用 pdfwriter 写入 PdfLayerfoot newPdfLayer layerName1 writer dcb Begin

技术要点

Itext

图层合并,图层分离

合并:
  • 思路1:图层来的是单独文件,需要使用pdfwriter写入
 PdfLayer foot = new PdfLayer("layerName1", writer); dcb.BeginLayer(foot); ///加入内容 PdfReader footReader = new PdfReader(footer); PdfImportedPage footerPage = writer.GetImportedPage(footReader, 1); dcb.AddTemplate(footerPage, 0, 0); dcb.EndLayer(); /////设置第二个图层 PdfLayer head = new PdfLayer("layerName2", writer); dcb.BeginLayer(head); PdfReader headReader = new PdfReader(header); PdfImportedPage headerPage = writer.GetImportedPage(headReader, 1); dcb.AddTemplate(headerPage,0,0); dcb.EndLayer();

就是使用文件每一层一层的加入。

  • 思路2:如果文件来的是所有的图层,可以使用PdfStamper
 PdfReader reader = new PdfReader(pdfPath); PdfStamper stamper1 = new PdfStamper(reader, new FileStream("D:\\new_stamper.pdf", FileMode.Create)); Dictionary<string, PdfLayer> layers = stamper1.GetPdfLayers(); ////这里需要选择性的删除某些图层 foreach (var key in layers.Keys) { Console.WriteLine(key); if (key.Contains("UV")) { OCGRemover oCGRemover = new OCGRemover(); oCGRemover.RemoveLayers(reader, key); } }

可以理解为,删除部分,剩下的就是合并的结果。

分离:
  • 对于图层分离的情况
  • 思路1:这个类似于刚刚的“合并思路2”
 PdfReader reader = new PdfReader(pdfPath); PdfStamper stamper1 = new PdfStamper(reader, new FileStream("D:\\new_stamper.pdf", FileMode.Create)); Dictionary<string, PdfLayer> layers = stamper1.GetPdfLayers(); ////除导出的图层以外,删除其他所有图层 foreach (var key in layers.Keys) { Console.WriteLine(key); if (!key.Contains("UV")) { OCGRemover oCGRemover = new OCGRemover(); oCGRemover.RemoveLayers(reader, key); } }

最后

  • 关于PdfStamper 和 PdfWriter的用法,建议伙伴们看看官网文档和demo,肯定会有更好的使用理解。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208177.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午12:10
下一篇 2026年3月19日 下午12:11


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号