2017-10-11 5 views
1

나는 pdf를로드하고 텍스트를 추가하고 새 파일에 저장해야합니다. 이 코드는 작동하지만 이미지 아래에 텍스트가있는 곳에서는 볼 수 없습니다. 무엇을 할 수 있습니까?itextsharp의 이미지 위에있는 텍스트

Dim oldFile As String = Application.StartupPath & "\old.pdf" 
    Dim newFile As String = Application.StartupPath & "\new.pdf" 

    Dim reader As New PdfReader(oldFile) 
    Dim size As Rectangle = reader.GetPageSizeWithRotation(1) 
    Dim document As New Document(size) 
    Dim wNnumberOfPages As Integer = reader.NumberOfPages 
    Dim fs As New FileStream(newFile, FileMode.Create, FileAccess.Write) 
    Dim writer As PdfWriter = PdfWriter.GetInstance(document, fs) 
    document.Open() 
    Dim cb As PdfContentByte = writer.DirectContent 
    Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED) 

    Dim wPage As Integer 
    For wPage = 1 To wNnumberOfPages 
     Dim _text As String = "TEXT" 
     Dim Page As PdfImportedPage = writer.GetImportedPage(reader, wPage) 
     cb.BeginText() 
     cb.SetFontAndSize(bf, 10) 
     cb.ShowTextAligned(2, _text, 470, 760, 0) 
     cb.EndText() 
     cb.AddTemplate(Page, 0, 0) 
     document.NewPage() 
    Next 
    document.Close() 
    fs.Close() 
    writer.Close() 
    reader.Close() 
먼저 텍스트를 그릴 다음 가져온 페이지 그려

답변

0

:

Dim Page As PdfImportedPage = writer.GetImportedPage(reader, wPage) 
cb.BeginText() 
cb.SetFontAndSize(bf, 10) 
cb.ShowTextAligned(2, _text, 470, 760, 0) 
cb.EndText() 
cb.AddTemplate(Page, 0, 0) 

따라서, 텍스트의 위치에서 가져온 페이지의 모든 내용을 다룰 것입니다.

먼저 가져온 페이지 다음 텍스트를 그릴 대신하는 경우, 텍스트는 가져온 페이지의 내용 위에있을 것입니다 : 당신은 단지에 뭔가를 근절하려면 있음을 의미하며,

Dim Page As PdfImportedPage = writer.GetImportedPage(reader, wPage) 
cb.AddTemplate(Page, 0, 0) 
cb.BeginText() 
cb.SetFontAndSize(bf, 10) 
cb.ShowTextAligned(2, _text, 470, 760, 0) 
cb.EndText() 

페이지가있는 경우 PdfWriter 대신 PdfStamper을 사용하고 GetImportedPage을 사용해야합니다. PdfStamper 클래스는 이러한 작업을 위해 명시 적으로 만들어지고 원본 문서의 모든 내용을 매우 충실하게 복사합니다. 반면에 사용자의 접근 방식은 원본 PDF에서 모든 대화 형 및 메타 데이터 컨텐츠를 삭제합니다.