这是我要打印的字符串:
<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>
这是我在我的应用程序中生成的较大HTML页面的一小部分,我将其传递给打印机,如下所示:
UIMarkupTextPrintFormatter *html = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:printContents];
其中打印内容包含我需要打印的所有html,包括上面的图像片段。除了不打印的图像外,打印效果非常好。
答案 0 :(得分:4)
我喜欢自相矛盾,但我认为你不能得到你正在寻找的方法。解决方法是将图像嵌入HTML本身。以下说明了原则(改编自2005年的forum post)。您可以创建一个字符串来动态表示您的图像。一个好的开始可能是stackoverflow question。
- (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) {
//
}];
}
答案 1 :(得分:4)
可以使用UIWebView
的{{1}}打印包含图像的HTML,而不是使用HTML内容(仅打印文本)配置viewPrintFormatter
。您可以从本地或远程位置加载内容,然后在UIMarkupTextPrintFormatter
方法实现中启动打印。
Sample Code(可在webViewDidFinishLoad:
课程参考中找到)。
答案 2 :(得分:4)
SWIFT 3: 我花了一段时间来解决这个问题,但是如果你使用前缀&#34; file://&#34;在您的网址前面,它会工作。像这样:
<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>
希望这有帮助
答案 3 :(得分:2)
上述建议完美无缺,以下是您需要做的事情:
下载并将其添加到您的项目中:https://github.com/mikeho/QSUtilities
将您的文件加载到NSData:
NSData *logo = [[NSData alloc] initWithContentsOfFile:filePath];
使用QSStrings进行编码以获取编码,如果是image / gif,请不要忘记更改文件类型:
NSString *encodedJpg = [NSString stringWithFormat:@"data:image/jpg;base64,%@",[QSStrings encodeBase64WithData:logo]];
使用img src中的encodedJpg字符串,就像上面的Matthew所做的那样。
这为我解决了一个巨大的问题 - 谢谢!