将DOC转换为一页PDF iOS

时间:2013-06-10 12:38:48

标签: iphone ios objective-c pdf pdf-generation

使用iOS-htmltopdf,我可以将DOC转换为PDF,但我希望从doc文件中获得单页PDF。

原因是一个页面的某些内容进入另一个页面,因此只有一个页面。

NDHTMLtoPDF.m我使用这两行代码,然后PDF页面大小变为双倍

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
  if (webView.isLoading) return;

  long pageHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"]longLongValue];
  self.pageSize = CGSizeMake(595, webView.scrollView.contentSize.height/2);

  .........
  .........
  .........
}

2 个答案:

答案 0 :(得分:1)

首先使用NDHTMLtoPDF将DOC转换为PDF。

下面的委托方法将被称为

- (void)HTMLtoPDFDidSucceed:(NDHTMLtoPDF*)htmlToPDF
{
  NSLog(@"HTMLtoPDF did succeed (%@ / %@)", htmlToPDF, htmlToPDF.PDFpath);

  NSURL *pptURL = [NSURL fileURLWithPath:htmlToPDF.PDFpath];
  NSURLRequest *request = [NSURLRequest requestWithURL:pptURL];
  [myWebView loadRequest:request];

  //now merge whole pages to one PDF
  [self MergeToOnePagePDF:pptURL];   
}

现在添加以下方法:

-(void)MergeToOnePagePDF:(NSURL *)pdfURL
{
  CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfURL);

  int pageCount = CGPDFDocumentGetNumberOfPages(pdf);
  CGPDFPageRef pageRef = CGPDFDocumentGetPage(pdf, 1);
  CGRect pageRect = CGPDFPageGetBoxRect(pageRef, kCGPDFMediaBox);
  float pageHeight = pageRect.size.height;
  pageRect.size.height = pageRect.size.height * pageCount;

  NSMutableData* pdfData = [[NSMutableData alloc] init];
  CGDataConsumerRef pdfConsumer = CGDataConsumerCreateWithCFData((__bridge CFMutableDataRef)pdfData);
  CGContextRef pdfContext = CGPDFContextCreate(pdfConsumer, &pageRect, NULL);

  CGPDFContextBeginPage(pdfContext, NULL);
  CGContextTranslateCTM(pdfContext, 0, pageRect.size.height);
  for (int i = 1; i <= pageCount; i++) 
  {
    pageRef = CGPDFDocumentGetPage(pdf, i);
    CGContextTranslateCTM(pdfContext, 0, -pageHeight);
    CGContextDrawPDFPage(pdfContext, pageRef);
  }
  CGPDFContextEndPage(pdfContext);
  CGPDFContextClose(pdfContext);

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0];
  NSString *pdfFile = [documentsDirectory stringByAppendingPathComponent:@"destination.pdf"];

  [pdfData writeToFile: pdfFile atomically: NO];
 }

编辑:将网页合并为一页PDF信用额转至@iPDFDev

答案 1 :(得分:-1)

我有三个选择,你可能会在其中任何一个中得到答案。

1)检查此链接。MonkeyBread

2)使用Pdflab,您可以拆分,组合,重组Pdf。

3)你所要做的就是在预览中打开doc文件,apple + c复制你所在的页面,apple + n。,apple + v,你就有了单页pdf。

我希望这些能在某种程度上帮助你。