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)
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)
Apple\xe2\x80\x99s PDFKit 框架提供了大量代码来帮助我们处理 PDF,其中最有用的代码之一是 PDFView \xe2\x80\x93,它将 PDF 渲染到屏幕上并让用户与它们交互。
\n\n要尝试一下,请首先导入 PDFKit 框架:
\n\nimport PDFKit\nRun Code Online (Sandbox Code Playgroud)\n\n接下来,将此代码添加到 viewDidLoad() 方法中以创建 PDFView 并使其填充所有可用空间:
\n\nlet 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\nRun Code Online (Sandbox Code Playgroud)\n\n最后,创建一个指向您的捆绑包中某处(或文档目录中的一个)的 PDF 的 URL,然后从中创建一个 PDFDocument 对象并将其传递到 PDF 视图:
\n\nguard let path = Bundle.main.url(forResource: "example", withExtension: "pdf") else { return }\n\nif let document = PDFDocument(url: path) {\n pdfView.document = document\n}\nRun Code Online (Sandbox Code Playgroud)\n\n完毕!
\nSWIFT 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)
| 归档时间: |
|
| 查看次数: |
82132 次 |
| 最近记录: |