为什么 WebView 中的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF?

2024-05-12

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];

上面的代码做了什么?

  1. WebView 用于加载嵌入有 PDF 的 HTML,使用img标签。请参阅 html 源代码here https://github.com/tvarghese/TestWebView/blob/master/Page.html

  2. 加载webview后,尝试使用NSView的文档视图获取PDF数据带 PDFInsideRect 的数据 method

  3. 内存中的 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

问题

  1. dataWithPDFInsideRect: 在 Mavericks 上是否不能像以前在 OSX 的早期版本上一样工作?

  2. 我必须将 PDF 嵌入 HTML(从 Mavericks 开始)以便 Webkit 在屏幕外正确呈现它们的方式是否有变化?

  3. 是否有其他方法可以在 Mavericks 上从相同的 HTML 获取质量更好的 pdf?


PDF 是一种专有文件格式,由于各种主要是公司政治原因,Apple 故意决定不使用它。您最终得到的 PDF 的质量完全取决于您正在使用的库 - 从声音来看,您最新的 Mavericks 使用的是不同的驱动程序库,这不太理想。

如果您要渲染为 HTML/使用 Webkit,Mavericks 存在一个已知问题,其中 Safari 默认情况下无法正确处理 PDF。要更新此内容,请从服务器终端运行此命令。

defaults write com.apple.Safari WebKitOmitPDFSupport -bool NO

下载最新的 Adob​​e Reader 副本并安装它可能会为您提供/重新安装/刷新正确的驱动程序(如果这不起作用)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 WebView 中的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF? 的相关文章

  • 将 SVG 元素放置在图像上

    是否可以拥有以下元素并设置它们的样式 以便 SVG 对象出现在图像上 即像图像的一部分 目前它们显示在其下方的新行中 我知道我可以将图像设置为父 div 的背景图像 但不幸的是我还需要能够在父级内旋转它 所以我认为这不是一个选项 div s
  • Objective-C 2.0中的多线程问题

    我有我的主应用程序委托 其中包含一个返回对象的方法 该应用程序委托在主线程上运行 我还有一个在不同线程上运行的 NSOperation 除了希望有时能够在主线程上调用我的应用程序委托方法之外 我还需要从 NSOperation 线程中调用它
  • 如何将 twitter bootstrap 与 Spring MVC 一起使用

    我不明白为什么我的 Spring MVC 页面没有隐藏引导样式 我的你好 jsp
  • 从 Google Chrome 打印时的页码

    我看过这个答案 page bottom left content counter page counter pages 很多次 但它从来没有为我输出任何内容到页面 即使它应该工作 我尝试过 创造性 的方法来在底部获取页码 但我永远无法让它可
  • Mac 上的 PythonXY?

    如何在 Mac OS X Lion 上安装 Python 我开始了 它应该能够通过 macports 但无论如何我找不到 mac ports 网站上所述的端口 pythonXY 我对 MAC 和 pythonXY 都不太了解 但在 pyth
  • 如何使用 iTextSharp 拼合 XFA PDF 表单?

    我假设我需要展平 XFA 表单 以便在使用 Nuance 的 CSDK 的应用程序的 UI 上正确显示 当我现在处理它时 我收到一条通用消息 请等待 如果该消息最终没有被替换 正在寻找一些示例 iTextSharp 代码来执行此操作 您没有
  • 如何在 Jupyter 笔记本单元中制作一个大图形,在输出到 html 时可滚动

    如您所知 当您在 Jupyter Notebook 单元格中打印大型表格时 无论表格是在 Notebook 环境中打印还是保存到 html 文件中 当表格太大时 都会自动使其可水平或垂直滚动 但对于图形来说 当它太大时 它会像大表格一样可滚
  • 更改特定元素的滚动速度[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 好吧 我不知道如何编写脚本 但是在
  • 如何判断相机是否正在被其他进程使用?

    在 OS X 中 如何判断摄像头或麦克风是否正在被其他应用程序或进程使用 除非其他应用程序锁定了设备 否则以下操作似乎不起作用 NSArray devices AVCaptureDevice devices for AVCaptureDev
  • 在 Mac OS X 中将 Caps Lock 用作 Esc

    How do I make Caps Lock work like Esc in Mac OS X Edit As described in this answer https stackoverflow com a 40254864 66
  • 图像之间的垂直间距

    我将一张图像剪切为三张相同的图像 现在我将其放入 html 代码中 如下所示 img src images disclosure2 01 jpg alt Disclosure img src images disclosure2 02 gi
  • 使用 JavaScript 填写 PDF 表单

    这就是我所拥有的 用户填写很长的 html 表单 用户获取下载不同 pdf 的链接 这是可填写的表格 链接是使用 javascript 生成的 用户单击链接 生成 url 使用用户之前提交的数据 在表单中处理数据并完成字段 这是在表单内使用
  • 将字符串编码为 HTML 字符串 Swift 3

    如何快速编码字符串以删除所有特殊字符并将其替换为其匹配的 html 编号 假设我有以下字符串 var mystring This is my String That s it 然后用它的html编号替换特殊字符 38 39 gt 62 但我
  • 如何在 Mac OS X 中删除文件的“扩展属性”?

    我有一个苹果脚本 http en wikipedia org wiki AppleScript运行压力测试的脚本 测试的一部分是打开 保存和关闭某些文件 不知何故 这些文件具有一些 扩展属性 禁止保存文件 这会导致压力测试失败 如何删除扩展
  • 如何用css3和html5制作不规则形状的div?

    我想知道是否有可能构建具有不规则形状的 div 类似于此 例如格陵兰岛 欧洲 非洲 我想使用 CSS3 和 HTML5 创建像这里这样的地图 以下是示例图像的链接 你所拥有的看起来像一个网格 你可以通过一个 div 上的许多渐变来获得它 也
  • 如何使页面上的所有内容变大?

    如果我在浏览器中打开我的网站并按Ctrl 有几次 一切都变得更大 网站对我来说看起来更好 我可以通过在 HTML 代码中添加一些内容来实现相同的效果吗 以便用户默认看到更大的所有内容 而无需按Ctrl 我想让所有东西都变大 文本和图像 如果
  • 自动调整元素 (div) 大小以适合水平内容

    我尝试谷歌搜索 但没有得到太多结果 我正在构建一个水平轮播 它在浮动的 LI 中显示图像 我想解决的问题是 每次我向轮播添加缩略图 我是延迟加载 时 我都需要重新计算轮播的宽度 以便所有浮动缩略图很好地并排排列 其一 我宁愿不必在 JS 中
  • 在 HTML5 画布上创建颜色选择器

    如何在 HTML5 画布上绘制颜色选择器 一个基本的例子是使用getImageData http jsfiddle net eGjak 60 http jsfiddle net eGjak 60 var ctx cv get 0 getCo
  • Javascript 替换为正则表达式无法正常工作

    我正在尝试使用正则表达式验证名称 正则表达式阻止用户连续输入 2 个空格或点 这是我的代码 function test input var regex A Za z 0 1 s 0 1 input value input value rep
  • ☺ 不在移动版本中呈现

    我如何获得特殊角色 笑脸在移动浏览器中正确呈现 li a href http goo gl GjxlI title target blank span style font size 20px span a li 它在大多数浏览器上显示为

随机推荐