5

だから私は個人的な使用のために、iPad 用の特定のタイプの PDF エディターを実装しています。私はすでに PDF ビューアーを実装していますが、今は編集部分で立ち往生しています。ドキュメントの各ページを UIView に表示し、ページとまったく同じサイズの別のビューを作成します。次に、ユーザーがビューに描画できるようにします

今、それが描かれたPDFファイルの正確なページでそのUIVIiewを印刷したいとします。これを行う方法は知っていますが、大きなドキュメントでは時間がかかりすぎます。私はこのようにしていました(理解を深めるためにコードを簡略化しました):

UIGraphicsBeginPDFContextToFile(file, pageSize, nil);

for (size_t currentPage = 1; currentPage <= pageCount; currentPage++) {

    UIGraphicsBeginPDFPageWithInfo(pageSize, nil);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //translates context, copies doc page to the new pdf, translates back
    CGContextTranslateCTM(ctx, 0, pageSize.size.height);
    CGContextScaleCTM(ctx, 1.0, -1.0); 
    CGPDFPageRef page = CGPDFDocumentGetPage (document, currentPage);
    CGContextDrawPDFPage (ctx, page);
    CGContextScaleCTM(ctx, 1.0, -1.0);
    CGContextTranslateCTM(ctx, 0, -pageSize.size.height);
    //custom drawing goes here
    if(currentPage == desiredPage) [imageFromView drawInRect:pageSize];
}
UIGraphicsEndPDFContext();

ここでの問題は、この手順で PDF 全体が再作成されることです。大きなドキュメントの場合、完了するまでに数分かかる場合があります。

ドキュメント全体を再作成することなく、PDF ドキュメントのページに (ユーザーが描いた) UIView を印刷するソリューションが必要でした。

リンク、ヒント、その他の有用な情報は大歓迎です。前もって感謝します

4

1 に答える 1

1

iOS では CGPDF のみがあり、これは Mac の PDFDocument が部分的に行う可変性をサポートしません。

変更されていないページの PDF ストリームを取得し、これらを作成中の新しいページの 1 つと組み合わせるには、独自のソリューションを作成する必要があります。Mac のラッパーをモデルにした DTPDFDocument ラッパーのオープンソース プロジェクトを開始しましたが、ページの移動や変更についてはこれまでのところ何もしていません: https://github.com/Cocoanetics/DTPDF

または、利用可能な多くの PDF フレームワークの 1 つを使用することもできます。最初に思い浮かぶのは PSPDFKit です。

于 2012-12-09T09:37:50.247 に答える