2014-09-09 3 views
3

MVC Я использую следующий код для генерации PDF в MVC, используя IText с продюсером razorpdfДобавление водяного знака razorpdf

@model myModel.Models.Examform 
@{ 
    Layout = null; 
} 
<itext creationdate="@DateTime.Now.ToString()" producer="RazorPDF"> 
    Hello 
</text> 

Этот код работает отлично. Я хочу добавить водяной знак к сгенерированному pdf. Я знаю, как добавить изображение. Мне нужен водяной знак, который отображается в фоновом режиме.

+0

У меня это разрешено с помощью iTextSharp, это то же самое, что и itext? – ADH

ответ

1

это в значительной степени тот же самый вопрос

ItextSharp - RazorPdf put image on Pdf

так, используя ответ должен работать для вас:

<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 инлайн.

+0

Я знаю, как добавить изображение. Я хочу знать, как добавить водяной знак или изображение, которое будет отображаться в фоновом режиме. –

+0

@MaryPhelps - Я добавил больше к моему ответу. – user1666620

+0

Ни один из указанных вами вариантов не работает. Все они будут работать на обычной html-странице. Они не работают в случае razorpdf. –

1

Вот что я сделал. Код поступает в контроллер.

[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

Я думаю, что это невозможно через разметку.

Если вы посмотрите на PdfView.cs в исходном коде RazorPDF, он использует XmlParser или HtmlParser в iTextsharpt для рендеринга pdf.

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

Поддержка наценки в этих двух классов ограничены. Вы можете делать только то, что они реализовали.

Альтернативный способ - использовать iTextsharp для создания pdf через код.

Смежные вопросы