Aspose.pdf 用于覆盖文本的 .net 图像插入

Aspose.pdf for .net image insertion going over text

我正在为 .net 使用 aspose.pdf,当我动态插入图像时,pdf 上的相邻文本在图像下方运行。

我正在用实际图像替换占位符(例如 %checkboxImage%)

我只是按照下面的方式使用他们文档中的代码

        private void AddImage(TextFragment textFragment, int imageWidth, int imageHeight, Stream stream)
        {
            var currentPage = textFragment.Page;

            var position = new Position(0, 0);
            position = textFragment.Position;
            position.YIndent = textFragment.Position.YIndent;
            textFragment.Text = "";
            if (position.XIndent != 0 && position.YIndent != 0)
            {
                // Set coordinates
                double lowerLeftX = position.XIndent;
                double lowerLeftY = position.YIndent;
                double upperRightX = position.XIndent + imageWidth;
                double upperRightY = position.YIndent + imageHeight;

                currentPage.Resources.Images.Add(stream);
                currentPage.Contents.Add(new GSave());
                var rectangle = new Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
                var matrix = new Matrix(new double[] { rectangle.URX - rectangle.LLX, 0, 0, rectangle.URY - rectangle.LLY, rectangle.LLX, rectangle.LLY - 10 });
                currentPage.Contents.Add(new ConcatenateMatrix(matrix));
                XImage ximage = currentPage.Resources.Images[currentPage.Resources.Images.Count];
                currentPage.Contents.Add(new Do(ximage.Name));
                currentPage.Contents.Add(new GRestore());
            }
        }

我尝试过为图像设置边距,还尝试将占位符和相邻文本放在 table 的单独单元格中。

图像的 z-index 是 0 也许它应该是别的东西?但是什么?

感谢任何想法

您可以简单地使用 ImageStamp class 添加图像,您可以根据需要使用 XIndentYIndent 属性控制其位置。以下是供您参考的示例代码片段,可能会进一步修改或增强。

// Open document
Document pdfDocument = new Document(dataDir+ "AddImageStamp.pdf");

// Create image stamp
ImageStamp imageStamp = new ImageStamp(dataDir + "aspose-logo.jpg");
imageStamp.Background = true;
imageStamp.XIndent = 100;
imageStamp.YIndent = 100;
imageStamp.Height = 300;
imageStamp.Width = 300;
imageStamp.Rotate = Rotation.on270;
imageStamp.Opacity = 0.5;
// Add stamp to particular page
pdfDocument.Pages[1].AddStamp(imageStamp);

dataDir = dataDir + "AddImageStamp_out.pdf";
// Save output document
pdfDocument.Save(dataDir);

如果您仍然需要任何帮助,请分享您的源文档和图像文件以及 SSCCE 代码,以便我进行调查并相应地帮助您。

PS: 我在 Aspose 工作,担任开发人员布道师。