0

在我的应用程序中有一个带有 HTML 内容的 WebView。内容是 WebView 中的 3 页。现在我想将 WebView 内容转换为 PDF。我从 WebView 内容创建了 3 个图像。现在我想使用这 3 个图像创建 pdf。每个图像应该是一页 PDF。但它导致单页图像。因此,当我进行打印时,内容会被切断。我正在使用这个,

CGSize pageSize = CGSizeMake(612, 2324);
NSString *fileName = @"Demo.pdf";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];

UIGraphicsBeginPDFContextToFile(pdfFileName, CGRectZero, nil);

// Mark the beginning of a new page.
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil);

double currentHeight = 0.0;

for (int index = 1; index <= imageName ; index++)
{
    NSString *pngPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", index]];
    UIImage *pngImage = [UIImage imageWithContentsOfFile:pngPath];

    [pngImage drawInRect:CGRectMake(0, currentHeight, pageSize.width, pngImage.size.height)];        
    currentHeight += pngImage.size.height;
}

UIGraphicsEndPDFContext();

我对这段代码做错了什么。

谢谢

4

3 回答 3

0
/*For call method*/

 [self createPdfWithName:@"sam" array:[NSArray arrayWithObjects:[UIImage imageNamed:@"01.png"],[UIImage imageNamed:@"02.png"], nil]];

/*Create New Pdf*/

- (NSString *)createPdfWithName: (NSString *)name array:(NSArray*)images
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docspath = [paths objectAtIndex:0];
    NSString *pdfFileName = [docspath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.pdf",name]];
    UIGraphicsBeginPDFContextToFile(pdfFileName, CGRectZero, nil);
    for (int index = 0; index <[images count] ; index++)
    {
        UIImage *pngImage=[images objectAtIndex:index];;
        UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, (pngImage.size.width), (pngImage.size.height)), nil);
        [pngImage drawInRect:CGRectMake(0, 0, (pngImage.size.width), (pngImage.size.height))];
    }
    UIGraphicsEndPDFContext();
    return pdfFileName;
}
于 2017-03-25T07:27:05.287 回答
0
func createPDFS(arrImages: [UIImage]) -> NSData? {

        var pageHeight = 0.0
        var pageWidth = 0.0

        for img in arrImages
        {
            pageHeight =  pageHeight+Double(img.size.height)

            if Double(img.size.width) > pageWidth
            {
                pageWidth = Double(img.size.width)
            }
        }

        let pdfData = NSMutableData()
        let pdfConsumer = CGDataConsumer(data: pdfData as CFMutableData)!

       var mediaBox = CGRect.init(x: 0, y: 0, width: pageWidth, height: pageHeight)

       let pdfContext = CGContext(consumer: pdfConsumer, mediaBox: &mediaBox, nil)!

        for img in arrImages
        {
            var mediaBox2 = CGRect.init(x: 0, y: 0, width: img.size.width, height: img.size.height)

                   pdfContext.beginPage(mediaBox: &mediaBox2)
            pdfContext.draw(img.cgImage!, in: CGRect.init(x: 0.0, y: 0, width: pageWidth, height: Double(img.size.height)))

              pdfContext.endPage()
        }

        return pdfData
    }
于 2019-12-18T13:30:23.277 回答
-1
CGSize pageSize = CGSizeMake(612, 2324);
NSString *fileName = @"Demo.pdf";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];

UIGraphicsBeginPDFContextToFile(pdfFileName, CGRectZero, nil);       

double currentHeight = 0.0;

for (int index = 1; index <= imageName ; index++)
{
    NSString *pngPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", index]];
    UIImage *pngImage = [UIImage imageWithContentsOfFile:pngPath];

// TODO: See Here
// Mark the beginning of a new page.
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pngImage.size.height), nil);

    [pngImage drawInRect:CGRectMake(0, currentHeight, pageSize.width, pngImage.size.height)];        
    //currentHeight += pngImage.size.height;
}

UIGraphicsEndPDFContext();
于 2012-11-27T05:50:54.427 回答