Afficher le PDF dans UIWebView en utilisant loadData
J'essaie d'afficher un PDF, je l'ai stocké localement dans une UIWebView. C'est de cette façon que j'ai actuellement tentative pour ce faire:
if (![[NSFileManager defaultManager] fileExistsAtPath:self.url]) {
LOG_ERROR(@"Couldn't load local file. File at path: %@ doesn't exist", self.url);
return;
}
nsurl=[NSURL fileURLWithPath:self.url];
NSData *data = [NSData dataWithContentsOfFile:self.url];
LOG_DEBUG(@"data length:%d",[data length]);
[self.webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
J'ai aussi essayé en passant néant pour textEncoding, ainsi que l'utilisation de UIWebView de loadRequest. Le résultat est une UIWebView qui affiche une page blanche. Aucune erreur ne se produit dans la UIWebView délégué de la méthode. La chose étrange est que les données a la bonne longueur, en octets, pour le PDF, je suis en train d'affichage, ce qui signifie que le fichier est trouvé et chargé correctement.
Quelqu'un a une idée de ce qui pourrait mal se passer ici ou comment je peux mieux déboguer ce problème?
source d'informationauteur mmontalbo
Vous devez vous connecter pour publier un commentaire.
Vous trouverez ci-dessous deux approches différentes pour ouvrir un
.pdf
fichier sur votreUIWebView
; l'un d'unurl
et uneNSData
:Il s'avère que le problème était quelque chose à voir avec le format de fichier pour les fichiers Pdf. J'ai édité entre eux à l'aide de l'Illustrateur et ré-enregistré. Je suppose que le navigateur Safari Mobile n'aime pas la façon dont Illustrateur formaté les fichiers parce que chacun était vide lorsque visualisées à l'aide du simulateur du navigateur (bien que je puisse ouvrir les fichiers Pdf régulièrement Safari très bien).
La solution est d'ouvrir le fichier Pdf à l'aide de l'Aperçu et de ré-enregistrer. Après l'exécution de chaque fichier PDF grâce à l'Aperçu enregistrer routine, j'ai été en mesure d'obtenir chaque PDF à afficher dans une UIWebView, sans modification de mon code.
Vous n'avez pas besoin NSData pour charger un fichier local loadRequest devraient travailler directement avec NSURL
Je ne peux que suggérer de faire NSURL comme ça
NSData
est utilisé pour charger les fichiers pdf lorsqu'ils sont stockés localement dans tous les répertoires.Pour charger le fichier pdf qui a été dans votre application, utilisez le code suivant .