В моем iOS-приложении (сделанном в Objective-C) я печатаю документ PDF в UIWebView
,
это PDF
отображается на моей странице PHP с помощью "Content-type: application/pdf"
Я хочу получить мой PDF
имя для сохранения в моем устройстве после этого.
Как я мог сделать это, пожалуйста?
Чуть ниже кода, который я использую для подключения к webservice
и распечатать мой документ PDF в моем UIWebview
self.factureWebView.delegate = self;
NSURL *lienFacture = [NSURL URLWithString:@"http://aaaa.com/app/facture.php"];requete = [[NSMutableURLRequest alloc]initWithURL:lienFacture cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[requete setHTTPMethod:@"POST"];
NSString *post =[[NSString alloc] initWithFormat:@"idC=%@&mdpC=%@&idF=%@",idConnexion, mdpConnexion, idFacture];
NSData *data = [post dataUsingEncoding:NSUTF8StringEncoding];
[requete setHTTPBody:data];
[self.factureWebView loadRequest:requete];
А это мой php файл
$idConnexion = $_POST['idConnexion'];
$mdpConnexion = $_POST['mdpConnexion'];
$idFacture = $_POST['idFacture'];
ini_set('soap.wsdl_cache_enabled', '0');
$wsdlURL = 'https://xxxx.com/Balm/Services_2_0.wsdl';
$ns = 'https://erp.xxxx.com/developerKey/';
$devKey = 'a1b2c3';
$soap = new SoapClient($wsdlURL);
$soap->__setSoapHeaders(new SoapHeader($ns, 'developerKey', $devKey));
$params = new stdClass();
$params->context = 'Client';
$params->login = $idConnexion;
$params->password = $mdpConnexion;
$res = $soap->GetContactDevKey($params);
$devKey2 = $res->result;
$soap2 = new SoapClient($wsdlURL);
$soap2->__setSoapHeaders(new SoapHeader($ns, 'developerKey', $devKey2));
$res2 = $soap2->Authenticate($params);
$token = $res2->result->VisitorToken;
$demandsParam = new stdClass();
$demandsParam->visitorKey = $token;
$demandsParam->printType = 'PrintBill';
$demandsParam->id = $idFacture;
$factures = $soap2->GetClientPrint($demandsParam);
echo $factures->result->Content;
Вы можете использовать метод делегирования ниже, чтобы найти название PDF. Не забудьте установить делегат webView. Ниже метод будет вызываться каждый раз, когда вы нажимаете на любую вещь на веб-странице. Так что, проверяя PDFURL, нажимая на PDF в веб-просмотре, вы получите название PDF! ..
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"@@@@@@@@@@@@@Navigation Type is:%ld",navigationType);
NSLog(@"url: %@ Scheme:%@ Host:%@", [[request URL] absoluteString], request.URL.scheme ,request.URL.host);
NSString *pdfURL =[NSString stringWithFormat:@"%@",request.URL];
NSLog(@"@@@@@@@@@@@@@PDF URL String:%@",pdfURL);
return YES;
}
Вы можете получить URL-адрес PDF сверху … Вы можете вырезать из него имя PDF и сохранять его локально.
Надеюсь, это поможет вам!
Получите ваш локально сохраненный PDF
список имен файлов ..
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager contentsOfDirectoryAtPath:documentsDirectory
error:nil];
// List file by name sort
NSLog(@"\n File list => %@",fileList);
//---- Sorting files by extension
NSArray *filePathsArray =
[[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory
error:nil];
//NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF EndsWith '.pdf'"]; //Change your extension here file sorted by your extension
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pathExtension='pdf'"];
filePathsArray = [filePathsArray filteredArrayUsingPredicate:predicate];
NSLog(@"\n\n Sorted files by extension %@",filePathsArray);