2010-02-22 16 views
13

के भीतर एनोटेट पीडीएफ मैंने अपने आवेदन के भीतर एक बहुत ही बुनियादी पीडीएफ दर्शक लागू करने में कामयाब रहा है, लेकिन यह सोच रहा था कि पीडीएफ में एनोटेशन जोड़ना संभव था या नहीं। मैंने एसडीके दस्तावेज़ों को देखा है, लेकिन कुछ भी नहीं मिला है। मेरे पास 2 प्रश्न वास्तव में हैं:आईफोन एसडीके

  1. क्या ऐसा करना संभव है?
  2. लेने का सबसे अच्छा तरीका क्या है?
  3. क्या कोई ढांचा या पुस्तकालय है जिसमें मैं सहायता के लिए शामिल कर सकता हूं?

धन्यवाद।

+0

हाय जैक, क्या आपने एनोटेशन किया है? 1. Cygwin + जीसीसी (माइक्रोसॉफ्ट विंडोज) 2. Cygwin + MinGW (माइक्रोसॉफ्ट विंडोज) 3. MSYS + MinGW (माइक्रोसॉफ्ट विंडोज) 3. माइक्रोसॉफ्ट कुलपति ++ (: –

उत्तर

18

आप पीडीएफ पेज में पढ़कर एनोटेशन कर सकते हैं, इसे एक नए पीडीएफ ग्राफिक्स संदर्भ पर खींच कर, फिर उस ग्राफिक संदर्भ पर अतिरिक्त सामग्री ड्राइंग कर सकते हैं। यहां कुछ कोड है जो मौजूदा उदाहरण में स्थिति (100.0,100.0) पर 'उदाहरण एनोटेशन' शब्द जोड़ता है। विधि प्राप्त करें PDFFileName मूल पीडी का पथ देता है। getTempPDFFileName नए पीडीएफ का मार्ग लौटाता है, जो मूल प्लस एनोटेशन है।

एनोटेशन को बदलने के लिए, DrawInRect: withFont: method के स्थान पर बस अधिक ड्राइंग कोड जोड़ें। आईओएस के लिए ड्रॉइंग और प्रिंटिंग गाइड देखें कि इसे कैसे करें।

- (void) exampleAnnotation; 
{ 
    NSURL* url = [NSURL fileURLWithPath:[self getPDFFileName]]; 

    CGPDFDocumentRef document = CGPDFDocumentCreateWithURL ((CFURLRef) url);// 2 
    size_t count = CGPDFDocumentGetNumberOfPages (document);// 3 

    if (count == 0) 
    { 
     NSLog(@"PDF needs at least one page"); 
     return; 
    } 

    CGRect paperSize = CGRectMake(0.0,0.0,595.28,841.89); 

    UIGraphicsBeginPDFContextToFile([self getTempPDFFileName], paperSize, nil); 

    UIGraphicsBeginPDFPageWithInfo(paperSize, nil); 

    CGContextRef currentContext = UIGraphicsGetCurrentContext(); 

    // flip context so page is right way up 
    CGContextTranslateCTM(currentContext, 0, paperSize.size.height); 
    CGContextScaleCTM(currentContext, 1.0, -1.0); 

    CGPDFPageRef page = CGPDFDocumentGetPage (document, 1); // grab page 1 of the PDF 

    CGContextDrawPDFPage (currentContext, page); // draw page 1 into graphics context 

    // flip context so annotations are right way up 
    CGContextScaleCTM(currentContext, 1.0, -1.0); 
    CGContextTranslateCTM(currentContext, 0, -paperSize.size.height); 

    [@"Example annotation" drawInRect:CGRectMake(100.0, 100.0, 200.0, 40.0) withFont:[UIFont systemFontOfSize:18.0]]; 

    UIGraphicsEndPDFContext(); 

    CGPDFDocumentRelease (document); 
} 
+2

यह एक बड़ी मदद मिली है। एक बार मुझे इसकी गहरी समझ हो जाने के बाद, मैं समुदाय के साथ साझा करने के लिए एक जिथब परियोजना तैयार करूंगा। – Jack

+0

क्या आपने गिटहब प्रोजेक्ट @ जैक बनाया था? –

+0

@ मेट्तेह मैंने आपके उदाहरण की कोशिश की लेकिन मैं दस्तावेज़ खोल नहीं सकता। मुझे 'अनुमति अस्वीकृत' त्रुटि मिलती है। – Justin

1

मुझे नहीं लगता कि PDFAnnotation या पीडीएफकिट डेस्कटॉप से ​​आईफोन पर पोर्ट किया गया था .... शायद file a radar पर एक बड़ा बहाना। हालांकि, इस दौरान Haru आपको मिल सकता है।

+0

वर्तमान में, हारू केवल निम्नलिखित प्लेटफार्मों पर चलने के लिए उपलब्ध है माइक्रोसॉफ्ट विंडोज) 4. बोर्लैंड सी ++ (माइक्रोसॉफ्ट विंडोज) 5. जीसीसी (लिनक्स, फ्रीबीएसडी, नेटबीएसडी, सोलारिस ...) –

3

मैं सामान में काम कर रहा हूं और एक गिटहब परियोजना बनाई है। कृपया इसे here देखें।

+0

का उपयोग करके एनोटेशन जोड़ें, हालांकि आपकी परियोजना पीडीएफ में एनोटेशन को सहेजती नहीं है। मैंने स्रोत कोड की जांच की है, यह वास्तविक पीडीएफ फ़ाइलों से स्वतंत्र सभी एनोटेशन जानकारी संग्रहीत कर रहा है। तो अगर मैं पीडीएफ फ़ाइल को दूसरी मशीन पर भेजता हूं तो पीडीएफ को बिना किसी बदलाव के स्थानांतरित किया जाता है। –

+0

यह विकास में है। कृपया बाद में देखें :) – lazyprogram

+0

@lazyprogram, कृपया, इसकी लाइब्रेरी अपडेट करें क्योंकि मुझे डायलीब त्रुटि मिल रही है और ऐप एक्सकोड 7 से चलते समय डिवाइस पर क्रैश हो रहा है। –