首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向razorpdf mvc添加水印

向razorpdf mvc添加水印
EN

Stack Overflow用户
提问于 2014-09-10 00:24:59
回答 3查看 1.8K关注 0票数 3

我使用下面的代码在mvc中使用itext和razorpdf生成器生成pdf。

代码语言:javascript
复制
@model myModel.Models.Examform
@{
    Layout = null;
}
<itext creationdate="@DateTime.Now.ToString()" producer="RazorPDF">
    Hello
</text>

这段代码运行良好。我想在生成的pdf文件中添加一个水印。我知道如何添加图像。我需要一个在背景中显示的水印。

EN

回答 3

Stack Overflow用户

发布于 2014-09-10 00:32:25

这几乎是相同的问题。

ItextSharp - RazorPdf put image on Pdf

所以使用这里的答案对你来说应该是有效的:

代码语言:javascript
复制
<image url="@Context.Server.MapPath("~/Images/sampleImage.png")" />

编辑:要在图像上覆盖文本,您需要修改CSS和HTML。

How to position text over an image in css

Add "Watermark" effect with CSS?

http://www.the-art-of-web.com/css/textoverimage/

您可能需要将CSS放在内联中。

票数 1
EN

Stack Overflow用户

发布于 2015-08-29 03:52:03

这就是我所做的。代码放在控制器中。

代码语言:javascript
复制
[HttpPost]
public FileStreamResult Certificate(MyModel model)
{
    Stream fileStream = GeneratePDF(model);
    HttpContext.Response.AddHeader("content-disposition", "inline; filename=Certificate.pdf");

    var fileStreamResult = new FileStreamResult(fileStream, "application/pdf");
    return fileStreamResult;
}

public Stream GeneratePDF(HomeViewModel model)
{ 
    var rect = new Rectangle(288f, 144f);
    var doc = new Document(rect, 0, 0, 0, 0);

    BaseFont bfArialNarrow = BaseFont.CreateFont(Server.MapPath("../Content/fonts/ARIALN.ttf"), BaseFont.CP1252, BaseFont.EMBEDDED);

    //Full Background Image (Includes watermark)
    Image fullBackground = null;
    fullBackground = Image.GetInstance(Server.MapPath("../Content/images/Certificate/Cert1.jpg"));

    doc.SetPageSize(PageSize.LETTER.Rotate());

    MemoryStream memoryStream = new MemoryStream();
    PdfWriter pdfWriter = PdfWriter.GetInstance(doc, memoryStream);
    doc.Open();

    //Full Background Image
    fullBackground.Alignment = Image.UNDERLYING | Image.ALIGN_CENTER | Image.ALIGN_MIDDLE;
    doc.Add(fullBackground);

    Font myFont = new Font(bfArialNarrow, 57);
    var myParagraph = new Paragraph("Some text here.", myFont);
    doc.Add(myParagraph);

    pdfWriter.CloseStream = false;
    doc.Close();

    memoryStream.Position = 0;

    return memoryStream;
}
票数 1
EN

Stack Overflow用户

发布于 2015-08-29 08:54:10

我认为通过标记是不可能的。

如果你看过RazorPDF源代码中的PdfView.cs,它在iTextsharpt中使用XmlParser或HtmlParser来呈现pdf。

https://github.com/RazorAnt/RazorPDF/blob/master/RazorPDF/PdfView.cs

这两个类对标记的支持是有限的。你只能做他们已经实现的事情。

另一种方法是使用iTextsharp通过代码创建pdf。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25749627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档