2013-03-11 30 views
8

Sto creando un pdf e ho bisogno di mettere una linea orizzontale nella pagina. Qualcuno può dire come farlo?Come mostrare la linea orizzontale in iTextSharp

Ho un file xml che ha il mio tag html (<table>....</table>). E l'intero contenuto del file xml viene analizzato in un string che viene utilizzato per creare il pdf. Ora alcuni tag non sono supportati. Uno di questi è <hr>. Quindi c'è qualche altro tag che posso usare nel file xml in modo che questo possa disegnare uno lineline quando il pdf viene creato utilizzando dati xml.

Di seguito è un esempio di XML xontent

<table> 
    <tr> 
    <td> 
     <span> 
      This is working properly. 
     </span> 
    </td> 
    <tr> 
</table> 

<table> 
    <tr> 
    <td> 
     <span> 
      <hr> 
      This is not working properly. 
     </span> 
    </td> 
    <tr> 
</table> 

prega fatemi sapere se sono necessarie ulteriori informazioni.

Grazie in anticipo.

+0

[Guarda qui] (http://stackoverflow.com/quest ioni/5103404/problem-in-drawing-a-line-in-a-pdf-file-using-itextsharp) E [anche qui] (http://stackoverflow.com/questions/4894329/code-isnt-drawing -a-horizontal-line-in-my-pdf) – Haris

+0

Grazie Haris. Ho bisogno di un equivalente di
Non sto usando il codice dietro la creazione di elementi pdf. Ho un semplice codice HTML che devo mostrare. In particolare, voglio mostrare solo il bordo inferiore di una riga della tabella. – Narendra

+0

Quale versione di Itextsharp stai usando? –

risposta

4

Di seguito crea un completo larghezza linea nera spessa pochi pixel, sto usando HTMLWorker.Parse:

<table> 
    <tr> 
    <td> 
     <span> 
      This is working properly. 
     </span> 
    </td> 
    <tr> 
</table> 

<table> 
    <tr> 
    <td> 
     <span> 
     <table border="1" cellpadding="0" cellspacing="0"><tr><td>&nbsp;</td></tr></table> 

      This is working properly now too! 
     </span> 
    </td> 
    <tr> 
</table> 
+0

Grazie Peter. Questo creerà una linea di larghezza 2px. Ma mi chiedo se ci sia un altro modo per farlo. Segnalo come risposta se non viene fornita una risposta migliore entro 1-2 giorni. – Narendra

+0

@Narendra - Sono d'accordo che questa non è una soluzione ideale. Ho iniziato a cercare nel codice sorgente per cercare di rintracciare il modo in cui esegue il rendering di vari tag per vedere se potrebbe esserci un'opzione migliore, ma non sono riuscito a fermarmi molto lontano. Per rendere il tuo xml più carino, puoi lasciare in


e quindi eseguire una sostituzione di stringa su
con la tabella HTML. – Peter

+0

Hmmm, grazie per il tuo tentativo e risposta. – Narendra

0

È possibile disegnare linee da inizio postion (moveTo), LineTo e poi corsa (commettere la riga):

... 
PdfContentByte cb = writer.DirectContent; 
.... 
cb.MoveTo(doc.PageSize.Width/2, doc.PageSize.Height/2);  
cb.LineTo(doc.PageSize.Width/2, doc.PageSize.Height);  
cb.Stroke(); 
... 
+0

Si prega di verificare la domanda modificata. In realtà sto creando il contenuto in xml. Quindi questo contenuto xml è direttamente utilizzato per creare pdf. Non sto usando elementi pdf code-behind. – Narendra

0

Spero che questo ti aiuta

PdfPTable table = new PdfPTable(1);    //Create a new table with one column 
PdfPCell cellLeft = new PdfPCell();    //Create an empty cell 
StyleSheet style = new StyleSheet();    //Declare a stylesheet 
style.LoadTagStyle("h1", "border-bottom", "red");   //Create styles for your html tags which you think will be there in PDFText 
List<IElement> objects = HTMLWorker.ParseToList(new StringReader(PDFText),style); //This transforms your HTML to a list of PDF compatible objects 
for (int k = 0; k < objects.Count; ++k) 
{ 
    cellLeft.AddElement((IElement)objects[k]); //Add these objects to cell one by one 
} 
table.AddCell(cellLeft); 
Problemi correlati