首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整Swift中从API下载的pdf文档的大小

调整Swift中从API下载的pdf文档的大小
EN

Stack Overflow用户
提问于 2019-08-30 02:27:33
回答 2查看 1.7K关注 0票数 1

一周后,我很确定这是不可能完成的,但我想我会付出最后的努力。

我有一个调用的API,它在response.result.value中返回一个数据对象。该数据是一个完整的PDF文件。例如,如果我用Postman调用API,然后单击保存结果,我可以使用任何PDF查看器打开保存的文件。

现在,既然我是viewController中的数据对象,我就可以调用data.write( to : pdfURL)并将文件写入我指定的URL。

此时PDF仍然很好,我可以打印那个URL,然后在查找器中定位该文件,然后再用任何PDF查看器查看它,没有问题。

问题出在这里。最后,我想把PDF文件发送到一个小标签打印机,在打印机中的标签是2“宽,1”高。我从API获得的PDF文件,创建了8.5“x11”大小的PDF。

因此,当它打印在标签上时,它会缩小文件以适应标签,使标签上的文本和图像变得如此小,以至于无法读取。

我不能改变来自API的PDF。我不能再改变打印机上的设置了。

唯一的机会,我必须“放大”这是改变文件或页的PDF文件的大小。

我尝试过获取写入磁盘的文件的句柄,然后得到它的页面,然后设置它的界限。

但这一页只是空白。我知道PDF以x=0开头,y=0位于左下角,所以我使用这两种方法作为页面大小:

代码语言:javascript
复制
let page = CGRect(x: 0, y: 0, width: 85, height: 40)
let page = CGRect(x: 472, y: 707, width: 85, height: 40)


guard let data = response.result.value else {
            print("Did not get PDF data from API")
            return
        }

let page = CGRect(x: 472, y: 707, width: 85, height: 40)

let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let fileName = "shelfTag.pdf"
let pdfURL = documentURL.appendingPathComponent("\(fileName)")

do {
    print(pdfURL)
    try data.write(to: pdfURL)
} catch {
    print("Couldn't write PDF to file.)    
}

if #available(iOS 11.0, *) {
    let pdfDocument = PDFDocument(url: pdfURL)
    let pdfPage = pdfDocument?.page(at: 0)
    pdfPage?.setBounds(page, for: .mediaBox)
    pdfDocument?.write(toFile: pdfURL.path)
} else {
   // Fallback on earlier versions
}

要么图像和文本太小而无法阅读,要么打印的标签只是空白。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-04 21:26:29

iOS中的PDF功能有限。如果您可以访问PDF上的数据,可以使用这些类重新创建所需大小的PDF。https://developer.apple.com/documentation/uikit/1623915-uigraphicsbeginpdfpagewithinfo?language=objc

另一个选择是使用像Foxit这样的第三方应用程序。也许你可以使用一个免费的版本。

不幸的是,没有简单的答案!

票数 1
EN

Stack Overflow用户

发布于 2020-07-06 16:48:54

这在我看来很有前途:https://github.com/prachigauriar/ResizePDF

作者这样描述它:"resizepdf是macOS的一个工具,可以调整PDF的大小!它是用Swift编写的,非常简单。它没有外部依赖。“

在我对它的简单实验中,我发现尽管它是一个作为命令行工具的Mac应用程序,但我认为它可以很容易地迁移到iOS。

我发现这个应用程序很好用,但是一些小错误使它无法马上运行。(在启动时运行的测试查找的文件名与资产具有的文件名不同。在资产上匹配该名称以获得成功。没有必要将应用程序作为命令行工具运行--在Xcode中运行时,它会启动一个测试任务。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57719771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档