I have a PDF rendering app that loads PDF content from a URL (CGPDFDocumentCreateWithURL). The PDF loads fine, and I can display on screen no problem. These PDF also contain text for searching. I'm trying to make this comtent visible to the VoiceOver API. I've never worked with this frameowrk before.
Anyone have any hints or links that can help me get started?
If you have access to the text from the particular PDF page, you can set the accessibilityValue of the view you are using to display the page to the text value. This will then read the contents out.
If for some reason your PDF view is not accessible to voiceover, you can use an overlay view, and update its accessibility value as you change pages.
Related
I am developing the app like ibooks by reference,in that the pdf is not enabling the menu i.e while I long tap the pdf it not showing Menu like copy , define.
How can I work in menu? Help me.
The linked solution simply does not implement text selection or glyph coordinate extraction/conversion. You need to parse the PDF page content stream and track glyphs on the page. CGPDFOperatorTable can be a starting point, however I suggest reading the PDF spec and getting familiar with the multiple transformation matrix states that a page can have - it's quite tricky to get right. You also need to embed various CMaps (character maps) so that all fonts can be correctly parsed. It took me more than a year to get a reliable text extraction for >99% of all PDF documents. If you want to save this time, you can check out the commercial PDF SDK I am working - google for PSPDFKit. We support iOS and Android.
My upcoming mobile web project requires viewing dynamically chosen pdf files inside the webpage. I am using iFrame to display the pdf file and the file can be scrolled using two-finger scrolling. But the problems I am facing are:
The first page of the file is not displayed completely on the iPad and gets cut off along the width unlike when I view it on the desktop browsers where the first page of the pdf is always entirely displayed although zoomed out to fit in the iFrame area.
There is no visual indication for the users that the pdf document can be scrolled, i.e., there is no scroll bar on the pdf document.
The controls (page navigation, zoom etc.) for the pdf viewer (Adobe reader) don't appear on the document unlike when I see it on the desktop browsers.
What is the best way to achieve what I am trying to do? Do any of you experts know any solutions/workarounds to the problems I am facing? An entirely different approach using anything other than iFrame can also be considered.
The reason why the pdf should be inside the html page is that, the list of pdf files will be on a menu bar on the left side of the page and the user can click on any of them to view on the same page. Ideally, they will have the capability to toggle between full screen view and that view.
Any help is appreciated.
I created a tiny JavaScript module that helps you to show a PDF inline and be able to scroll it. But I also couldn't figure out a way to make it fit the total width of the parent container.
Check it out: https://github.com/williamrjribeiro/ipdf-scroll
Cheers.
I came across this Recommended way to embed PDF in HTML? while researching on the web to find an answer.
The mentioned link discusses about some options that I can use and the google document viewer works for me though don't know if there is anything (like data limit) I need to be aware of before using it on the website. Also I have no idea if it is a good solution (though the full screen mode is not available, but zoom-in/zoom-out and next/prev page buttons are there are show up in the mobile safari on the iPad) to use for an web app that will be run on the iPad.
Anyway, I will keep researching for a better solution and if i don't find any, I'll stick to the google document viewer.
The issue appears to be a bug with Safari on the IPad.
I didn't find a solution for embedding the pdf in html but I did find this:
If you return FileStreamResult from your controller action instead of a view, the pdf will open in a new tab, it's not embedded html but at least your user is not having to download files and open them manually.
I had the same problem of the pdf not being displayed completely. The only thing I found to fix this was the change the size of the div containing the pdf.
For example if the element containing the pdf is a div then I change its width to any value and the rollback to the value it had before. Changing Width or height any one works.
Sometimes I had to wait a little using a setTimeout before calling my resizable method
I have some code that generates a pdf from text files, and adds bookmarks to various locations within said pdf using UIGraphicsAddPDFContextDestinationAtPoint and UIGraphicsSetPDFContextDestinationForRect. The UIWebView appears to be bugged, where clicking certain bookmarks temporarily renders other bookmarks to send the view to the top of the document. I say "temporarily" because clicking on an unaffected bookmark seems to reset all bookmarks so they point where they are supposed to.
This doesn't appear to be a coding problem, as it only occurs in UIWebView. When I open the pdf in iBooks, the links always work fine. However I would prefer to view the pdf in app, and the only other ways to do it that I'm aware of (UIImageView & UISliderView) would probably eliminate the bookmarks altogether. So I'm hoping there could be a way to fix UIWebView so this problem no longer occurs.
Any suggestions?
I've got an app with a big 'help' page that describes how to use it. This page features a lot of text with some embedded images. Is there some way to 'link' or attach these images to the bottom of specific text boxes so things will lay out reasonably well for any localization we do? In other words, if the French translation of a block of text ends up being two lines longer than the English equivalent, I'd like the image that's placed below that text to be pushed downward by the appropriate amount without having to re-edit the layout of of the .xib file manually. Possible?
You can make HTML page. You can place any thing after your text and can do modification. As it is HTML page it can easily wrap and auto adjust itself. And show the html page in your webview by saving the HTML page in your local data storage
I loaded the Like Box iframe code generated on Facebook into an UIWebView on my iPhone App. It works well, but when I scroll, it scrolls the UIWebView itself, and not the content inside the iframe. How can I block the UIWebView from scrolling (i.e the UIWebView takes the fullscreen frame) and allow the overflowed content of the iframe to scroll instead ?
ps : I tested a simple .html in MobileSafari.app and I have the same problem
You use two fingers in the like box instead of one. Then it scrolls.
You won't have much control over a plugin that is rendered as an iframe due to cross domain restrictions and they do not give many options to customize the appearance.
You could replace it with a Facebook like button. Then below it, you could add code that reads and displays the Fan Page feed using the graph api's page's feed connection (/pageId/feed). This would give you full control over the rendering and still gives the user the option to like your page. To improve performance of this solution you could use the Facebook real-time updates API to get notified when new updates get posted to the page and then you could pull those down and cache them.