2011-08-15 22 views
5
İşte

Ben yazdırmak istediğiniz dizesidir:Yerel resimlerle yerel bir html yazdırmak için UIMarkupTextPrintFormatter'ı nasıl kullanırım?

<p><img src="/Users/Max/Library/Application Support/iPhone Simulator/4.3/Applications/5FCCB847-52D9-48F4-A900-459C6A77A5A6/Documents/18/logo18_lg.jpg" alt="" height="72" /></p> 

Bu benim uygulamada yarattı büyük bir HTML sayfasının küçük bir parçası olduğunu ve bu yüzden gibi baskıya Buna geçirerek:

UIMarkupTextPrintFormatter *html = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:printContents]; 

Baskı içeriğinde, yukarıdaki resim snippet'i dahil olmak üzere yazdırmam gereken tüm html yer alıyor. Baskı, resimlerin yazdırılmaması için mükemmeldir.

cevap

4

Çatışmayı çok isterdim, ama işe baktığınız yaklaşımı alabileceğinizi düşünmüyorum. Etraftaki bir çalışma, görüntünün HTML’ye gömülmesidir. Aşağıda, (bu forum post 2005'ten itibaren uyarlanmıştır) prensibi göstermektedir. Resminizi anında temsil etmek için bir dize oluşturabilirsiniz. Başlamak için iyi bir yer bu stackoverflow question olabilir.

- (void) buttonTapped; 
{ 
    NSString* printContents = @"This is a work around <IMG SRC=\"data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUU lvONmOZtfzgFzByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSpa/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQ ZXZeYGejmJlZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwv KOzrcd3iq9uisF81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PHhhx4dbgYKAAA7\">"; 

    UIMarkupTextPrintFormatter *html = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:printContents]; 
    UIPrintInteractionController* printController = [UIPrintInteractionController sharedPrintController]; 
    [printController setPrintFormatter:html]; 
    [printController presentAnimated:YES completionHandler:^(UIPrintInteractionController *printInteractionController, BOOL completed, NSError *error) { 
     // 
    }]; 

} 
+0

müthiş olur - nerede Yukarıdaki başınızı görüntü oluşturmak için kullanılan kütüphane? – Slee

2

Öneri yukarıdaki burada, mükemmel çalışıyor bunu yapmak için gerekenler:

indirme ve projenize bu ekleyin: https://github.com/mikeho/QSUtilities

NSData içine dosyasını yüklemek:

NSData *logo = [[NSData alloc] initWithContentsOfFile:filePath]; 
Kodlamayı almak için QSStrings kullanarak

kodlayın, görüntü/gif ise dosya türünü değiştirmeyi unutmayın:

Yukarıda yapılan Matthew gibi img src'deki encodedJpg dizesini kullanmak
NSString *encodedJpg = [NSString stringWithFormat:@"data:image/jpg;base64,%@",[QSStrings encodeBase64WithData:logo]]; 
.

Bu benim için büyük bir problemi çözdü - teşekkürler!

3

UIWebViewviewPrintFormatter kullanarak HTML içeriğiyle (yalnızca metni yazdıracak) UIMarkupTextPrintFormatter yapılandırmak yerine resim ile HTML yazdırmak mümkündür. İçeriğinizi yerel veya uzak konumdan yükleyebilir ve ardından webViewDidFinishLoad: yöntem uygulamanızda yazdırmayı başlatabilirsiniz.

Sample Code Apple'dan edinilebilir (UIWebView sınıf referansında bulunmaktadır).

4

SWIFT 3: O bu anlamaya biraz zaman aldı, ancak önek "dosyasını: //" kullanırsanız URL'nizin önünde, o zaman çalışacağız. böylece gibi:

<p><img src="file:///Users/Max/Library/Application Support/iPhone Simulator/4.3/Applications/5FCCB847-52D9-48F4-A900-459C6A77A5A6/Documents/18/logo18_lg.jpg" alt="" height="72" /></p> 

Umut bu

+1

Aslında, UIMarkupTextPrintFormatter() öğesini çağırdıktan sonra bir süre beklemeniz gerekecektir. Rendering biraz zaman alır, bu yüzden pdf'ye hemen aktarırsanız, görüntüleriniz oluşturulamadı ve pdf belgesinde gösterilmeyecek. Bu konuda daha fazla bilgi için: https://stackoverflow.com/questions/40239515/uimarkuptextprintformatter-never-renders-base64-images –

+1

Bu aslında çalışıyor, base64 hack kullanmaya gerek yok. –

+0

bu kabul edilen yanıt olmalıdır, ancak düzenleme ile UIMarkupTextPrintFormatter'ın görüntüleri oluşturmayı bitirmesi için az bir süre beklemeniz gerekir – KaraBenNemsi

İlgili konular