PDFsharp & MigraDoc Foundation
http://forum.pdfsharp.de/

WaterMark Trouble
http://forum.pdfsharp.de/viewtopic.php?f=2&t=1572
Page 1 of 1

Author:  mitja.GTI [ Tue Mar 08, 2011 11:54 am ]
Post subject:  WaterMark Trouble

Hi,

i'm a new user and i have successfully created a pdf document.
Now i'm facing a new chalange as i would like to ad WaterMark to the existing document.

I was looking at samples at http://pdfsharp.com/PDFsharp/index.php?option=com_content&task=view&id=40&Itemid=51.
I was following them and i got an error:
Image

This is my code:
(I'm curently coding a project in vb.net but feel free to write in C# since i'm familiar with both languages.)
Code:
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Dim fileData As Byte()
        Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("xxx").ConnectionString)
            'some code...
            connection.Open()
            fileData = DirectCast(command.ExecuteScalar(), Byte())
            connection.Close()
        End Using

        Dim mypdf As New System.IO.MemoryStream(fileData)

        'Dim document As New PdfDocument(mypdf)
        Dim document As PdfDocument = New PdfDocument()
        document = PdfReader.Open(mypdf)

        Dim page As PdfPage = document.Pages(0)
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend)

        Dim MyWaterM As String = "WaterMark"
        ' Get the size (in point) of the text
        Dim options As XPdfFontOptions = New XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always)
        Dim font As XFont = New XFont("Calibri", 12, XFontStyle.Regular, options)
        Dim size As XSize = gfx.MeasureString(MyWaterM, font)

        ' Define a rotation transformation at the center of the page
        gfx.TranslateTransform(page.Width.Point / 2, page.Height.Point / 2)
        gfx.RotateTransform(-Math.Atan(page.Height.Point / page.Width.Point) * 180 / Math.PI)
        gfx.TranslateTransform(-page.Width.Point / 2, -page.Height.Point / 2)

        ' Create a string format
        Dim format As New XStringFormat()
        format.Alignment = XStringAlignment.Near
        format.LineAlignment = XLineAlignment.Near

        ' Create a dimmed red brush
        Dim brush As XBrush = New XSolidBrush(XColor.FromArgb(128, 255, 0, 0))

        ' Draw the string
        gfx.DrawString(MyWaterM, font, brush, New XPoint((page.Width.Point - size.Width) / 2, (page.Height.Point - size.Height) / 2), format)

        Dim stream As New MemoryStream()
        document.Save(stream, False)
        Dim data As Byte() = stream.ToArray()

        Response.ContentType = "application/pdf"
        Response.AddHeader("content-length", fileData.Length.ToString())
        Response.BinaryWrite(data)
        Response.End()

    End Sub


If i remove the line:
Code:
gfx.DrawString(MyWaterM, font, brush, New XPoint((page.Width.Point - size.Width) / 2, (page.Height.Point - size.Height) / 2), format)

everything works :)

Please advise...
Thank you.

Author:  mitja.GTI [ Tue Mar 08, 2011 11:59 am ]
Post subject:  Re: WaterMark Trouble

Oh... :roll:

I'm so sorry for spamming, i just found the problem... (i'm tired, been coding for more than 24h non stop)

i replaced
Code:
Response.AddHeader("content-length", fileData.Length.ToString())

with
Code:
Response.AddHeader("content-length", data.Length.ToString())


Sorry again :oops:

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/