2017-05-04 5 views
0

iTextSharpを使用してPDFファイルを編集するためのWebアプリケーションを構築しています。ItextSharp MVC5 C# - 既存のPDFの前のテキスト

PDFに書き込もうとすると、テキストは既存のコンテンツの後ろに印刷されますが、その上に印刷する必要があります。

テキストの深さプロパティを設定するにはどうすればいいですか?

は、これは私のコード

using (var reader = new PdfReader(oldFile)) 
{ 
    using (var fileStream = new FileStream(newFile, FileMode.Create, FileAccess.Write)) 
    { 
     var document = new Document(reader.GetPageSizeWithRotation(1)); 
     var writer = PdfWriter.GetInstance(document, fileStream); 

     document.Open(); 

     try 
     { 
      PdfContentByte cb = writer.DirectContent; 

      cb.BeginText(); 
      try 
      { 
       cb.SetFontAndSize(BaseFont.CreateFont(), 12); 
       cb.SetTextMatrix(10, 100); 
       cb.ShowText("Customer Name"); 
      } 
      finally 
      { 
       cb.EndText(); 
      } 

      PdfImportedPage page = writer.GetImportedPage(reader, 1); 
      cb.AddTemplate(page, 0, 0); 

     } 
     finally 
     { 
      document.Close(); 
      writer.Close(); 
      reader.Close(); 
     } 
    } 
} 

This how the pdf looks like, one word is behind the table

答えて

0

で誰かが私は私のテキストの深さプロパティを設定する方法を私に説明できますか?

Pdfに明示的な深度またはz軸プロパティがありません。したがって、最初に描かれたものは、後で描かれるものによって覆われている。

あなたが追加したテキストの下にテンプレートを持つようにしたいのであれば、あなたはコードがテキストを追加する前に、テンプレートを追加し、コードを引く必要があります。

PdfContentByte cb = writer.DirectContent; 

PdfImportedPage page = writer.GetImportedPage(reader, 1); 
cb.AddTemplate(page, 0, 0); 

cb.BeginText(); 
try 
{ 
    cb.SetFontAndSize(BaseFont.CreateFont(), 12); 
    cb.SetTextMatrix(10, 100); 
    cb.ShowText("Customer Name"); 
} 
finally 
{ 
    cb.EndText(); 
} 

代わりにあなたが午前itextsharp機能を利用することができます。それ実際に2つのコンテンツストリーム、直接コンテンツとアンダーコンテンツを作成し、アンダーコンテンツを直接コンテンツの前に置きます。

このように、上記のようにコードを並べ替えることは選択肢ではなく、直接コンテンツの代わりに下位のコンテンツに背景を追加することができます。

+1

うわー!!!ありがとう!!!これは完全に働いた!!どうもありがとうございます!!! :) –

関連する問題