c# - 如何将PDF页面转换为图像并将其插入新的PDF
问题描述
我正在使用 Itext 7 为现有文档添加水印。我的文件是:
PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFile), new PdfWriter(destinationPath));
然后我循环浏览页面:
var numberOfPages = pdfDoc.GetNumberOfPages();
for (var i = 1; i <= numberOfPages; i++)
{
page = pdfDoc.GetPage(i);
...watermark building...
page.AddAnnotation(watermark);
page?.Flush();
pdfDoc.Close();
}
虽然我想将此页面作为图像保存到此文档或新的 pdf 文档中。我知道现在有适用于 Java 的 pdfRender,但不适用于 C#。有没有一种方法可以将基于文本的 pdf 保存为基于图像的一个 leyer?基本上我需要展平 PDF 以使所有图层合二为一。所以水印不能用水印去除软件作为一个单独的层去除。
解决方案::更新
我现在有解决方案。我发现 iText 不能做我想做的事(PDFRender 现在在 Java 中可用)。所以我改用 Apitron 从页面生成图像。然后我再次使用 iText 将图像添加到我的新 PDF 文档中。这是一个如何使用 Itext 7 添加图像的示例:https ://www.tutorialspoint.com/itext/itext_adding_image_to_pdf.htm (使用 Image = iText.Layout.Element.Image;)这是一个从 PDF 制作图像的 Apitron 示例页面:https ://github.com/apitron/Apitron.PDF.Rasterizer.Samples/tree/master/ConvertPDFtoBitmap
注意:正如下面的评论所说,.png 的质量很差。所以也许使用 TIFF 格式是件好事。
解决方案
推荐阅读
- pca - vst() 和assay(vst()) 之间的真正区别是什么?
- python - 从 PyCharm 转移到 VSCode 后无法导入 Python 模块
- reactjs - 使用 React 测试库测试文档侦听器
- async-await - 如何使用来自不同图形 api 调用的响应创建和返回对象
- python - 防止“除以零错误”的方法
- javascript - 如何从Javascript中的对象获取所有键名
- c# - Swashbuckle 可以为包含对象集合的表单生成正确的 OpenAPI 定义吗?
- java - 请解释这个 JAVA 程序的意外输出
- quantlib - Quantlib FixedRateBond 现金流
- maven - 无法从 Maven 和 NPM 的中央存储库中提取一些包