직선 HTML을 사용하여 파일을 인쇄하려고하는데 인쇄 파일에 이미지를 추가하는 데 어려움이 있습니다.UIMarkupTextPrintFormatter에서 이미지를 추가하는 방법?
내 프로젝트의 이미지를 인쇄 할 HTML로 어떻게 참조 할 수 있습니까? UIMarkupTextPrintFormatter가 태그를 지원합니까?
직선 HTML을 사용하여 파일을 인쇄하려고하는데 인쇄 파일에 이미지를 추가하는 데 어려움이 있습니다.UIMarkupTextPrintFormatter에서 이미지를 추가하는 방법?
내 프로젝트의 이미지를 인쇄 할 HTML로 어떻게 참조 할 수 있습니까? UIMarkupTextPrintFormatter가 태그를 지원합니까?
사실은 훨씬 간단하게 생각했던 것보다 :
NSString *yourImagePath = [[[NSBundle mainBundle] URLForResource:@"resource" withExtension:@"extension"] absoluteString];
그런 다음 당신이 <img>
에서 이미지 경로를 넣을 수 있고 이미지를 렌더링합니다! 빌라!
나는 하루 종일 있었으며 인쇄 작업에 이미지를 어떻게 사용하던간에 항상 이미지를 렌더링하지 않는 것 같습니다. 나는 여러 가지 방법을 시도했다. 1) Base64 임베딩 이미지 데이터, 2) 파일 경로 URL 예. "file : /// localhost/...", 3) 문자열 기반 파일 경로 "/ Applications/....". 내 샌드 박스 문서 디렉토리에 이미지를 저장하고 아무 것도 렌더링하지 않았습니다. pdf의 다른 모든 것들이 좋습니다. 나는 또한 위의 시도하고 번들에서 이미지조차 밖으로 렌더링되지 소용이 없습니다. 뭐라 구요? 심지어 html을 파일에 넣고 내 컴퓨터의 사파리에로드합니다 (시뮬레이터에서 테스트 한 이후의 절대 경로는 동일하므로).
소스
+ (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
개발 컴퓨터에서 사파리에서 렌더링동일한 HTML
그래서? PDF가 올바르게 렌더링되지 않습니다. –
로컬 이미지는 먼저 imageView 내부에 배치 된 다음 base64 값으로 변환되어 이미지 태그 내부에서 사용되어야합니다.
let imageData:NSData = UIImagePNGRepresentation(imageView.image!)!
let strBase64:String = imageData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)
var imageTag = String(format: "<img src=\"data:image/png;base64,%@\"", strBase64)
최악의 코드. 왜 . Encoding64CharacterLineLength? –
저에게는 효과가없는 것 같습니다. 나는 이런 식으로한다 : – JonEasy
'UIPrintInteractionController'에게 먹이를 주었을 때 작동하지만'UIGraphicsBeginPDFContextToData'로 PDF 파일을 만들려고하지 않을 때 – ReDetection