如何使用iTextSharp绘制轮廓颜色为红色且内部颜色为灰色的水印文本 [英] How to draw watermark text whose outline color is red and inner color is gray using iTextSharp

查看:155
本文介绍了如何使用iTextSharp绘制轮廓颜色为红色且内部颜色为灰色的水印文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用iTextSharp绘制轮廓颜色为红色且内部颜色为灰色的水印文本

How to draw watermark text whose outline color is red and inner color is gray using iTextSharp

推荐答案

如果您使用的是水印我假设你在谈论一个 PdfStamper 。如果是这样,一旦你有一个原始 PdfContentByte 使用 GetOverContent() GetUnderContent ()您需要设置几个属性。

If you are using a watermark I'm assuming that you are talking about a PdfStamper. If so, once you've got a raw PdfContentByte using either GetOverContent() or GetUnderContent() there's just a couple of properties that you need to set.


  • PdfContentByte.SetLineWidth(单个) - 设置笔触粗细

  • PdfContentByte.SetColorFill(BaseColor.GRAY) - 设置填充颜色。您还可以使用任何其他颜色方法,例如 SetRGBColorFill() SetCMYKColorFill()

  • PdfContentByte.SetColorStroke(BaseColor.RED) - 设置笔触颜色

  • PdfContentByte .SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE) - 标记您希望使用填充和描边绘制文本

  • PdfContentByte.SetLineWidth(single) - set the stroke thickness
  • PdfContentByte.SetColorFill(BaseColor.GRAY) - set the fill color. You can also use any of the other color methods such as SetRGBColorFill() or SetCMYKColorFill()
  • PdfContentByte.SetColorStroke(BaseColor.RED) - set the stroke color
  • PdfContentByte.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE) - flag that you want text to be draw with both a fill and a stroke

下面是一个完整的WinForms应用程序,目标是将iTextSharp 5.1.1.0放在一起。您应该能够相当容易地将其移动到ASP.Net,并在需要时将其转换为C#。

Below is a full working WinForms app targetting iTextSharp 5.1.1.0 that puts it all together. You should be able to move this to ASP.Net fairly easily as well as convert it to C# if needed.

Option Explicit On
Option Strict On

Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ''//Our sample files
        Dim InputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf")
        Dim OutputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test_W_Watermark.pdf")

        ''//Create our input file to watermark later, nothing special here
        Using FS As New FileStream(InputFile, FileMode.Create, FileAccess.Write, FileShare.Read)
            Using Doc As New Document(PageSize.LETTER)
                Using W = PdfWriter.GetInstance(Doc, FS)
                    Doc.Open()

                    Doc.Add(New Paragraph("This is a test"))

                    Doc.Close()
                End Using
            End Using
        End Using


        ''//Watermark the file that we create above

        ''//Bind a reader to our input file
        Dim R As New PdfReader(InputFile)
        ''//Create our output file stream
        Using FS As New FileStream(OutputFile, FileMode.Create, FileAccess.Write, FileShare.Read)
            ''//Bind a stamper to our output file stream
            Using stamper As New PdfStamper(R, FS)
                ''//Grab the raw content byte to draw with
                Dim cb = stamper.GetOverContent(1)

                ''//Flag that we are starting text commands
                cb.BeginText()

                ''//Set the stroke width
                cb.SetLineWidth(2)

                ''//Set the fill (inner) color for the font
                cb.SetColorFill(BaseColor.GRAY)

                ''//Set the stroke (outer) color for the font
                cb.SetColorStroke(BaseColor.RED)

                ''//Flag that when drawing text the system should use both a fill and a stroke
                cb.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE)

                ''//Set a font to draw with
                cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 50)

                ''//Tell the system to start drawing at the center of the first page
                cb.SetTextMatrix(R.GetPageSize(1).Width / 2, R.GetPageSize(1).Height / 2)

                ''//Draw the actual text
                cb.ShowText("Hello")

                ''//Flag that we are done drawing text
                cb.EndText()
            End Using
        End Using
        Me.Close()
    End Sub
End Class

这篇关于如何使用iTextSharp绘制轮廓颜色为红色且内部颜色为灰色的水印文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆