2009-02-24 14 views
36

Mam istniejący plik PDF i mogę używać FdFWriter do wprowadzania do pól tekstowych. To dobrze działa. Teraz mam obraz. Przeczytałem dokumentację i przyjrzałem się wielu przykładom, ale wszystkie one tworzą nowe dokumenty i wstawiają obraz. Chcę wziąć istniejący plik PDF i wstawić obraz do pola obrazu lub jako ikony przycisku. Próbowałem, ale to psuje dokument.Jak mogę wstawić obraz z iTextSharp do istniejącego pliku PDF?

Potrzebuję być w stanie wziąć istniejący dokument i umieścić na nim obraz. Nie chcę otwierać, czytać, zastępować ani usuwać oryginału. Ta oryginalna zmiana i nazwa "oryginał" oznacza tylko plik źródłowy w tym kontekście. Istnieje wiele plików PDF, takich jak ten, które potrzebują obrazu.

Dziękuję za pomoc.

Edytuj - Jestem bardzo wdzięczny za poniższy kod. Działa świetnie, ale problem polega na tym, że istniejący plik PDF ma podpis cyfrowy. Kiedy dokument jest kopiowany w ten sposób (do wyniku.pdf), te sygnatury, mimo że wciąż są obecne, mają inną liczbę bajtów lub inny element, który jest uszkodzony. Oznacza to, że podpisy, które pojawiają się na wynik.pdf, mają ikonę obok nich, które określają "nieprawidłowy podpis".

Jeśli to ma znaczenie, używam tabliczki do podpisów Topaz do tworzenia moich podpisów, które mają własne bezpieczeństwo. Samo skopiowanie pliku PDF nie spowoduje jego uszkodzenia, ale proces poniżej.

Próbuję umieścić obraz na istniejącym dokumencie, a nie jego kopii, która w tym przypadku ma znaczenie.

Podpisując, mam na myśli również odręczne, a nie numery PIN.

Jeszcze raz dziękuję.

EDYCJA - czy można użyć PdfSignatureAppearance?

EDIT - I wydaje się być w stanie zrobić to z:

var matryca = new PdfStamper (czytnik, outputPdfStream, '1', true);

+0

To również może się przydać: http://stackoverflow.com/questions/7115242/insert-an-image-in-pdf-using-itextsharp –

Odpowiedz

56

Jeśli chcesz zmienić zawartość istniejącego pliku PDF i dodać dodatkowe treści, takie jak znaki wodne, numery okładek, dodatkowe nagłówki, obiekt PdfStamper jest tym, czego potrzebujesz. I z powodzeniem używany następujący kod, aby wstawić obraz do istniejącego pliku PDF do danej pozycji absolutnej:

using System.IO; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (Stream inputPdfStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read)) 
     using (Stream inputImageStream = new FileStream("some_image.jpg", FileMode.Open, FileAccess.Read, FileShare.Read)) 
     using (Stream outputPdfStream = new FileStream("result.pdf", FileMode.Create, FileAccess.Write, FileShare.None)) 
     { 
      var reader = new PdfReader(inputPdfStream); 
      var stamper = new PdfStamper(reader, outputPdfStream); 
      var pdfContentByte = stamper.GetOverContent(1); 

      Image image = Image.GetInstance(inputImageStream); 
      image.SetAbsolutePosition(100, 100); 
      pdfContentByte.AddImage(image); 
      stamper.Close(); 
     } 
    } 
} 

Po wstawieniu obrazu masz możliwość, aby ją zmienić. Możesz zajrzeć do transformation matrix w dokumentacji iTextSharp.

+0

Czy istnieje sposób, aby to zrobić, gdzie umieszcza obraz na oryginale zamiast wyniku.pdf? Dziękuję za tę odpowiedź. – johnny

+0

Powodem jest to, że dokument ma podpis cyfrowy, który jest uszkodzony przez proces. – johnny

+3

Podpis cyfrowy gwarantuje, że dokument nie został zmieniony. Nie można dodawać do niego treści bez rezygnacji z dokumentu. –

1

mogę rozwiązać mój problem, po prostu dodając następujące wiersze do mojego kodu podpisywania dodać zdjęcie

var image = iTextSharp.text.Image.GetInstance(@"C:\Users\sushil\Documents\sansign.jpg"); 
appearance.Acro6Layers = true; 
appearance.SignatureGraphic = image; 
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION; 

Jak byłem podpisywanie dokumentu z widocznym podpisem cyfrowym, teraz mogę mieć jednocześnie właściwości obrazu i podpisu cyfrowego,

+0

Problem polegał na dodaniu obrazu do istniejącego, już podpisanego pliku PDF, a nie do ustawienia obrazu wizualizacji podpisu. – mkl

+0

Myślę, że dodanie czegokolwiek do podpisanego dokumentu unieważnia podpisany cyfrowo dokument. proszę mnie poprawić, jeśli się mylę. –

+0

Po szczegóły patrz. http://stackoverflow.com/documentation/pdf/5161/integrated-pdf-signatures/18524/allowed-and-disallowed-changes-to-a-signed-document#t=20170227100646546925 – mkl

Powiązane problemy