2012-01-21 5 views
3

iOS上の既存のPDFのPDFメタデータ(タイトル、著者など)を変更しようとしています。 PDF解析とPDF作成のサンプルコードを簡単に見つけることはできますが、既存のPDFを新しいファイルにダンプしてわずかに変更する簡単な方法はないようです。iOS上でPDF(CGPDFDocument)をどのように読んで変更することができますか?

具体的には、どのように私はおおよそ次のようにPDFを読んだときに得られた情報を取得します:

明らか
CGRect pageRect; 
CFMutableDictionaryRef myDictionary = CFDictionaryCreateMutable(NULL, 0, 
             &kCFTypeDictionaryKeyCallBacks, 
             &kCFTypeDictionaryValueCallBacks); 
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File")); 
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name")); 
pdfContext = CGPDFContextCreateWithURL (urlOfOutputPDF, &pageRect, myDictionary); 

:私は大体このように作成し、新しいPDFへ

CGPDFDocumentRef myPDF = CGPDFDocumentCreateWithURL((CFURLRef)urlOfInputPDF); 
CGPDFDictionaryRef myPDFDict=CGPDFDocumentGetInfo(myPDF); 

を、辞書型が一致せず、このようにして作成された出力はページ(ドキュメントではない)に関連しています。

私はどのようにCGPDFDocumentRef全体を新しいファイルにコピーできますか?それを変更可能にする方法は、私は保存する前にメタデータを変更することができますか?

答えて

-1

私は、CoreGraphicsの方が、各ページを繰り返し処理して新しい文書に印刷する方法に気付きません。少なくともそれは私がPSPDFKitでやっていることです。そして、文書全体を再レンダリングすると、大きな文書ではかなり遅くなります。

このようにするとメタデータが失われることがあります。PDFをもっと直接操作する方が良いかもしれませんが、文字列を直接編集する場合はPDFの外部参照トレーラーを更新する必要があります。 trailerは、文字を追加/削除すると変更されるバイト座標のマップです。

0

CGPDFDocument(コアグラフィックス)を使用しないでください。代わりにPDFDocument(PDFKit)を使用してください。これは、この種のものの方がはるかに簡単な方法を提供します。

writeToFile:withOptionsメソッドを使用すると、PDFを新しいファイルに保存し、辞書にDOCINFOデータを指定できます。