有没有办法从iOs中的XML/HTML模板生成PDF文件

Mit*_*uzz 8 xml pdf-generation ipad ios

我正在创建一个iPad应用程序,因为我必须使用不同的PDF表单.我有一些使用Quartz2D通过代码生成PDF文件的方法.但我必须通过代码编写完整的表单.我将来可能需要更新PDF表单,所以我必须再次编写代码.所以我听说有一个名为iTextSharp的组件用于.net pdf创建 - iOS有类似的东西吗?这样我就可以使用一些XML模板来创建PDF文件.请帮忙,谢谢

Tom*_*ift 14

我在我的应用程序中使用iOS打印子系统和UIMarkupTextPrintFormatter执行此操作.诀窍是编写自己的自定义UIPrintPageRenderer,它覆盖并返回paperRect和numberOfPages中的正确值.您将UIMarkupTextPrintFormatter添加到自定义UIPrintPageRenderer.

然后,在自定义UIPrintPageRenderer的上下文中,您将需要与此类似的例程:

- (CGRect) paperRect
{
    if (!_generatingPdf)
        return [super paperRect];

    return UIGraphicsGetPDFContextBounds();
}

- (CGRect) printableRect
{
    if (!_generatingPdf)
        return [super printableRect];

    return CGRectInset( self.paperRect, 20, 20 );
}

- (NSData*) printToPDF
{
    _generatingPdf = YES;

    NSMutableData *pdfData = [NSMutableData data];

    UIGraphicsBeginPDFContextToData( pdfData, CGRectMake(0, 0, 792, 612), nil );  // letter-size, landscape

    [self prepareForDrawingPages: NSMakeRange(0, 1)];

    CGRect bounds = UIGraphicsGetPDFContextBounds();

    for ( int i = 0 ; i < self.numberOfPages ; i++ )
    {
        UIGraphicsBeginPDFPage();

        [self drawPageAtIndex: i inRect: bounds];
    }

    UIGraphicsEndPDFContext();

    _generatingPdf = NO;

//    NSString* filename = @"/Volumes/Macintosh HD 2/test.pdf";
//    [pdfData writeToFile: filename  atomically: YES];

    return pdfData;
}
Run Code Online (Sandbox Code Playgroud)

  • @TomSwift您是否设法使用此技术渲染图像?我尝试了几个选项(自定义NSURLProtocol,本地文件URL,base64图像嵌入),似乎没有任何工作...任何帮助吗? (3认同)