5

私はiOSでPDFを操作するために遊んでいます(表示だけでなく、主に生成も)。

「外部」リンク ( http://host.tld/path/fileなどの URL) として機能する長方形の領域を埋め込みたいと考えています。

UIGraphicsSetPDFContextURLForRect 関数を使用する方法の例をどこで見つけることができるか知っていますか? 私はインターネット上で絶対に何も見つけません。

私がよく理解している場合、唯一の要件は、現在のグラフィックコンテキストが PDF の「タイプ」である必要があることです。上流で UIGraphicsPushContext を呼び出すので、PDF コンテキストをパラメーターとして呼び出します (これは drawAtPoint のようなメソッドに必要でした: that私もうまく使っています)。

重要ではないと思いますが、View サブクラスの drawRect: でこれが行われないことを指定する場合に備えて。

私が「すべて間違っている」と明確に言うのはまったく正しい. グラフィカル環境は非常に洗練されており、iOS が豊富であるため、今のところ 1 ~ 2% しか吸収していないと思います。

前もって感謝します。

4

2 に答える 2

5

そうです、要件は、現在のグラフィック コンテキストが PDF コンテキストであるということです。プッシュ (UIGraphicsPushContext) してアクティブにするか、次のようにコンテキストを作成できます。

UIGraphicsBeginPDFContextToFile(path, CGRectMake(0, 0, 612, 792), nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);
// ...
UIGraphicsSetPDFContextURLForRect(url, rect);
// ... 
UIGraphicsEndPDFContext(); 

UIGraphicsSetPDFContextURLForRect には 2 つのパラメーターがあります。1 つ目はリンク先の URL で、2 つ目はリンク領域を表す現在のページ上の四角形です。たとえば、次の行はページの左下隅に URL へのリンクを作成します。リンクのサイズは 72*72 ポイントです。

UIGraphicsSetPDFContextURLForRect(url, CGRectMake(0, 0, 72, 72));

このメソッドが実際に行うことは、PDF ファイルにリンク注釈を作成することです。リンク自体には視覚的な外観はありません。ビューアーで PDF ページにマウスを移動すると、リンクがあることを知っている必要があります。このため、通常はページに何かを描いたり書いたり (ここをクリックなど) し、テキストの上にリンク領域を設定します。

更新 - 作業コード フラグメント:

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

    UIGraphicsBeginPDFContextToFile(pdfFile, CGRectMake(0, 0, 612, 792), nil);
    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);

    NSURL* url = [NSURL URLWithString: @"http://www.ipdfdev.com/"];
    UIGraphicsSetPDFContextURLForRect(url, CGRectMake(0, 0, 50, 50));

    UIGraphicsEndPDFContext();
}
于 2012-09-17T09:09:34.047 に答える
4

これがお役に立てば幸いです。

UIGraphicsBeginPDFContextToFile( pdfFilePath, CGRectZero, nil );

CGRect windowFrame = CGRectMake( 0, 0, 596, 842 );
UIGraphicsBeginPDFPageWithInfo( windowFrame, nil );

NSURL *url = [NSURL URLWithString:@"http://www.google.com"];

CGRect textFrame = CGRectMake( 10, 10, 200, 20 );
CGRect linkFrame = textFrame;
linkFrame.origin.y = windowFrame.size.height - linkFrame.origin.y - linkFrame.size.height;
UIGraphicsSetPDFContextURLForRect( url, linkFrame );

NSDictionary *attributesDict;
NSMutableAttributedString *attString;

NSNumber *underline = [NSNumber numberWithInt:NSUnderlineStyleSingle];
attributesDict = @{NSUnderlineStyleAttributeName : underline, NSForegroundColorAttributeName : [UIColor blueColor]};
attString = [[NSMutableAttributedString alloc] initWithString:url.absoluteString attributes:attributesDict];

[attString drawInRect:textFrame];

UIGraphicsEndPDFContext();
于 2012-11-21T14:12:32.640 に答える