如何在ios上显示pdf

Yan*_*omo 26 pdf uiwebview ios

xcode iOS虽然我之前做了很多教程和在线研究,但我仍然很新,但仍然有一些事情让我困惑,因为obj c不是我的本机编程语言.(在我的实习生中自学)

我想知道是否有任何方式进行离线构建,UIWebView以便我们可以从本地文件显示pdf文件.

我现在使用的方法是通过UIWebView显示包含PDF URL(在线)的自定义HTML,但我想尽可能制作离线版本.

但是从在线研究来看,在我看来,显示PDF的唯一方法是通过UIWebView,如果确实如此,是否可以从本地资源中提取文件(例如将文件添加到我的xcode资源文件夹)而不是使用PDF网址.

OFF-TOPIC:哪个更好?要提取本地文件或使用PDF文件的在线URL?

作为UIDocumentInteractionController需要连接,它似乎是一个更好的选择,只需拉动在线URL,因为它将是最新和更新.

反馈非常感谢.谢谢!

编辑:快速问题,如果我使用xcode iOS方法或QuickLook框架使其脱机,这将意味着每次添加新的PDF文章时我必须发布更新补丁(如果我错了,请纠正我)

考虑到这一点,我现场提出了一个与我自己的问题相反的论点(对不起,如果有人觉得你在浪费时间在我身上>.<,我是一个喜欢质疑可能性的人可以采取不同的方法解决问题)为了节省时间从不断更新并提供实时基础解决方案,即使用UIWebView(我知道这与我的SO线程的目的相矛盾),因此proj基于在线网站(从那里获取我的内容和来源),如果我要为文章部分加载他们的网站,我会大胆地说通过添加NSString变量,我可以在NSRange中添加与UIWebView一起对viewDidLoad起作用,使得URL永远不会离开新闻部分和PDF URL.例如,使用if和NSRange函数的组合来反击检查URL是否只包含新闻部分和PDF URL)

我在NSRange函数之前做了一次计算器上的点,所以我认为现在是将它用于这个框架应用程序的好时机.

PS - 这个应用程序是一个组织基础项目,我是一个实习生,为他们提供基础骨架框架.

cal*_*kus 37

很多选项,这里有3个:

1)加载和显示本地pdf文件的最简单方法是使用如下的UIWebview:

NSString *path = [[NSBundle mainBundle] pathForResource:@"document" ofType:@"pdf"];
NSURL *targetURL = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[webView loadRequest:request];
Run Code Online (Sandbox Code Playgroud)

2)您也可以使用UIDocumentInteractionController/ QLPreviewController本地显示PDF文件.

3)另一种方法是构建自定义PDF查看器,如在Apple ZoomingPDFViewer示例代码中.(使用UIPageViewController + CATiledLayer + UIScrollView)

  • @ jaydee3自定义Pdf查看器很整洁:) (2认同)

sel*_*elf 34

您可以使用UIWebView直接从捆绑包中获取PDF,而无需调用在线Web服务.

本地档案:

NSString *html = [NSString stringWithContentsOfFile:path1 encoding:NSUTF8StringEncoding error:nil];
[self.webView loadHTMLString:html baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]bundlePath]]];
Run Code Online (Sandbox Code Playgroud)

远程文件:

- (void) loadRemotePdf
    {
       CGRect rect = [[UIScreen mainScreen] bounds];
       CGSize screenSize = rect.size;
        
       UIWebView *myWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,screenSize.width,screenSize.height)];
        webView.autoresizesSubviews = YES;
            webView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);

       NSURL *myUrl = [NSURL URLWithString:@"http://www.mysite.com/test.pdf"];
       NSURLRequest *myRequest = [NSURLRequest requestWithURL:myUrl];
            
       [webView loadRequest:myRequest];

       [window addSubview: myWebView];
       [myWebView release];
            
}
Run Code Online (Sandbox Code Playgroud)

  • 不!,您可以使用UIWebView访问本地html文件,无需连接到远程服务器,使用UIWebView,您可以同时执行远程和本地文件(这是更改的路径:)) (3认同)
  • 要加载本地pdf(*没有互联网连接*),您可以使用此代码:http://stackoverflow.com/questions/2832245/iphone-can-we-open-pdf-file-using-uiwebview (2认同)

Rui*_*res 11

我建议您在处理PDF文件时使用QuickLook框架.


Ali*_*lil 7

Apple\xe2\x80\x99s PDFKit 框架提供了大量代码来帮助我们处理 PDF,其中最有用的代码之一是 PDFView \xe2\x80\x93,它将 PDF 渲染到屏幕上并让用户与它们交互。

\n\n

要尝试一下,请首先导入 PDFKit 框架:

\n\n
import PDFKit\n
Run Code Online (Sandbox Code Playgroud)\n\n

接下来,将此代码添加到 viewDidLoad() 方法中以创建 PDFView 并使其填充所有可用空间:

\n\n
let pdfView = PDFView()\n\npdfView.translatesAutoresizingMaskIntoConstraints = false\nview.addSubview(pdfView)\n\npdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true\npdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true\npdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true\npdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true\n
Run Code Online (Sandbox Code Playgroud)\n\n

最后,创建一个指向您的捆绑包中某处(或文档目录中的一个)的 PDF 的 URL,然后从中创建一个 PDFDocument 对象并将其传递到 PDF 视图:

\n\n
guard let path = Bundle.main.url(forResource: "example", withExtension: "pdf") else { return }\n\nif let document = PDFDocument(url: path) {\n    pdfView.document = document\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

完毕!

\n


Riz*_*aky 5

引入了一个新的工具包 IO。它有许多与显示 PDF 相关的专用功能。您可以在其中使用 PdfView 类从本地文件或通过 URL 显示 PDF。

PDFKit > PDFView


Arg*_*gus 5

SWIFT 4.x

快速的UIWebview方法:

    //let url = URL.init(string: "https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf")! // for file in web
    let url = Bundle.main.url(forResource: "filename", withExtension: ".pdf")! // for file in bundle
    let webView = UIWebView.init(frame: view.frame)
    webView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    webView.loadRequest(URLRequest.init(url: url))
    view.addSubview(webView)
Run Code Online (Sandbox Code Playgroud)