- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以使用 PDFStamper 和 PdfContentByte content.AddImage 方法将图像叠加到现有 PDF 文档上。
当现有文档顶部已覆盖图像时,我的问题就出现了。您实际上可以看到我要叠加的小图像的顶部边缘。它显然隐藏在现有图像叠加层之下。
我在尝试让我的叠加图像显示在现有图像叠加层的顶部时遇到问题。
我的代码:
System.Drawing.Image bitmap
PdfReader pdfReader = new PdfReader(pathToOriginalPdf);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(pathToTimestampedPdf, FileMode.Create, FileAccess.Write, FileShare.None));
MemoryStream imageStream = new MemoryStream();
bitmap.Save(imageStream, ImageFormat.Bmp);
byte[] bitmapBytes = imageStream.ToArray();
iTextSharp.text.Image image = Image.GetInstance(bitmapBytes);
PdfContentByte underContent;
try
{
underContent = pdfStamper.GetOverContent(1);
underContent.AddImage(image);
}
我需要一种方法来将现有图像叠加层压平到 PDF 内容上或设置 z 顺序以便我新添加的叠加层可以位于顶部。
出于某种原因,PdfStamper 选择将新图像放在现有图像下方。
提前致谢。
最佳答案
如果我们能看到有问题的 PDF,那将会有所帮助。这样我们就不必猜测,我们就会知道。
尽管如此,我怀疑您的“现有图像覆盖”是注释的一部分。您放入页面内容中的任何内容都不会出现在注释上方。
选项(如果我是对的):
为此,我将使用带有 LAYOUT_ICON_ONLY 的 PushbuttonField。将您的图像绘制到 PdfTemplate
中,并将其用于按钮的“图标”。
注释的 Z 顺序由页面注释数组的顺序决定。新注释附加到此数组。没问题。
PushbuttonField fld = new PushbuttonField(stamper.getWriter(), box, name);
fld.setLayout(PushbuttonField.LAYOUT_ICON_ONLY);
fld.setImage(myImage);
stamper.addAnnotation(fld.getField(), 1);
您可能需要使用 setScaleIcon()、setHorizontalAdjustment()、setVerticalAdjustment()、setProportionalIcon() 以及其他一些方法来使您的图像看起来完全符合您的要求。
如果现有的图像注释是 iText 可以展平的东西(也许,也许不能),你可以在两次通过中做你想做的事。第一遍将只是“setFormFlattening(true);close();”,而第二遍将是你现在正在做的一切。
ByteArrayOutputStream output = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper( firstReader, output );
stamper.setFormFlattening(true);
stamper.setFreeTextFlatten(true); // probably not needed.
stamper.close();
PdfReader secondReader = new PdfReader(output.toByteArray());
FileOutputStream finalOutput = new FileOutputStream( outputPath );
stamper = new PdfStamper(secondReader, finalOutput);
// do your thing here.
stamper.getOverContent(1).addImage(image);
关于c# - 使用 iTextSharp PdfStamper 在现有 PDF 上叠加图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938030/
下面的代码正确地将值“foo”分配给命名字段,但该字段没有被“展平”。我一定是忽略了一个步骤,但我不知道它是什么。请指教。谢谢。 public byte[] FlattenSpecifiedFormF
我正在使用 iTextSharp 通过 C# 将页码添加到 PDF。在运行代码分析时,怀疑输出的 MemoryStream 被处理了不止一次。 See this warning generated b
我正在使用 iTextSharp 填写 PDF 上的一些表单域。 PdfReader pdfReader = new PdfReader(templateFile); //http://stackov
我正在使用 ColdFusion 11 和 Java (com.lowagie.text.pdf.PdfStamper) 来填写 pdf,但是当我输入一个带有单个撇号的值时,例如 32' 它仅在 pd
我现在迷路了。 我试图完成的是在另一个(如水印)上添加一个 PDF。 问题是我似乎不明白使用的坐标系,因为 我的水印表现出乎意料。 这两个 PDF 具有不同的尺寸。 我的目标具有以下维度: 595高度
我使用 iText 5.4 PDFStamper 在我的 PDF 文档上使用以下代码进行数字签名: stamper = PdfStamper.createSignature(reader, os, '
我有下面的iText代码来读取文件并将其添加到主PDF文件中,所以它基本上是在现有PDF的绝对位置添加PDF页面。主 PDF 中的绝对位置和页码将动态确定。有时,它可能位于第 1 页上的 100,10
我正在尝试将新页面添加到 PdfStamper,但此代码不会将模板 pdf 字段添加到压模。 private void InsertNewPage(PdfStamper stamper, int pa
我正在开发一个系统,我必须在其中将一些图像添加到现有的 PDF 文档中。 这适用于 iText 5.1.3,但由于某种原因,在包含扫描图像的 PDF 中,它不会添加任何图像。 这是 PDF Docum
我这里指的是下面的方法。(Link 了解更多详情) public void setEncryption(boolean strength, Stri
我有这个代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Servle
为什么 PdfStamper 会增加我每次使用的签名 pdf 的大小? 这是我的代码: private static void test(String src, String pwd, String
您好,我已经成功地使用 HTMLWorker 使用 asp.NET/C# 转换 gridview。 (1) 我已对生成的表格应用了一些有限的样式,但看不到如何应用表格样式(例如网格线)或应用其他格式样
我正在使用 PdfStamper 在运行时创建 PDF。我的问题是我无法增加 PDF 字段的字体大小。我已经试过了,但没有成功, stamper.AcroFields.SetFieldProperty
我可以使用 PDFStamper 和 PdfContentByte content.AddImage 方法将图像叠加到现有 PDF 文档上。 当现有文档顶部已覆盖图像时,我的问题就出现了。您实际上可以
我几乎(我认为)能够在不先保存的情况下使用 servlet 呈现 PDF。我已经能够成功设置它,但我一直坚持尝试在客户端浏览器中使用打印对话框打开 PDF。 我已经能够通过以下方式成功将我的 PDF
我正在使用 ITextSharp 将多页 PDF 文件拆分为单页文件。我还设法使用 MemoryStream 将这些单页 PDF 添加到 zip 文件中。 现在,我需要使用 PdfStamper 为这
这是我第一次使用 iText5 for .NET,到目前为止,除了一项任务外,一切都相当成功。 我创建了两个 VB.Net 类,每个类都成功返回一个有效的 MemoryStream,其中包含一个单页
我正在使用 iTextSharp 加载现有 PDF 并使用 PdfStamper 添加文本。我想要完全控制文本,这意味着我想要能够控制字体(仅 TrueType)、字体大小和坐标。现在,我正在使用 S
我正在尝试在我的应用程序中使用 iText 2.1.7。我将问题确定为以下代码: InputStream inputFile = ... OutputStream outputStream = ...
我是一名优秀的程序员,十分优秀!