为我们的网络应用构建文档生成系统,并根据需要标记文档。该文件采用powerpoint设计,并通过NitroPdf打印。第一页基本上是一个大图像,图像中有一个白色区域。 我试图将品牌标识放在分配的空白区域中。定位没问题,但是我的品牌形象出现在PDF文档整页图片的背后。
用谷歌搜索,我似乎无法找到一个' z-index'类型函数...会不会认为我不是唯一一个有问题的人?添加图像的代码部分如下:
image.ScaleToFit(width, height);
image.SetDpi(300, 300);
// Position the logo.
image.SetAbsolutePosition(fromLeft, fromBottom);
// Add the image.
document.Add(image);
答案 0 :(得分:0)
非常奇怪的是,您需要以下行来将图像添加到现有PDF:
document.Add(image);
好像您正在使用PdfWriter
而不是PdfStamper
,这会非常奇怪。
也许您在开始编写代码之前忽略了documentation或者您没有搜索StackOverflow:How can I insert an image with iTextSharp in an existing PDF?
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
class Program
{
static void Main(string[] args)
{
using (Stream inputPdfStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream inputImageStream = new FileStream("some_image.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream outputPdfStream = new FileStream("result.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
{
var reader = new PdfReader(inputPdfStream);
var stamper = new PdfStamper(reader, outputPdfStream);
var pdfContentByte = stamper.GetOverContent(1);
Image image = Image.GetInstance(inputImageStream);
image.SetAbsolutePosition(100, 100);
pdfContentByte.AddImage(image);
stamper.Close();
}
}
}
您可能找到了使用GetUnderContent()
的示例。这会在现有内容下添加内容。如果您希望内容涵盖现有内容,则需要GetOverContent()
,如代码示例所示。
答案 1 :(得分:0)
也许有点晚了,但是我遇到了同样的问题,并且通过使用段落(在Visual Basic中的代码下面)解决了一个问题:
Public Class PDF
Public Doc As Document
Public Writer As PdfWriter
Public Cb As PdfContentByte
Public Sub setFrontImage(ByVal _appendImg As String, align As Integer, x As Integer, y As Integer, ByVal w As Integer, h As Integer, _leading As Integer)
Dim ct As New ColumnText(Cb)
Dim ph As Phrase
Dim ch As Chunk
Dim p As Paragraph = new Paragraph()
Dim image As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(_appendImg)
image.ScaleAbsolute(w, h)
p.Add(new Chunk(image,x,y))
ct.SetSimpleColumn(p,x, y, w, h, _leading, align)
ct.Go()
End Sub
End Class
我看到您使用绝对位置在图像上放置徽标,所以我也是,如果不需要将Chunk
的宽度设置为8,可以考虑修改其用法。