2011-12-03 15 views
10

Varolan bir pdf dosyasını almalı ve metin ile form alanları listesini programlı olarak doldurmalı ve pdf'yi kullanıcıya göstermeden kaydetmeliyim.iOS'ta, bir pdf form alanını program aracılığıyla nasıl doldurabilirsiniz?

Örneğin, pdf dosyası "LastName" ve "FirstName" adlı alanları içeriyorsa, "FirstName" değerini "Louis" olarak ayarlamak ve dosyayı kaydetmek istiyorum.

iOS belgelerinin (ve burada yer alan soruların çoğunun), değiştirilmek yerine pdf içeriği oluşturulmasına veya oluşturulmasına neden olduğu için, uzun zamandır aradığım ve nereden başlayacağınız konusunda herhangi bir rehber bulamıyorum. .

DÜZENLEME:
Benim asıl soru şudur: pdf akışına (I bunun nasıl biliyorum) açmak ve yeni bir pdf içine her mevcut pdf sözlük öğesini kopyalamak mümkün mü? Sözlük kalemlerini bir pdf'ye yazmanın bir yolunu bulamadım.

+0

Bunu yapmanın bir yolunu buldunuz mu? Ne ile geldiğini paylaşır mısın? – xizor

+0

Maalesef, yok. Sadece form alanları boş ve yazılı dizeleri doğrudan dosyaya bıraktım .... – lnafziger

+0

@lnafziger Dizeleri doğrudan dosyaya nasıl yazdığınıza dair bir kod yazabilir misiniz? Bunun üzerinde çalışıyorum, ancak form değerini değiştirmek, dosyadaki herhangi bir ikili veriyi mahvediyor. – paulrehkugler

cevap

0

Bu, bir HTML sayfası ile daha kolay olurdu. Bunun yerine bir .pdf formunun bir HTML sayfası kullanmak isterseniz o zaman Thius bunu yaparken hakkında gitmek geçerli:

[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();"]; 

Sen "alan2" ve "alan2 iki UILabels oluşturmak veya UITextFields ve onları aramak gerekir ".h dosyanıza. Daha sonra, değiştirmeniz gereken alanın kimliğini bulabilirsiniz. # field1 ve sonra "# field1" koyduğum yere koyup tekrar "# field2" koyduğum ikinci alan için koy. Ayrıca, zaten yüklü olan sayfa ile bir UIWebView olması gerekiyor. Bu kod, UIWebView sayfası yüklendikten sonra kullanılacaktır. Belki aşağıdakileri yapın: Eğer bütün form için bunu yapmak istiyorum

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

// Insert above code here 

} 

Muhtemelen JavaScript tam bir anlayış gerekir, ancak bu başlangıç ​​almalısınız.

Size yardımcı olur umarım.

+0

Örnekler için teşekkürler, ancak bunun bir pdf içinde olması gerekiyor! – lnafziger

+2

Html'yi bir PDF'ye dönüştüremez misiniz? – pixelbitlabs

+1

Ne yazık ki, bu düzenli olarak değişen bir çok karmaşık bir pdf, bu yüzden kodu (web sayfasında ya da anında pdf oluşturma) yeniden oluşturmak (ve sürdürmek) istemiyorum. – lnafziger

1

Bu tür işlevlerin hiçbir zaman iOS çerçevelerinde bulunmayacağından şüphem yok. İlgili bilginin çoğunun "görünüşünü değiştirmek yerine pdf içeriği gösterme veya oluşturma yönündedir" şeklinin çoğunun nedeni, kullanım durumlarının büyük çoğunluğunun PDF işlevselliğini isteyeceği veya ihtiyaç duyacağıdır.

PDF'leri açabilen, AcroForm alanlarını doldurabilen ve sonra bir PDF'i dışarı aktaran bir 3. parti kitaplığı bulmanız gerekir. Java üzerinde iText kullanıyorum (C# için iTextSharp da var) ama Objective-C için hiçbir şey bilmiyorum.

Kitaplığı bulduğunuzda, onu projenize entegre etmeniz gerekir. Şüphesiz, kullandığınız SDK sürümü için SO ile ilgili birkaç soru/cevap var.

+0

Girdi için teşekkürler, ancak bir üçüncü taraf kitaplığı istemiyorum. IOS framework fonksiyonlarını genel bir çözüm yazmak için kullanmak istiyorum (bunu bitirdiğimde başkalarıyla paylaşacağım). IOS belgelerinin çoğunu okuduktan sonra eminim ki bu yapılabilir, ancak daha tanıdık olan birinin bana doğru yönde işaret edebileceğini umuyordum! – lnafziger

+0

Shaggy Frog haklı, CGPDF * API, form doldurma alanları dahil olmak üzere PDF modifikasyonunu desteklemiyor. – iPDFdev

+2

CGPDF doğrudan modifikasyona izin vermezken, sonuçta aradığım şey budur. Düşündüğüm yaklaşım pdf akışını açmak, her sözlük öğesini kopyalamak, form alanlarının içeriğini değiştirmek ve yeni bir pdf'ye kaydetmek. Yine de yardıma ihtiyacım olan kısım, baktığım tüm rutinleri, tüm belgeye erişim vermek yerine, pdf'den belirli bölümleri çekmeye izin verdiğinden, tüm pdf'yi kopyalamamı sağlamak. Sanırım aradığım şey, bir akışı açmanın ve bir dosyayı bir kerede aynı dosyalarla biten yeni bir dosyaya kopyalamanın bir yoludur. – lnafziger

İlgili konular