2013-04-30 17 views
6

Ho un problema con riguardo all'orientamento della pagina del formato della carta.
Ho un file pdf che contiene portrait e pagina panoramica.Impostazione della posizione dell'immagine utilizzando iTextSharp

questo codice funziona perfettamente.

string FileLocation = "c:\\Temp\\SomeFile.pdf"; 
    string WatermarkLocation = "c:\\Temp\\watermark.gif"; 

    Document document = new Document(); 
    PdfReader pdfReader = new PdfReader(FileLocation); 
    PdfStamper stamp = new PdfStamper(pdfReader, new FileStream(FileLocation.Replace(".pdf","[temp][file].pdf"), FileMode.Create)); 

    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(WatermarkLocation); 
    img.SetAbsolutePosition(250,300); // set the position in the document where you want the watermark to appear (0,0 = bottom left corner of the page) 

    PdfContentByte waterMark; 
    for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
    { 
     waterMark = stamp.GetUnderContent(page); 
     waterMark.AddImage(img); 
    } 
    stamp.FormFlattening = true; 
    stamp.Close(); 

    // now delete the original file and rename the temp file to the original file 
    File.Delete(FileLocation); 
    File.Move(FileLocation.Replace(".pdf", "[temp][file].pdf"), FileLocation); 

dal momento che sto usando valore assoluto per impostare la posizione dell'immagine.

img.SetAbsolutePosition(250,300); 

Come può T impostare la posizione dell'immagine se la pagina è orizzontale o verticale?
note: un pdf con orientamento orizzontale e verticale.

C'è un caso che posso usare se dichiarazione?

if (//paper is landscape) 
{ 
//code here 
} 
else 
{ 
//code here 

}

risposta

1

Cosa vuoi raggiungere?

Normalmente, iText tiene conto del valore della rotazione della pagina. Ciò significa che quando una pagina viene ruotata, anche le coordinate verranno ruotate.

Se si vuole tener conto di tale, è possibile aggiungere questa riga:

stamper.RotateContents = false; 

Questo è spiegato in Chapter 6 of my book. Si può provare this example per vedere la differenza:

  1. No rotazione, il testo aggiunto normalmente: hello1.pdf
  2. di rotazione, il testo aggiunto normalmente (= ruotato): hello2.pdf
  3. di rotazione, il testo aggiunto con rotazione ignorato: hello3.pdf

Ovviamente, questo presuppone che sia stata definita una rotazione per le pagine. A volte, il paesaggio viene imitato definendo una diversa dimensione della pagina anziché definire una rotazione.

In questo caso, è necessario leggere anche Chapter 6 perché spiega come ottenere il MediaBox di un documento. vedere l'esempio PageInformation che introduce metodi come GetPageSize(), GetRotation() e GetPageSizeWithRotation().

Questo è tutto documentato, ma se non risponde alla tua domanda, ti preghiamo di chiarire. Come dimostrato nell'esempio, la rotazione viene presa in considerazione di default quando si aggiungono nuovi contenuti, quindi forse ho frainteso la domanda.

Problemi correlati