2011-08-02 14 views
8

पर एनोटेशन जोड़ें मैंने आपके सभी सुझावों और कोड स्निपेट के साथ एक पीडीएफ दर्शक विकसित किया है। धन्यवाद :) अब मैं इसे एक पीडीएफ संपादक बनाना चाहता हूं। मैं पीडीएफकिट के समान आईफोन/आईपैड के लिए एक ऐप बनाना चाहता हूं (जो केवल डेस्कटॉप के लिए है)। मैं चाहता हूं कि उपयोगकर्ता एनोटेशन जोड़ने और टेक्स्ट सेक्शन को हाइलाइट करने में सक्षम हो।पीडीएफ

मैं इसके साथ कैसे जा सकता हूं? अब तक, मैंने पीडीएफ सामग्री को पार्स किया है (मेरी पिछली पोस्ट pdf parsing problem है)। क्या कोई ओपन सोर्स पीडीएफ संपादक है जो मौजूदा पीडीएफ में एनोटेशन जोड़ता है ???

इसके अलावा, क्या यह उद्देश्य-सी का उपयोग करके किया जा सकता है या क्या कोई अन्य भाषा कोड (सी या जावास्क्रिप्ट) है जो यह करता है?

NSURL *newUrl = [NSURL fileURLWithPath:"path to pdf"]; 
CGPDFDocumentRef templateDocument = CGPDFDocumentCreateWithURL(newUrl); 
CFRelease(url); 

CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
CGPDFPageRef page = CGPDFDocumentGetPage(templateDocument, 1); 
CGContextDrawPDFPage(pdfContext, page); 

const char *text = "second line!"; 
CGContextShowTextAtPoint (pdfContext, 10, 30, text, strlen(text)); 
CGContextEndPage (pdfContext); 

CGContextRelease (pdfContext); 

pdfcontext एक ही वस्तु एक नया पीडीएफ बनाने के दौरान मेरे द्वारा बनाए गए है। मेरे पीडीएफ की एक पंक्ति है "हैलो वर्ल्ड"। मैं एक और लाइन जोड़ने की कोशिश कर रहा हूँ।

GContextShowTextAtPoint: invalid context 0x0 
+0

क्या आप यहां पीडीएफ पार्सर कोड स्निपेट पोस्ट कर सकते हैं। – ajay

+0

क्या आपको उस – wan

+0

के लिए कोई समाधान नहीं मिला, मैंने नहीं किया .. इसके लिए उच्च स्तरीय ग्राफिक्स की आवश्यकता है। – cancerian

उत्तर

3

यह एक वास्तव में मुश्किल होने जा रहा है:

मैं निम्न त्रुटि हो रही है।

क्वार्ट्ज वास्तव में आपकी मदद नहीं करता है।

आप libHaru को आजमा सकते हैं, जिसमें एक सुंदर निराशावादी लाइसेंस है और यह ऐपस्टोर संगत है। हालांकि यह एक मुफ्त सवारी नहीं है - एचएआरयू केवल पीडीएफ उत्पन्न कर सकता है।

http://libharu.org/

+1

हाय उत्तर के लिए धन्यवाद लेकिन मुझे अपनी आवश्यकता के पीडीएफ को संपादित करने की आवश्यकता है। लेकिन क्या इसे संपादित करने के बजाय पीडीएफ की पूरी सामग्री को फिर से लिखने का कोई तरीका है। यह मेरा कोड है (मेरा प्रश्न संपादित)। मैंने कोशिश की लेकिन यह अमान्य संदर्भ कहने में त्रुटि दिखाता है – cancerian

7

तो शीर्षक में आप कहते हैं कि आप एक पीडीएफ में एक टिप्पणी जोड़ना चाहते हैं, लेकिन फिर उदाहरण है कि आप अपने प्रश्न के शरीर में काम करने के लिए कोशिश कर रहे हैं बस पीडीएफ के लिए पाठ जोड़ रहा है । ये हैं बहुत अलग बातें ....

यहाँ एक "नमस्ते दुनिया" जो (अपने प्रयास के समान) एक मौजूदा पीडीएफ के लिए पाठ कहते है:

मैं इस परीक्षण नहीं किया है, लेकिन यह पर आधारित है मौजूदा कोड (जहां मैं CGContextShowTextAtPoint की बजाय CTLine का उपयोग कर चित्रण कर रहा था) तो यह बहुत करीब होना चाहिए। स्पष्टता के लिए त्रुटि जांच हटा दी गई है।

/* 
* This function copies the first page of a source pdf into the destination pdf 
* and then adds a line of text to the destination pdf. 
* 
* This must be modified by putting the correct path into the NSURL lines 
* for sourceURL and destURL before it will work. 
* 
* This code is using ARC and has error checking removed for clarity. 
*/ 
- (void)helloWorldPDF { 
    // Open the source pdf 
    NSURL    *sourceURL  = [NSURL fileURLWithPath:@"path to original pdf"]; 
    CGPDFDocumentRef sourceDoc  = CGPDFDocumentCreateWithURL((__bridge CFURLRef)sourceURL); 

    // Create the new destination pdf & set the font 
    NSURL    *destURL  = [NSURL fileURLWithPath:@"path to new pdf"]; 
    CGContextRef  destPDFContext = CGPDFContextCreateWithURL((__bridge CFURLRef)destURL, NULL, NULL); 
    CGContextSelectFont(destPDFContext, "CourierNewPS-BoldMT", 12.0, kCGEncodingFontSpecific); 

    // Copy the first page of the source pdf into the destination pdf 
    CGPDFPageRef  pdfPage   = CGPDFDocumentGetPage(sourceDoc, 1); 
    CGRect    pdfCropBoxRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox); 
    CGContextBeginPage (destPDFContext, &pdfCropBoxRect); 
    CGContextDrawPDFPage(destPDFContext, pdfPage); 

    // Close the source file 
    CGPDFDocumentRelease(sourceDoc); 

    // Draw the text 
    const char *text = "second line!"; 
    CGContextShowTextAtPoint(destPDFContext, 10.0, 30.0, text, strlen(text)); 

    // Close the destination file 
    CGContextRelease(destPDFContext); 
} 
+0

ग्रेट !! वास्तव में सहायक था। इसके लिए एक ट्यूटोरियल या कुछ है। –

+0

@ कुनलबलानी हो सकता है, लेकिन कोई भी जिसमें मैं शामिल था। यदि आपके कोई प्रश्न हैं जो यह संबोधित नहीं करते हैं, तो अपने प्रश्न पूछने के लिए स्वतंत्र महसूस करें! – lnafziger

+0

@lnafziger आपका कोड पीडीएफ को केवल पाठ एनोटेशन पढ़ेगा। इसे अन्य दर्शक पर संपादन योग्य बनाने के लिए आपको पीडीएफ के एंटोन्स डिक्शनरी में प्रवेश करने की आवश्यकता है। –