Mit itextSharp PDF ist es möglich, ein Bild auf der Oberseite der text, der beim erstellen der pdf-Dokument
Ich versuchte mehrere Möglichkeiten, dies zu tun, ist aber immer noch nicht bekommen.
Es erscheint iTextSharp erfordert eine 2-pass-situation, so dass ein Bild erscheint, auf den text zu.
Also ich bin versucht, dies zu tun mit memory-streams, aber ich bekomme immer Fehler.
Public Function createDoc(ByRef reqResponse As HttpResponse) As Boolean
Dim m As System.IO.MemoryStream = New System.IO.MemoryStream()
Dim document As Document = New Document()
Dim writer As PdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(document, m)
document.Open()
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Add(New Paragraph(DateTime.Now.ToString()))
document.Close()
writer.Flush()
writer.Flush()
'yes; I get the pdf if this is the last statement
'reqResponse.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length)
'this statment does not work it says the stream is closed
'm.Position = 0
Dim Reader As PdfReader = New PdfReader(m)
'Dim rm As MemoryStream = New MemoryStream(m.GetBuffer(), 0, m.GetBuffer().Length)
Dim PdfStamper As PdfStamper = New PdfStamper(Reader, reqResponse.OutputStream)
Dim cb As iTextSharp.text.pdf.PdfContentByte = Nothing
cb = PdfStamper.GetOverContent(1)
Dim locMyImage As System.Drawing.Image = System.Drawing.Image.FromStream(zproProduceWhiteImageToCovertBarCodeNumbers())
Dim BImage As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(locMyImage, iTextSharp.text.BaseColor.CYAN)
Dim overContent As PdfContentByte = PdfStamper.GetOverContent(1)
BImage.SetAbsolutePosition(5, 5)
overContent.AddImage(BImage)
PdfStamper.FormFlattening = True
PdfStamper.Close()
'rm.Flush()
'rm.Close()
'Dim data As Byte() = rm.ToArray()
'reqResponse.Clear()
'Dim finalMs As MemoryStream = New MemoryStream(data)
'reqResponse.ContentType = "application/pdf"
'reqResponse.AddHeader("content-disposition", "attachment;filename=labtest.pdf")
'reqResponse.Buffer = True
'finalMs.WriteTo(reqResponse.OutputStream)
'reqResponse.End()
'Dim data As Byte() = rm.ToArray()
'reqResponse.OutputStream.Write(data, 0, data.Length)
''Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
''Response.OutputStream.Flush();
''Response.OutputStream.Close();
''Response.End();
HttpContext.Current.ApplicationInstance.CompleteRequest()
Return True
End Function
Referenz:
Setzen Sie text auf einem Bild?
search engine Referenz:
whiteout text auf ein pdf-Dokument mit einem Bild, das die gleiche Farbe wie der hintergrund pdf
Bild überschneiden sich mit itextpdf
itextsharp Bild auf den text zu whiteout
itextsharp Ort, Bild auf text
itextpdf Bild oben
Dank,
Doug Lubey von Louisiana
- Abbildung oben sieht aus wie PDF Ausgabe. Hoffe, dass das nicht Ihre Absicht; auch iText[Sharp] kann wiederherstellen von text aus einer PDF-Datei so erstellt. Ein link und weiteres aus der mailing-Liste zu erklären, dass es einfacher ist, verwenden Sie ein anderes tool für richtige schwärzen. (die person, die gab Antworten in beiden Threads arbeitet für Adobe und PDF Experte)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun, ziemlich leicht. Die
Document
Objekt ist ein Helfer-Objekt, das abstrahiert viel von den Interna der PDF-Modell und zum größten Teil davon ausgegangen, dass Sie wollen zu fließen Inhalt und text gehen würde, obige Bilder. Wenn Sie möchten, dies zu umgehen, können Sie sprechen direkt diePdfWriter
Objekt statt. Es hat zwei Eigenschaften,DirectContent
undDirectContentUnder
dass beide Methoden mit dem NamenAddImage()
, die Sie verwenden können, um eine absolute position auf einem Bild.DirectContent
ist über die vorhandenen Inhalte undDirectContentUnder
ist darunter. Sehen Sie den code für ein Beispiel:Sie zu sein scheinen, dies zu tun auf dem web, so müssen Sie diese anpassen, um was auch immer stream, den du verwendest, aber das sollte Recht einfach sein.
Einen Hinweis, NIE nennen
GetBuffer()
auf eineMemoryStream
, IMMER verwendenToArray()
. Die erste Methode enthält uninitialisierte bytes, wird Ihnen möglicherweise korrupte PDF-Dateien.