html – 打印UIWebView时意外的分页符

TLDR:如果您打印包含 HTML文本的UIWebView,该内容包含文本对齐/中心的元素,则生成的文档将具有意外大的底部页边距的页面.

我遇到这个问题,当我不能google任何有类似问题的人时,非常惊讶.我已经向苹果提出了一个雷达(#20760071),并在ResearchKit的GitHub repo上创建了一个issue,因为这影响了他们的ORKHTMLPDFWriter.

AFAIK这也影响所有使用UIWebView将HTML转换为PDF的库,我已经测试过:

> BNHtmlPdfKit
> NDHTMLtoPDF

我想知道有没有人可以想出一些解决方法.

如何复制:

NSMutableString* html = [NSMutableString string];
[html appendString:@"<html><body>"];
for (int i=0; i<200; i++) {
    [html appendString:@"<div align=\"right\">line</div>"];
}
[html appendString:@"</body></html>"];

UIPrintInteractionController* pc = [UIPrintInteractionController sharedPrintController];

UIPrintInfo* printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGrayscale;

pc.printInfo = printInfo;
pc.showsPaperSelectionForLoadedPapers = YES;

UIWebView* web = [UIWebView new];
[web loadHTMLString:html baseURL:nil];
pc.printFormatter = web.viewPrintFormatter;

[pc presentAnimated:YES completionHandler:^(UIPrintInteractionController *printInteractionController,BOOL completed,NSError *error) {
    NSLog(@"%d -- %@",completed,error);

}];

您还可以克隆在ResearchKit中演示此问题的project.

编辑 – 有些可用的解决方法:

知道内容的特定宽度(例如图像),可以对齐它而不指定文本对齐,例如:

使用自动边距:

<div>
    <div style="width:200px; margin-left:auto; margin-right:0px;">
        content
    </div>
</div>

浮动列:

<div>
    <div style="width:200px; float:right;">
        content
    </div>
</div>

但是,上面没有一个用于对齐可变长度的文本,这是我关心的主要用例.

解决方法

瓦诺,

在一些测试之后我想出的解决方案是添加以下css规则与文本对齐.

display: -webkit-box;
display: -webkit-flex;
display: flex;
justify-content: flex-end;
-webkit-justify-content: flex-end;
text-align:right;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


html5中section的用法
span标签和p标签的区别
jsp文件和html文件的区别是什么
span标签和div的区别
html颜色代码表大全
span标签的作用是什么
dhtml的主要组成部分包括什么
html编辑器哪个软件好用
span标签属于什么样式标签
html文件乱码怎么办
html怎么读取json文件
html文件打开乱码怎么恢复原状
html怎么链接外部css
html文件怎么保存到本地
html怎么链接css文件
html和css怎么连接
html和css怎么关联
html文件怎么保存到一个站点
html文件怎么写
html出现乱码怎么解决