2011-12-03 13 views
10

Potrzebuję pobrać istniejący plik pdf i programowo wypełnić listę pól formularza z tekstem, a następnie zapisać plik PDF bez wyświetlania go użytkownikowi.W systemie iOS można programowo wypełnić pole formularza PDF?

Na przykład, jeśli plik pdf zawiera pola o nazwie "LastName" i "FirstName", chciałbym ustawić wartość "FirstName" na "Louis", a następnie zapisać plik.

Długo szukałem i nie mogę znaleźć wskazówek na temat tego, od czego zacząć, ponieważ dokumentacja iOS (i większość pytań tutaj) wydaje się być nastawiona na wyświetlanie lub tworzenie treści PDF zamiast na modyfikację .

EDIT:
Moje główne pytanie brzmi: Czy jest możliwe, aby otworzyć strumień PDF (wiem, jak to zrobić) i skopiować każdy istniejący element słownika pdf do nowego pliku PDF? Nie byłem w stanie znaleźć sposobu na zapisanie elementów słownika do pliku pdf.

+0

Czy kiedykolwiek wymyśliłeś sposób na zrobienie tego? Czy mógłbyś podzielić się tym, co wymyśliłeś? – xizor

+0

Niestety, nie, nie mam. Właśnie opuściłem pola formularzy puste i zapisane ciągi bezpośrednio w pliku .... – lnafziger

+0

@lnafziger Czy możesz napisać jakiś kod o tym, jak napisałeś ciągi bezpośrednio do pliku? Pracowałem nad tym, ale modyfikowanie wartości formularza rujnuje wszelkie dane binarne w pliku. – paulrehkugler

Odpowiedz

0

Byłoby to łatwiejsze do zrobienia ze stroną HTML. Jeśli chcesz użyć strony HTML zamiast formie .pdf następnie thius to jak byś go o to robi:

[field1 setText:@"Field 1 Text"]; 
[field2 setText:@"Field 2 Text"]; 

NSString *result; 
result = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"$('#field1').val('%@');", field1.text]]; 
result = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"$('#pfield2').val('%@');", field2.text]]; 
result = [webView stringByEvaluatingJavaScriptFromString:@"$('#submitbutton').click();"]; 

Trzeba by stworzyć dwa UILabels lub UITextFields i nazywają je „pole2” i „pole2 "w twoim pliku .h. Następnie możesz znaleźć identyfikator pola, które chcesz zastąpić, np. # pole1, a następnie umieść go tam, gdzie umieściłem "# pole1" i ponownie dla drugiego pola, w którym umieściłem "# pole2". Musi również istnieć UIWebView ze stroną już załadowaną. Ten kod ma być używany po stronie UIWebView została załadowana. Może wykonać następujące czynności:

-(void)webViewDidFinishLoad:(UIWebView *)webView { 

// Insert above code here 

} 

Prawdopodobnie potrzebujesz pełnego zrozumienia JavaScriptu, jeśli chcesz zrobić to dla całego formularza, ale powinno zacząć.

Nadzieję, że pomaga.

+0

Dzięki za przykłady, jednak musi to być w pliku pdf! – lnafziger

+2

Nie możesz przekształcić html w plik PDF? – pixelbitlabs

+1

Niestety, jest to już istniejący, bardzo skomplikowany plik pdf, który zmienia się regularnie, więc nie chcę odtwarzać (i utrzymywać) go w kodzie (ani jako strony internetowej, ani w formacie PDF w locie). – lnafziger

1

Wątpię, że tego rodzaju funkcjonalność kiedykolwiek znajdzie się w środowisku iOS. Powód, dla którego większość powiązanych informacji, które można znaleźć "wydaje się [s] nastawiona na wyświetlanie lub tworzenie treści pdf zamiast na modyfikowanie jej", wynika z tego, że większość przypadków użycia będzie potrzebować lub potrzebować funkcjonalności PDF.

Musisz znaleźć bibliotekę firmy zewnętrznej, która może otwierać pliki PDF, wypełniać pola AcroForm, a następnie wytłaczać plik PDF. Używam iText na Javie (jest też iTextSharp dla C#), ale nic nie wiem o Objective-C.

Gdy znajdziesz tę bibliotekę, musisz ją zintegrować z projektem. Z pewnością jest tu kilka powiązanych pytań/odpowiedzi na SO dla dowolnej wersji SDK, z którego korzystasz.

+0

Dzięki za wejście, jednak nie chcę biblioteki innej firmy. Chcę użyć funkcji ramowych systemu iOS, aby napisać ogólne rozwiązanie (które udostępnię innym, gdy je skończę). Po przeczytaniu wielu dokumentacji na iOS, jestem pewien, że można to zrobić, ale miał nadzieję, że ktoś, kto jest bardziej znany, może wskazać mi właściwy kierunek! – lnafziger

+0

Shaggy Frog ma rację, API CGPDF * nie obsługuje modyfikacji PDF, w tym wypełniania pól formularzy. – iPDFdev

+2

Podczas gdy CGPDF nie pozwala na bezpośrednią modyfikację, efekt końcowy jest tym, czego szukam. Podejście, o którym myślę, to otworzyć strumień PDF, skopiować każdy element słownika, zmodyfikować zawartość pól formularza i zapisać w nowym pliku pdf. Część, której potrzebuję pomocy, polega na upewnieniu się, że skopiowałem cały plik pdf, ponieważ procedury, które analizowałem, pozwalają wyciągnąć określone części z pliku PDF zamiast udostępniać cały dokument. Myślę, że to, czego szukam, to sposób na otworzenie strumienia i skopiowanie go po jednym elemencie naraz do nowego pliku kończącego się identycznymi plikami. – lnafziger

Powiązane problemy