ரெண்டர் நேரத்தில் PDF-களைப் பகுப்பாய்வு செய்வதை நிறுத்துங்கள்
பெரும்பாலான முன்பக்க (frontend) PDF பிரித்தெடுக்கும் கருவிகள் தோல்வியடைகின்றன.
டெவலப்பர்கள் காட்சி வெளியீட்டிலிருந்து (visual output) ஆவணத்தின் அமைப்பைக் கணிக்க முயல்கிறார்கள். நெடுவரிசைகள் (columns), அட்டவணைகள் (tables) அல்லது பட்டியல்களைக் (lists) கண்டறிய அவர்கள் திரையில் தெரியும் பிக்சல்களைப் பார்க்கிறார்கள். ஒரு பெட்டி எங்கு தொடங்குகிறது என்பதைத் தீர்மானிக்க அவர்கள் கணினி பார்வை (computer vision) அல்லது பிக்சல் அருகாமையைப் பயன்படுத்துகிறார்கள்.
இது உருவாக்குவதற்கான தவறான வழி.
ஒரு PDF ஏற்கனவே அதன் operator stream-இல் தெளிவான கட்டமைப்புத் தரவைக் கொண்டுள்ளது. ஒரு அட்டவணை என்பது அருகருகே இருக்கும் பிக்சல்களின் தொகுப்பு மட்டுமல்ல. அது moveTo, lineTo, அல்லது rectangle போன்ற குறிப்பிட்ட கட்டளைகளுடன் வரையப்படுகிறது. நீங்கள் கண்டறிய விரும்பும் எல்லைகள் ஏற்கனவே மூலத்தில் (source) குறியாக்கம் செய்யப்பட்டுள்ளன.
உங்கள் பிரித்தெடுக்கும் கருவி 100% ஜூமிலும் 150% ஜூமிலும் வெவ்வேறு நெடுவரிசைகளைக் கொடுத்தால், நீங்கள் கட்டமைப்பைப் பிரித்தெடுக்கவில்லை என்று அர்த்தம். நீங்கள் காட்சித் தடயங்களை (visual artifacts) மட்டுமே பொருத்திப் பார்க்கிறீர்கள்.
காட்சி சார்ந்த யூகங்களைப் (visual heuristics) பயன்படுத்துவதை நிறுத்துங்கள். operator stream-ஐப் பகுப்பாய்வு செய்யத் தொடங்குங்கள்.
ஏன் operator stream சிறந்தது:
- இது தீர்மானிக்கத்தக்கது (deterministic). அளவு (scale) அல்லது எழுத்துரு குறிப்பு (font hinting) எதுவாக இருந்தாலும் இது ஒரே மாதிரியாகச் செயல்படும்.
- இது உண்மையான தரவைப் பயன்படுத்துகிறது. உருவாக்கியவரால் வரையறுக்கப்பட்ட உண்மையான பாதைகள் (paths) மற்றும் ஆயத்தொலைவுகளை (coordinates) நீங்கள் பயன்படுத்துகிறீர்கள்.
- இது கணிதப் பிழைகளைத் தவிர்க்கிறது. உதாரணமாக, மண்டலங்களைக் (zones) கண்டறிய உரை மையங்களுக்கு இடையிலான நடுப்புள்ளிகளைப் பயன்படுத்துவது 'rounding bugs'-க்கு வழிவகுக்கும். ஒரு bounding box-இன் உண்மையான மேல் விளிம்பைப் பயன்படுத்துவதே சரியான வழியாகும்.
கடினமான பாதையே சரியான பாதை.
நீங்கள் CTM stack-ஐப் புரிந்துகொள்ள வேண்டும். நீங்கள் மேட்ரிக்ஸ் நிலைகளைக் (matrix states) கண்காணிக்க வேண்டும் மற்றும் துணைப் பாதைகளை (subpaths) வகைப்படுத்த வேண்டும். இதில் தேர்ச்சி பெற நீங்கள் PDF விவரக்குறிப்பு (specification) மற்றும் மூலக் குறியீட்டை (source code) படிக்க வேண்டும்.
இதற்கு ஆரம்பத்தில் அதிக முயற்சி தேவைப்படும். ஆனால் பயனர் பதிவேற்றும் ஒவ்வொரு PDF-க்கும் இது வேலை செய்யும். பிக்சல் அடிப்படையிலான கருவிகள் உங்கள் சோதனைத் தொகுப்பில் (test suite) உள்ள சில கோப்புகளுக்கு மட்டுமே வேலை செய்யும்.
ஒரு உண்மையான பிரித்தெடுக்கும் கருவியைக் உருவாக்குங்கள், வெறும் டெமோவை அல்ல.