Run 示例项目 https://github.com/tvarghese/TestWebView并观察桌面上生成的输出 PDF,名为保存网页.pdf
粘贴感兴趣的代码片段
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Page" withExtension:@"html"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[[self.webview mainFrame] loadRequest:req];
NSView *view = [[[self.webview mainFrame] frameView] documentView];
NSData *data = [view dataWithPDFInsideRect:[view bounds]];
NSArray* deskTopArrayPaths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);
NSString* deskTopPath = [deskTopArrayPaths objectAtIndex:0];
NSString* pdfPath = [NSString stringWithFormat:@"%@/SaveWebPage.pdf",deskTopPath];
PDFDocument *doc = [[PDFDocument alloc] initWithData:data];
[doc writeToFile:pdfPath];
上面的代码做了什么?
WebView 用于加载嵌入有 PDF 的 HTML,使用img标签。请参阅 html 源代码here https://github.com/tvarghese/TestWebView/blob/master/Page.html
加载webview后,尝试使用NSView的文档视图获取PDF数据带 PDFInsideRect 的数据 method
内存中的 PDF 数据写入磁盘
Results
关于版本在小牛队之前(即 10.8 和 10.7)上面的代码片段生成了一个高质量的 PDF 文档,内容可读。当在预览应用程序中打开输出 PDF 时,可以看到 PDF 内容以高质量呈现,并且在缩放时会进行缩放,而不会影响图像质量。请在此处查看 Mountain Lion 输出 PDF https://github.com/tvarghese/TestWebView/blob/master/TestWebView/SaveWebPage_MountainLion.pdf
在 Mavericks (10.9) 上,上面的代码片段会生成一个 PDF 文档,其内容因图像质量下降而变得模糊请在此处查看 Mavericks 输出 PDF https://github.com/tvarghese/TestWebView/blob/master/TestWebView/SaveWebPage_Mavericks.pdf
问题
dataWithPDFInsideRect: 在 Mavericks 上是否不能像以前在 OSX 的早期版本上一样工作?
我必须将 PDF 嵌入 HTML(从 Mavericks 开始)以便 Webkit 在屏幕外正确呈现它们的方式是否有变化?
是否有其他方法可以在 Mavericks 上从相同的 HTML 获取质量更好的 pdf?
PDF 是一种专有文件格式,由于各种主要是公司政治原因,Apple 故意决定不使用它。您最终得到的 PDF 的质量完全取决于您正在使用的库 - 从声音来看,您最新的 Mavericks 使用的是不同的驱动程序库,这不太理想。
如果您要渲染为 HTML/使用 Webkit,Mavericks 存在一个已知问题,其中 Safari 默认情况下无法正确处理 PDF。要更新此内容,请从服务器终端运行此命令。
defaults write com.apple.Safari WebKitOmitPDFSupport -bool NO
下载最新的 Adobe Reader 副本并安装它可能会为您提供/重新安装/刷新正确的驱动程序(如果这不起作用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)