1

textView フレームを変更すると、pdf エクスポート後のテキストが選択できなくなるのはなぜですか? 恐ろしい圧縮で単純にラスタライズされています。textView をエクスポートしてフレームを変更しないと、完璧なベクトルが得られます。

私は textView で表示し、次のように textView のコンテンツを含む pdf をエクスポートします。

- (void) generatePDFWithFilename:(NSString *)filename
{
    // Creates a mutable data object for updating with binary data, like a byte array
    NSMutableData *pdfData = [NSMutableData data];

    //  pdf view
    _pdfView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 612, 792)];

    //  adding subview - for easier positioning
    CGRect tempFrame;
    UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, _pdfView.bounds.size.width - 20, _pdfView.bounds.size.height - 20)];
    tempView.backgroundColor = [UIColor redColor];
    _pdfView.backgroundColor = [UIColor lightGrayColor];
    [_pdfView addSubview:tempView];


    UITextView *pdfDescriptionTextView = [[UITextView alloc] initWithFrame:CGRectZero];
    pdfDescriptionTextView = _workDescriptionTextView;
    [tempView addSubview:pdfDescriptionTextView];
    // pdfDescriptionTextView.center = CGPointMake(50, 200); // working - vector data are preserved
    tempFrame = pdfDescriptionTextView.frame;
    tempFrame.origin = CGPointMake(100, 100);
    tempFrame.size = CGSizeMake(tempView.bounds.size.width - 40, pdfDescriptionTextView.contentSize.height);
    pdfDescriptionTextView.frame = tempFrame;
    pdfDescriptionTextView.backgroundColor = [UIColor greenColor];

    UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil);
    UIGraphicsBeginPDFPageWithInfo(_pdfView.bounds, nil);
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();

    [_pdfView.layer renderInContext:pdfContext];

    // remove PDF rendering context
    UIGraphicsEndPDFContext();

    // Retrieves the document directories from the iOS device
    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:filename];

    // instructs the mutable data object to write its context to a file on disk
    BOOL success = [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    if(success)
    {
        [self sendEmailWithData:pdfData];
    }
}

フレームは変更されていません - ベクター データ フレームの変更 - ラスタライズされたテキスト

4

1 に答える 1

0

編集モードを変更するだけです.....

pdfDescriptionTextView.editable = FALSE;

この後、ユーザーはテキストを変更できなくなります

于 2013-03-15T10:14:13.640 に答える