我正在尝试使用直接HTML打印文件,但是,我在将图像添加到打印文件时遇到了困难。
如何在我想要打印的HTML中引用项目中的图像? UIMarkupTextPrintFormatter是否支持标签?
答案 0 :(得分:11)
它实际上比我想象的要简单得多:
NSString *yourImagePath = [[[NSBundle mainBundle] URLForResource:@"resource" withExtension:@"extension"] absoluteString];
然后您可以将图像路径放在<img>
中,它将渲染图像!瞧!
答案 1 :(得分:4)
我整天都在这里,无论我如何将图像合并到我的打印作业中,它似乎总是无法渲染它们。我尝试了多种方法。 1)Base64嵌入图像数据,2)文件路径URL例如。 “file:/// localhost / ...”,3)基于字符串的文件路径“/ Applications / ....”。我一直在将图像存储在我的沙盒文档目录中,并且没有任何内容呈现出来。 pdf中的其他所有内容都很好。我也尝试了上述内容并且无法使用甚至包中的图像都会呈现出来。是什么赋予了?我甚至把html放到一个文件中并在我的计算机上安装了safari(因为在模拟器中测试绝对路径是相同的)并且它可以工作。
来源
+ (NSData*)renderMarkup:(NSString*)markup
{
UIMarkupTextPrintFormatter *formatter = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:markup];
SBAnnotationPrintPageRenderer *renderer = [[SBAnnotationPrintPageRenderer alloc] init];
[renderer addPrintFormatter:formatter startingAtPageAtIndex:0];
renderer.footerHeight = 10;
renderer.headerHeight = 10;
NSMutableData * pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil);
for (NSInteger i = 0; i < [renderer numberOfPages]; i++)
{
UIGraphicsBeginPDFPage();
CGRect bounds = UIGraphicsGetPDFContextBounds();
[renderer drawPageAtIndex:i inRect:bounds];
}
UIGraphicsEndPDFContext();
return pdfData;
}
生成的Html
<table>
<tr>
<td>
<img style='background-color:blue;' src='/Users/zachthayer/Library/Application Support/iPhone Simulator/6.1/Applications/A47C1BDF-DCD1-49A5-A452-59802AEC2A94/Documents/29161AFF-BE35-4EEE-A7A1-ACF2DA9ABA71.png'/>
</td>
<td>
<h2>Superadmin</h2>
<i>00:00:00:00</i>
<p>Test note</p>
</td>
</tr>
</table>
渲染PDF
在开发计算机上的safari中呈现的相同html
答案 2 :(得分:1)
本地图像应首先放在imageView中,然后转换为base64值,并在html中的图像标记内使用它。
let imageData:NSData = UIImagePNGRepresentation(imageView.image!)!
let strBase64:String = imageData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)
var imageTag = String(format: "<img src=\"data:image/png;base64,%@\"", strBase64)