পিডিএফ আঁকার বিষয়ে সম্প্রতি অনেক প্রশ্ন এসেছে।
হ্যাঁ, আপনি খুব সহজেই পিডিএফ এর রেন্ডার করতে পারেন UIWebView
তবে এই পোষাকটি এমন কার্য সম্পাদন এবং কার্যকারিতা দেয় যা আপনি কোনও ভাল পিডিএফ দর্শকের কাছ থেকে আশা করতে পারেন expect
আপনি একটি PDF পৃষ্ঠা আহরণ করতে পারে একটি CALayer করতে বা একটি UIImage করতে । একটি জুম্যাবল ইউআইএসক্রোলভিউতে কীভাবে একটি বৃহত পিডিএফ আঁকবে তা দেখানোর জন্য অ্যাপলের কাছে স্যাম্পল কোডও রয়েছে
কিন্তু একই বিষয় ক্রপ আপ রাখা।
ইউআইআইমেজ পদ্ধতি:
- পিডিএফ
UIImage
কোনও স্তরগত পদ্ধতির পাশাপাশি অপটিক্যাল স্কেল নয়। - CPU ও মেমরি উৎপাদিত উপর আঘাত
UIImages
A থেকেPDFcontext
এটা ব্যবহার করে একটি রিয়েল-টাইম নতুন জুম-স্তরের রেন্ডার তৈরি করতে সীমা / বাধা দেয়।
ক্যাটালেড লেয়ার পদ্ধতি:
- একটি পূর্ণ পিডিএফ পৃষ্ঠা আঁকতে একটি উল্লেখযোগ্য ওভারহেড (সময়)
CALayer
থের করে: স্বতন্ত্র টাইলস রেন্ডারিং করতে দেখা যায় (এমনকি একটি টাইলসাইজ টুইঙ্ক দিয়েও) CALayers
সময়ের আগে প্রস্তুত করা যায় না (অফ স্ক্রিনে উপস্থাপিত)।
সাধারণত পিডিএফ দর্শকদের স্মৃতিশক্তি খুব ভারী হয়। এমনকি অ্যাপলের চিড়িয়াখানাযোগ্য পিডিএফ উদাহরণের মেমরি ব্যবহার নিরীক্ষণ করুন।
আমার বর্তমান প্রকল্পে, আমি একটি পিডিএফ ভিউয়ার বিকাশ করছি এবং UIImage
একটি পৃষ্ঠার একটি পৃথক থ্রেডে পেশ করছি (সমস্যাগুলি এখানেও!) এবং স্কেলটি এক্স 1 হওয়ার সময় এটি উপস্থাপন করছি। CATiledLayer
স্কেল একবারে কিক্সের রেন্ডারিং> 1। আইবুকস অনুরূপ ডাবল টেক অ্যাপ্রোচ গ্রহণ করে যেমন আপনি পৃষ্ঠাগুলি স্ক্রোল করে দেখেন যে আপনি একটি খাস্তা সংস্করণ প্রকাশের আগে মাত্র এক সেকেন্ডেরও কম সময়ের জন্য পৃষ্ঠার একটি নিম্ন রেস সংস্করণ দেখতে পাবেন।
আমি ফোকাসে পৃষ্ঠার প্রতিটি পাশে 2 পৃষ্ঠাগুলি রেন্ডার করছি যাতে পিডিএফ চিত্রটি অঙ্কন শুরু হওয়ার আগে স্তরটি মাস্ক করার জন্য প্রস্তুত P পৃষ্ঠাগুলি যখন ফোকাস করা পৃষ্ঠা থেকে +2 পৃষ্ঠা দূরে থাকে তখন আবার ধ্বংস হয়।
অঙ্কন পিডিএফের পারফরম্যান্স / মেমরি হ্যান্ডলিংয়ের উন্নতি কতটা ছোট বা প্রকট হোক না কেন কারও কাছে অন্তর্দৃষ্টি আছে? বা এখানে অন্য কোন বিষয় নিয়ে আলোচনা হয়েছে?
সম্পাদনা: কিছু টিপস (ক্রেডিট- লুক ম্যাকিনিস, ভিডেসমেডটি, ম্যাট গ্যালাগার, জোহান):
আপনি যখন পারেন কোনও ডিস্কে মিডিয়া সংরক্ষণ করুন।
যদি টাইললেয়ারগুলিতে রেন্ডারিং হয় তবে বড় টাইলসাইজ ব্যবহার করুন
init প্রায়শই স্থানধারক অবজেক্টগুলির সাথে অ্যারে ব্যবহার করে, পর্যায়ক্রমে অন্য ডিজাইনের পদ্ধতির মধ্যে এটি
নোট করুন যে চিত্রগুলি একটির চেয়ে দ্রুততর রেন্ডার হবে
CGPDFPageRef
সময়ের আগে পৃষ্ঠাগুলি প্রস্তুত করতে
NSOperations
জিসিডি ও ব্লক ব্যবহার করুন ।অঙ্কন করার সময় মেমরির ব্যবহার হ্রাস করার
CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh); CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault);
আগে কল করুনCGContextDrawPDFPage
ডকরাফ দিয়ে আপনার
NSOperations
আরম্ভ করা একটি খারাপ ধারণা (স্মৃতি), ডকফেরাফটিকে একটি সিঙ্গেলনে আবদ্ধ করুন।অযথা বাতিল করুন
NSOperations
যখন আপনি পারবেন, বিশেষত যদি তারা স্মৃতি ব্যবহার করে থাকে তবে প্রসঙ্গটি উন্মুক্ত রেখে সতর্ক থাকুন!পৃষ্ঠা অবজেক্টগুলি পুনর্ব্যবহার করুন এবং অব্যবহৃত দর্শনগুলি ধ্বংস করুন
যে কোনও উন্মুক্ত প্রসঙ্গগুলি আপনার প্রয়োজন না হওয়ার সাথে সাথেই তা বন্ধ করুন
মেমোরি সতর্কতা গ্রহণ করার পরে ডকরাফ এবং যে কোনও পৃষ্ঠা ক্যাশে প্রকাশ এবং পুনরায় লোড করুন
অন্যান্য পিডিএফ বৈশিষ্ট্য:
পিডিএফের ভিতরে লিঙ্কগুলি পাওয়া (এবং এখানে এবং এখানে )
লিঙ্কটির লক্ষ্য অর্জন করা (
/Dest
অ্যারে থেকে পৃষ্ঠা নম্বর প্রাপ্ত )
কাঁচা পাঠ্য প্রাপ্ত করা (এবং এখানে এবং এখানে এবং এখানে (অবস্থানের উপর দৃষ্টি নিবদ্ধ করা))
অনুসন্ধান করা (এবং এখানে ) (সমস্ত পিডিএফ নিয়ে কাজ করে না (কিছু কিছু অদ্ভুত অক্ষর দেখায়, আমি অনুমান করি এটি একটি এনকোডিং সমস্যা তবে আমি নিশ্চিত নই)) ক্রেডিট ব্রেনফিডার)
ক্যালায়ার এবং অফ-স্ক্রিন রেন্ডারিং - দ্রুত / মসৃণ প্রদর্শনের জন্য পরবর্তী পৃষ্ঠাটি রেন্ডার করুন
নথিপত্র
- কোয়ার্টজ পিডিএফ অবজেক্টস (মেটা তথ্য, টীকা, থাম্বসের জন্য ব্যবহৃত)
- অ্যাবোবি পিডিএফ স্পেস
উদাহরণ প্রকল্প
- অ্যাপল / জুমিংপিডিএফ - জুমিং
UIScrollView
,,CATiledLayer
- ভিএফআর / রিডার - জুমিং, পেজিং
UIScrollView
,CATiledView
- ব্রাউজ / পাতাগুলি - দুর্দান্ত ট্রানজিশন সহ পেজিং
- / স্কিম - এটি যা কিছু মনে হয় (ওএসএক্সের জন্য পিডিএফ রিডার / সম্পাদক)
PSPDFKit
, এটি সস্তা নয়, তবে মূল্যবান: pspdfkit.com