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 添加图像,您可以根据需要使用 XIndent
和 YIndent
属性控制其位置。以下是供您参考的示例代码片段,可能会进一步修改或增强。
// 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 工作,担任开发人员布道师。
我正在为 .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 添加图像,您可以根据需要使用 XIndent
和 YIndent
属性控制其位置。以下是供您参考的示例代码片段,可能会进一步修改或增强。
// 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 工作,担任开发人员布道师。