Announcement

Collapse
No announcement yet.

Probleme mit Stream

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit Stream

    Hallo liebe .net Gemeinde,

    ich hab da ein Problem mit der Stream Verarbeitung.

    Die unten abgedruckte Funktion öffnet eine PDF Datei und fügt ein Wasserzeichen hinzu. Da ich die geänderte PDF Datei als stream zurückgeben möchte, habe ich mir ein Memorystream Objekt erstellt welches mit Return outputStream zurückgegeben wird.

    Nun ist mein Problem, dass der Stream leer ist.

    Wenn ich statt "PdfStamper(reader, outputStream)" PdfStamper(reader, New FileStream("C:\test.pdf", FileMode.Create)) verwende wird eine Datei test.pdf angelegt die dann auch das Wasserzeichen enthällt.

    Was muss ich machen damit die Ausgabe in den outputStream geschrieben wird??

    Vielen Dank schonmal für eure Hilfe.

    Private Function SetWatermark(ByVal stream As Stream, ByVal WatermarkText As String) As Stream

    Dim outputStream As Memorystream
    Dim reader As PdfReader = New PdfReader(stream)
    Dim totalpages As Integer = reader.NumberOfPages

    Dim stamp As PdfStamper = New PdfStamper(reader, outputStream)
    'Dim stamp As PdfStamper = New PdfStamper(reader, New FileStream("C:\test.pdf", FileMode.Create))

    Dim document As Document = New Document(PageSize.A4)

    Dim i As Integer = 0
    Dim under As PdfContentByte

    Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.WINANSI, BaseFont.EMBEDDED)

    While i < totalpages
    i = i + 1
    under = stamp.GetUnderContent(i)
    under.BeginText()

    under.SetTextMatrix(document.Top, document.Bottom)
    under.SetFontAndSize(bf, 220)

    under.SetColorFill(Color.GRAY)
    under.ShowTextAligned(Element.ALIGN_CENTER, WatermarkText, document.PageSize.Width / 2, document.PageSize.Height() / 2, 55)

    under.EndText()
    End While
    outputStream.Flush()
    stamp.Close()

    Return outputStream
    End Function

  • #2
    Hallo,

    Ich bin mir nicht sicher, ob es die Loesung fuer dein Problem ist, aber ich hatte schon mal so eine aehnliche Situation und die Loesung war einfach die aktuelle Position des Stream-Objekts auf 0 zurueckzusetzen.

    Beispiel:
    outputStream.Position = 0

    Vielleicht hilft es dir weiter.
    *-- robert.oh. --*

    Comment


    • #3
      Hallo,

      danke für deine schnelle Antwort.
      Das hat schon ein bischen geholfen. Dadurch habe ich rausgefunden, dass outputStream nicht ganz leer ist. Beim Aufruf von New PdfStamper(reader, outputStream) wird inden outputStream "%PDF-1.2 %����" reingeschrieben, also der Kopf der Datei.

      Mehr passiert leider nicht.

      Comment

      Working...
      X