问题描述
如何使用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 thicknessPdfContentByte.SetColorFill(BaseColor.GRAY)
- set the fill color. You can also use any of the other color methods such asSetRGBColorFill()
orSetCMYKColorFill()
PdfContentByte.SetColorStroke(BaseColor.RED)
- set the stroke colorPdfContentByte.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绘制轮廓颜色为红色且内部颜色为灰色的水印文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!