2016-06-25 103 views
-2

Ich möchte eine Tabelle über ein Wasserzeichenbild einfügen. Ich habe viele Schritte befolgt, aber alle helfen beim Schreiben über das Bild und fügen keine Tabelle ein.Ein Wasserzeichen Bild und Tabelle in Itext - Bearbeitet

Edit: das Bild sollte auf jeder Seite in das PDF-Dokument eingefügt werden. Ich möchte darüber schreiben mit pdfdTable. Alle Suchen beschreiben, wie ein Text über ein Wasserzeichen geschrieben wird.

z.B: document.add(getWatermarkedImage(cb, img, "some text"));

wenn i die pdfdtable auf das Dokument als document.add (Tabelle) hinzugefügt; Es wird nicht über das Bild sein. Es wird oberhalb des Bildes eingefügt.

wie das ist meine Tabelle:

outerCell = new PdfPCell(new Paragraph(" header 1")); 
outerCell.setColspan(70); 
outerCell.setBackgroundColor(BaseColor.LIGHT_GRAY); 
outerTable.addCell(outerCell); 

, wie ich dieses outertable über dem Wasserzeichen einfügen könnte

+0

Diese Frage sollte geschlossen werden, weil es nicht klar ist: Erstellen Sie ein Dokument von Grund auf oder fügen Sie einem vorhandenen Dokument ein Wasserzeichen hinzu? Verwenden Sie iText 5 oder verwenden Sie iText 7. Sie behaupten, dass Sie * viele Schritte * gefolgt sind, aber warum sollte Ihnen jemand glauben, wenn Sie uns nicht zeigen, was Sie versucht haben? Hast du überhaupt die Dokumentation gelesen? Es gibt buchstäblich ein Dutzend [Beispiele über Wasserzeichen] (http://developers.itextpdf.com/search/node/watermark) auf der offiziellen Website. Sicherlich kann Ihnen eines dieser Beispiele helfen? Wenn nicht, warum nicht? –

+0

Wenn Sie ein Dokument von Grund auf neu erstellen, müssen Sie die Antwort zu [Hinzufügen eines Wasserzeichens zu einer Seite mit einem undurchsichtigen Bild] (http://developers.itextpdf.com/question/how-add-watermark) lesen -page-opaque-image) Wenn Sie ein bestehendes Dokument mit einem Wasserzeichen versehen, benötigen Sie [Wie können PDFs mit Text oder Bildern mit Wasserzeichen versehen werden?] (http://developers.itextpdf.com/question/how-watermark-pdfs) -Verwendung von Text-oder-Bildern) Ich würde die Frage schließen, indem ich sie als Duplikat einer [Frage, die erklärt, wie man Bilder transparent macht] markiert (http://stackoverflow.com/questions/27241731/), aber das Antwort bekam nie eine Stimme. –

+1

Zeigen Sie uns alle die vielen Schritte, die Sie verfolgt haben, und jemand (nicht ich) tritt ein, um Ihnen zu sagen, was Sie ändern müssen. Ohne deinen Code, keine Antwort. –

Antwort

0

Ihre Frage klingt falsch. Es ist, als wenn Sie ein Bild Wasserzeichen zu einem Dokument hinzuzufügen, die angemessen in vielen anderen Fragen wie Set a fix background image for all my pages in PDF iText ASP C# und How can I add an image to all pages of my PDF? erklärt (Diese Antworten sind etwa C# Fragen, aber die official web site hat viele watermark und page event Beispiele.)

Genau wie madhesh, verwirren Sie die Stackoverflow Leser, auch nachdem Sie meine Antwort auf die Frage gelesen habe How to add text to an image?, wo ich schrieb:

Dies ist ein gutes Beispiel für eine Frage ist, die in einer Art und Weise formuliert ist, dass niemand beantworten kann es richtig. Nach vielen Hin und Herkommentaren war es endlich klar, dass das OP einem Bild ein Textwasserzeichen hinzufügen wollte. Schlecht formulierte Fragen können sehr frustrierend sein. Bitte berücksichtigen Sie dies, wenn Sie eine Frage stellen. In diesem Fall gab ich mehrere falsche Antworten, bevor klar wurde, was eigentlich gefragt wurde.

Sie möchten einen hinzufügen PdfPTable, um eine Image und Ihr Wissen reicht nicht aus zu verstehen und die Beispiele mit den Antworten auf Fragen wie How to add text to an image? und Draw Lines on Image in PDF using ItextSharp vorgesehen anzupassen.

Was Sie fragen, ist jedoch sehr einfach.

Die getWatermarkedImage() Methode, die Sie erwähnen, sieht wie folgt aus:

public Image getWatermarkedImage(PdfContentByte cb, Image img) throws DocumentException { 
    float width = img.getScaledWidth(); 
    float height = img.getScaledHeight(); 
    PdfTemplate template = cb.createTemplate(width, height); 
    template.addImage(img, width, 0, 0, height, 0, 0); 
    template.saveState(); 
    template.setColorStroke(BaseColor.GREEN); 
    template.setLineWidth(3); 
    template.moveTo(width * .25f, height * .25f); 
    template.lineTo(width * .75f, height * .75f); 
    template.moveTo(width * .25f, height * .75f); 
    template.lineTo(width * .25f, height * .25f); 
    template.stroke(); 
    template.setColorStroke(BaseColor.WHITE); 
    template.ellipse(0, 0, width, height); 
    template.stroke(); 
    template.restoreState(); 
    return Image.getInstance(template); 
} 

Dies ist das Beispiel aus der Antwort auf die Frage How to draw lines on an image?

Sie wollen nicht, Linien zu ziehen, so dass Sie entfernen alle der Code, Linien zieht:

public Image getWatermarkedImage(PdfContentByte cb, Image img) throws DocumentException { 
    float width = img.getScaledWidth(); 
    float height = img.getScaledHeight(); 
    PdfTemplate template = cb.createTemplate(width, height); 
    template.addImage(img, width, 0, 0, height, 0, 0); 
    // removed the code that draws lines 
    return Image.getInstance(template); 
} 

Statt Linien, möchten Sie eine PdfPTable ziehen, so dass wir ad d einige Code, wo es // removed the code that draws lines sagt.Wie dokumentiert, bei einer absoluten Position einer Tabelle Zugabe wird mit der writeSelectedRows() Methode durchgeführt:

public Image getWatermarkedImage(PdfContentByte cb, Image img) throws DocumentException { 
    float width = img.getScaledWidth(); 
    float height = img.getScaledHeight(); 
    PdfTemplate template = cb.createTemplate(width, height); 
    template.addImage(img, width, 0, 0, height, 0, 0); 
    PdfPTable table = new PdfPTable(2); 
    table.setTotalWidth(width); 
    table.getDefaultCell().setBorderColor(BaseColor.Yellow); 
    table.addCell("Test1"); 
    table.addCell("Test2"); 
    table.addCell("Test3"); 
    table.addCell("Test4"); 
    table.writeSelectedRows(0, -1, 0, height, template); 
    return Image.getInstance(template); 
} 

I eines der vielen Beispiele in der offiziellen Dokumentation angepasst (siehe WatermarkedImages5), und dies ist das Ergebnis:

enter image description here

Die gesamte Funktionalität, die Sie hierfür benötigten, finden Sie in der Dokumentation. Bitte lesen Sie diese Dokumentation, bevor Sie eine weitere Frage stellen.