gpt4 book ai didi

c# - 使用 itextsharp 在 pdf 中将图像设置为水印的问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:09 24 4
gpt4 key购买 nike

我正在尝试使用 itextsharp 在 PDF 中添加图像,但问题是图像在背景(水印)中设置不正确。

我想要这样:

enter image description here

但是输出是这样的:

enter image description here

这里是我发布的一些代码:

public class PdfWriterEvents : IPdfPageEvent
{
string watermarkText = string.Empty;

public PdfWriterEvents(string watermark)
{
watermarkText = watermark;
}
public void OnStartPage(PdfWriter writer, Document document)
{
float fontSize = 80;
float xPosition = iTextSharp.text.PageSize.A4.Width / 2;
float yPosition = (iTextSharp.text.PageSize.A4.Height - 140f) / 2;
float angle = 45;
try
{
PdfContentByte under = writer.DirectContentUnder;
Image image = Image.GetInstance(watermarkText);
image.SetAbsolutePosition(55f, 55f);
under.AddImage(image);

}
catch (Exception ex)
{
Console.Error.WriteLine(ex.Message);
}
}
public void OnEndPage(PdfWriter writer, Document document) { }
public void OnParagraph(PdfWriter writer, Document document, float paragraphPosition) { }
public void OnParagraphEnd(PdfWriter writer, Document document, float paragraphPosition) { }
public void OnChapter(PdfWriter writer, Document document, float paragraphPosition, Paragraph title) { }
public void OnChapterEnd(PdfWriter writer, Document document, float paragraphPosition) { }
public void OnSection(PdfWriter writer, Document document, float paragraphPosition, int depth, Paragraph title) { }
public void OnSectionEnd(PdfWriter writer, Document document, float paragraphPosition) { }
public void OnGenericTag(PdfWriter writer, Document document, Rectangle rect, String text) { }
public void OnOpenDocument(PdfWriter writer, Document document) { }
public void OnCloseDocument(PdfWriter writer, Document document) { }
}

此处调用代码:

writer.PageEvent = new PdfWriterEvents(LogoImage);

最佳答案

您的代码中有很多不必要的行。例如,您定义了 fontSizexPositionyPositionangle,但您没有对那些变量。就好像您从互联网上复制/粘贴了一些代码,却没有理解该代码应该做什么。这很奇怪。

假设您要缩放图像以适合页面大小,那么您必须获取页面的宽度和高度:document.PageSize.Widthdocument .PageSize.Height.

然后您必须决定是否希望图像保持其纵横比。如果没有,您可以使用 img.ScaleAbsolute(width, height),但请注意这会扭曲您的图像。如果你想避免这种失真,你应该使用 ScaleToFit() 方法:

public void OnStartPage(PdfWriter writer, Document document)
{
float width = document.PageSize.Width;
float height = document.PageSize.Height;
try
{
PdfContentByte under = writer.DirectContentUnder;
Image image = Image.GetInstance(watermarkText);
image.ScaleToFit(width, height);
image.SetAbsolutePosition(0, 0);
under.AddImage(image);
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.Message);
}
}

在这个示例中,我使用了00 作为偏移量。我不知道你想要多少边距(如果你想要边距,你必须调整 widthheight),我也不知道你是否想要居中图像(这将需要一些小学数学)。

无论如何,这个答案解决了您的主要问题:您忘记缩放图像了。

关于c# - 使用 itextsharp 在 pdf 中将图像设置为水印的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46402801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com