1

使用iOS-htmltopdf,我能够将 DOC 转换为 PDF,但我想要来自 doc 文件的单页 PDF。

原因是一页的某些内容进入另一页,所以只有一页。

NDHTMLtoPDF.m我使用这 2 行代码时,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);

  .........
  .........
  .........
}
4

2 回答 2

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

于 2013-06-12T06:08:37.367 回答
-1

我为您提供了三个选项,您可能会在其中任何一个中得到答案。

1)检查此链接。猴面包

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

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

我希望这些对你有所帮助。

于 2013-06-10T12:54:35.143 回答