2016-12-24 69 views
2

我可以將文本添加到現有的pdf中,如下面的url中所述。 但是,當我添加它們時,文本保留在pdf中圖像的下方。我該如何解決這個問題?用itextsharp插入現有pdf中的文本

ITextSharp insert text to an existing pdf

編輯:

public void createFromPDF(string mapPath) 
    { 
     string oldFile = mapPath.Replace("Home", "") + "Content\\Uploads\\fiyat-listesi.pdf";// "oldFile.pdf"; 
     string newFile = mapPath.Replace("Home", "") + "Content\\Uploads\\new.pdf";//"newFile.pdf"; 

     // open the reader 
     PdfReader reader = new PdfReader(oldFile); 
     Rectangle size = reader.GetPageSizeWithRotation(1); 
     Document document = new Document(size); 

     // open the writer 
     FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write); 
     PdfWriter writer = PdfWriter.GetInstance(document, fs); 
     document.Open(); 

     // the pdf content 
     PdfContentByte cb = writer.DirectContent; 

     // select the font properties 
     BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 
     cb.SetColorFill(Color.RED); 
     cb.SetFontAndSize(bf, 8); 

     // write the text in the pdf content 
     cb.BeginText(); 
     string text = "Some random blablablabla..."; 
     // put the alignment and coordinates here 
     cb.ShowTextAligned(1, text, 520, 640, 0); 
     cb.EndText(); 
     cb.BeginText(); 
     text = "Other random blabla..."; 
     // put the alignment and coordinates here 
     cb.ShowTextAligned(2, text, 100, 200, 0); 
     cb.EndText(); 

     // create the new page and add it to the pdf 
     PdfImportedPage page = writer.GetImportedPage(reader, 1); 
     cb.AddTemplate(page, 0, 0); 

     document.NewPage(); 

     Paragraph p = new Paragraph("aaaaaaaaaaaaaaaaaa", new Font(bf)); 
     document.Add(p); 


     PdfImportedPage page2 = writer.GetImportedPage(reader, 2); 
     cb.AddTemplate(page2, 0, 0); 

     document.NewPage(); 


     Paragraph pwe = new Paragraph("aaaaaaaaaaaaaaaaaa", new Font(bf)); 
     document.Add(p); 

     cb.EndLayer(); 

     PdfImportedPage page3 = writer.GetImportedPage(reader, 3); 
     cb.AddTemplate(page3, 0, 0); 



     // close the streams and voilá the file should be changed :) 
     document.Close(); 
     fs.Close(); 
     writer.Close(); 
     reader.Close(); 
    } 

enter image description here

+1

請說明問題。 「文字留在圖像下面」不一定是個問題。解釋你的期望,並顯示你的代碼而不是引用另一個問題。爲什麼沒有爲這個問題提供答案回答你的問題? –

+0

謝謝,我添加了代碼和截圖。 – onder

回答

2

兩個備註:

  1. 您先添加文本,然後添加圖像。因此圖像覆蓋了文本。這是基本邏輯。如果您切換順序並首先添加圖像,那麼文本和文字將覆蓋圖像。這是純粹的常識。
  2. 您通過導入PdfImportedPagePdfWriter來操縱現有的PDF。這證明你沒有閱讀文檔。您應該改用PdfStamper

您的代碼太複雜。切換到PdfStamper並使用ColumnText對象添加文本。請勿使用BeginText()/EndText()。另外:爲什麼你使用EndLayer() ???你有什麼想法是什麼方法?

+0

它與PdfStamper和ColumnText一起使用。 – onder

相關問題