Frage

Ich erstelle programmgesteuert ein PDF mit iTextSharp und generiere eine PDF-Tabelle.

In einigen Zellen muss ich einen Hyperlink haben.

Ohne Hyperlink kann ich den Text in der Zelle horizontal und vertikal ausrichten, aber wenn ich den Block hinzufüge, der meinen Hyperlink enthält, verliert die Zelle ihre Ausrichtungseigenschaft.

Hier ist mein Code...

var webAddress = new Chunk(row["product_code"].ToString(), linkFont);
webAddress.SetAnchor(row["url"].ToString());

PdfPCell ProductCodeCell = new PdfPCell();
ProductCodeCell.AddElement(webAddress);
ProductCodeCell.VerticalAlignment = Element.ALIGN_MIDDLE;
ProductCodeCell.HorizontalAlignment = Element.ALIGN_CENTER;
ProductCodeCell.Padding = 3f;
table.AddCell(ProductCodeCell);

Kann mir jemand helfen, den Link neu auszurichten?

Vielen Dank.

War es hilfreich?

Lösung

Sehen diese Antwort für eine Diskussion über Textmodus gegen Composite-Modus.Grundsätzlich, wenn Sie verwenden AddElement() sie müssen die Ausrichtung für Ihr Objekt anstelle der Zelle selbst festlegen. Chunk hat jedoch keine Ausrichtung, also müssen Sie Ihren Block in etwas einwickeln, das tut, was das ist Paragraph.

var table = new PdfPTable(1);

//Create our chunk with anchor
var webAddress = new Chunk("hello");
webAddress.SetAnchor("http://www.example.net/");

//Create a paragraph holding the chunk and set the alignment on _it_
var para = new Paragraph(webAddress);
para.Alignment = Element.ALIGN_CENTER;

//Create our cell
PdfPCell ProductCodeCell = new PdfPCell();

//Add the paragrph to it
ProductCodeCell.AddElement(para);

//Padding on the cell still works
ProductCodeCell.Padding = 30f;

//Add cell to table
table.AddCell(ProductCodeCell);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top