Ufafanuzi wa Umbizo la Faili la PDF: Muundo, Tabaka, na Viwango
Nini hasa kipo ndani ya PDF? Mchoro wenye lebo na msamiati unaofunika sehemu nne za kimwili (kichwa, mwili, xref, kiishio), tabaka sita za maudhui (maandishi, picha, fonti, maelezo, vekta, sahihi), metadata, na viwango vya ISO (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) vilivyojengwa juu yake.
PDF si kitu kimoja. Ni kontena la binary lenye muundo maalum kwenye diski, seti ya tabaka za maudhui zilizowekwa ndani ya kontena hilo, na familia ya viwango vya ISO vilivyojengwa juu ya vipimo vya msingi. Ifungue katika kihariri cha hex na utaona muundo wake kwa maandishi wazi kwenye mistari michache ya kwanza. Ifungue katika kipengezaji na tabaka zitachanganywa pamoja kama ukurasa mmoja.
Mwongozo huu ni marejeleo yenye lebo: muundo wa faili kimwili, tabaka za maudhui ambazo mwili unazo, metadata zinazozunguka kila kitu, na viwango (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) vinavyouweka kwa matumizi maalum.

Unataka kutumia mchoro huu kwenye blogu yako? Nakili msimbo huu wa kuingiza:
Sehemu Nne za Kimwili
Kila PDF kwenye diski ina muundo wa sehemu nne sawa, kwa mpangilio huu:
1. Kichwa (Header)
Kila mstari wa kwanza wa faili. Daima huanza na %PDF- ikifuatwa na nambari ya toleo:
%PDF-1.7Matawi huanzia 1.0 (iliyotolewa 1993) hadi 2.0 (iliyotolewa 2017, ya sasa). Kichwa hicho hufuatwa na mstari wa maoni wenye baiti za binary zinazoashiria kwa FTP na zana zingine za usafirishaji kwamba huu ni faili la binary.
2. Mwili - Vitu Visivyo vya Moja kwa Moja (Indirect Objects)
Sehemu kubwa ya faili. Kila ukurasa, fonti, picha, maelezo, na sehemu ya fomu ni kitu chenye nambari:
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /Contents 4 0 R /Resources << ... >> >>
endobjKila kitu kina ID (nambari kabla ya 0 obj), nambari ya kizazi (0, inayotumiwa kwa masasisho ya nyongeza), na mzigo kati ya << na >> kwa kamusi au stream na endstream kwa mito ya binary (data za picha, data za fonti, maudhui yaliyobanwa).
Vitu vinarejeana kwa kutumia sintaksia ya <id> <gen> R (k.m., 3 0 R inamaanisha "kitu 3, kizazi 0"). Hivi ndivyo ukurasa unavyorejelea fonti inayotumia, au jinsi katalogi inavyorejelea mzizi wa mti wa kurasa.
3. Jedwali la Msalaba (Cross-Reference Table - xref)
Jedwali la utafutaji wa baiti-offset. Kwa kila kitu kwenye mwili, xref hurekodi nafasi yake kamili ya baiti kwenye faili:
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000089 00000 n
0000000172 00000 n
0000000299 00000 n
0000000453 00000 nHivi ndivyo vinavyofanya PDF kuwa na ufikivu wa nasibu. Kipengezaji kinaweza kusoma xref, kuruka moja kwa moja kwenye baiti-offset ya kitu 3, na kuonyesha ukurasa huo bila kuchanganua kilichobaki kwenye faili. Hii ndiyo sababu PDF za sura moja hufunguka mara moja hata wakati faili chanzo ni kurasa 500.
4. Kiishio (Trailer)
Sehemu ya mwisho. Inamwambia mchanganuzi mahali pa kupata xref na ni kitu gani ndicho mzizi:
trailer
<< /Size 6 /Root 1 0 R /Info 7 0 R >>
startxref
1893
%%EOFThamani ya startxref ni baiti-offset ya jedwali la xref. Alama ya %%EOF ni mwisho halisi wa faili. Viishio ndivyo vinavyowezesha masasisho ya nyongeza: kuongeza xref mpya + kiishio mwishoni hukuruhusu kuongeza vitu bila kuandika upya faili nzima.
Tabaka Sita za Maudhui
Ndani ya mwili, maudhui huhifadhiwa katika aina sita za tabaka. Kila ukurasa wa PDF unaoonyeshwa ni mchanganyiko wa tabaka hizi:
1. Maandishi (Text)
Amri za nafasi za glifi na marejeleo ya fonti, si mihimili ya maandishi. PDF huhifadhi maagizo kama "chora glifi 42 kutoka fonti F3 kwenye nafasi (120, 540)" badala ya "chora herufi A hapa." Hii ndiyo sababu maandishi yanaweza kuchaguliwa na kutafutwa: kipengezaji huunganisha upya vitambulisho vya glifi kwa alama za Unicode kupitia ramani ya ToUnicode (au CMap kwa fonti za CJK).
Inapotokea maandishi hayana ramani ya ToUnicode, unapata tatizo la kawaida la "PDF yenye maandishi yanayoweza kuchaguliwa ambayo yakinakiliwa huleta takataka." Maandishi yanaonekana, lakini ramani ya glifi-kwenda-Unicode imevunjika au haipo.
2. Picha (Images)
Huhifadhiwa kama mito iliyoingizwa kwa moja ya miundo kadhaa:
- JPEG (kichujio cha DCTDecode): picha za kupiga picha, kawaida zaidi
- JPEG2000 (JPXDecode): ubano wa juu zaidi, si kawaida sana
- Sawa na PNG (kichujio cha FlateDecode + Predictor): picha za skrini, michoro ya mistari
- CCITT Group 4 (CCITTFaxDecode): maandishi yaliyochanganuliwa nyeusi na nyeupe, hutumiwa katika michanganuo ya kuhifadhi
- JBIG2 (JBIG2Decode): picha za bilevel, kawaida katika hati zilizochanganuliwa na OCR
Picha zinaweza kupunguzwa, kubanwa upya, au kubadilishwa bila kuathiri maudhui mengine.
3. Fonti (Fonts)
Huingizwa kama programu kamili za fonti, sehemu ndogo (glifi zilizotumiwa tu zimejumuishwa), au zinarejelewa kwa jina (lazima ziwe zimewekwa kwenye mfumo wa kipengezaji). Kujumuisha sehemu ndogo ndiyo chaguo-msingi - hupunguza ukubwa wa faili kwa kiasi kikubwa. Miundo ya fonti inayotumika: Type1, TrueType, OpenType, na CIDFont (kwa CJK).
Inapotokea fonti inarejelewa lakini haijaingizwa na haijawekwa kwenye mfumo wa kipengezaji, kipengezaji hubadilisha fonti inayofanana - ambayo kwa kawaida huonekana vibaya. PDF/A inahitaji fonti zote ziingizwe ili kuzuia hili.
4. Maelezo (Annotations)
Vivutio, maoni, viungo, mihuri, alama za maji, na sehemu za fomu zote ni maelezo. Zimepangwa juu ya maudhui ya ukurasa na zinaweza kuongezwa, kuhaririwa, au kuondolewa bila kubadilisha ukurasa wa msingi.
Sehemu za fomu ni kesi maalum: maelezo ya kidude inayoingiliana (sehemu inayoonekana) pamoja na kamusi ya sehemu (sehemu ya data). Unapoijaza fomu na kuokoa, ni kamusi za sehemu tu zinazobadilika - ukurasa wenyewe hauguswi.
5. Michoro ya Vecta (Vector Graphics)
Mistari, maumbo, curves, na njia zinazochorwa kwa waendeshaji wanaofanana na PostScript (moveto, lineto, curveto). Hupanuka bila kikomo bila kupoteza ubora. Sehemu kubwa ya maingizo kutoka kwa CAD, grafu, na michoro katika PDF ni michoro ya vekta.
6. Sahihi za Dijitali (Digital Signatures)
Sahihi zilizo na msaada wa PKI zilizofungwa kwa safu za baiti za faili. Kamusi ya sahihi inabainisha "baiti 0 hadi 12,547 na 14,200 hadi mwisho wa faili zimesainiwa" - safu ndogo katikati imehifadhiwa kwa thamani ya sahihi yenyewe. Mabadiliko yoyote kwenye safu za baiti zilizosainiwa hufanya sahihi kuwa batili, ambayo ndiyo jinsi PDF inavyogundua uharibifu baada ya kusainiwa.
Baadhi ya PDF zina sahihi nyingi, zilizowekwa kama masasisho ya nyongeza - kila saini husaini faili kama ilivyokuwa wakati walipopokea, ikihifadhi mnyororo.
Metadata: Mifumo Miwili Sambamba
PDF ina mifumo miwili ya metadata ambayo mara nyingi hutofautiana:
Kamusi Sanifu ya /Info
Imehifadhiwa kwenye kiishio. Sehemu: Title, Author, Subject, Keywords, Creator (programu ambayo mtumiaji aliunda hati kwayo), Producer (programu iliyotengeneza PDF), CreationDate, ModDate. Mihimili ya maandishi wazi, rahisi kusoma na zana yoyote ya PDF.
Mito ya Metadata ya XMP
Mto tofauti wa XML (Adobe XMP, kulingana na RDF/XML) unaounga mkono miundo tajiri zaidi: Dublin Core, IPTC, miundo maalum ya kikoa (miundo ya rangi, usajili wa hakimiliki, matoleo ya hati).
Watengenezaji wa kisasa wa PDF huandika kwa zote mbili. PDF za zamani zina /Info tu. Baadhi ya PDF zina /Info iliyo na tarehe ya zamani kutoka kwa toleo la awali na XMP sahihi kutoka kwa uhariri wa hivi majuzi - au kinyume chake. Unapokagua PDF kwa kufuata au uchunguzi, angalia zote mbili.
Viwango vya ISO Vilivyojengwa Juu ya PDF
Kipimo cha msingi cha PDF ni ISO 32000. Viwango kadhaa vilivyotokana huweka vikwazo kwa PDF kwa matumizi maalum:
| Kiwango | Matumizi | Vizuizi |
|---|---|---|
| PDF/A | Uhifadhi wa muda mrefu | Fonti zote zimeingizwa, hakuna JavaScript, hakuna sauti/video, nafasi za rangi hazitegemei kifaa. Viwango vya utiifu: PDF/A-1, A-2, A-3 (inaruhusu viambatisho vya faili) |
| PDF/X | Uzalishaji wa uchapishaji | Rangi ya CMYK, fonti zilizoingizwa na wasifu wa rangi, hakuna uwazi (PDF/X-1a) au uwazi uliodhibitiwa (PDF/X-4) |
| PDF/UA | Upatikanaji | Mti wa muundo wenye lebo, metadata ya lugha, maandishi mbadala kwa picha, mpangilio wa kusoma wa kimantiki |
| PDF/E | Uhandisi | Miundo ya 3D (miundo ya U3D, PRC), metadata maalum ya CAD |
| PDF/VT | Uchapishaji wa manunuzi unaobadilika | Umeboreshwa kwa ajili ya barua pepe za kibinafsi za wingi |
PDF inaweza kutii viwango vingi kwa wakati mmoja - PDF/A-2u (uhifadhi na ramani ya Unicode) pamoja na PDF/UA (upatikanaji) ni kawaida kwa kumbukumbu za serikali na kisheria.
PDF Zilizowekwa Mstari (Zilizoboreshwa kwa Wavuti)
PDF "iliyowekwa mstari" au "iliyoboreshwa kwa wavuti" hupanga upya mwili ili vitu vya ukurasa wa kwanza vionekane mapema kwenye faili. Kipengezaji cha wavuti kinaweza kuonyesha ukurasa 1 baada ya kupakua KB ~50 tu badala ya kusubiri faili nzima. Kiishio kinarudiwa mbele, pamoja na jedwali la kidokezo ambalo humwambia kipengezaji mahali kila ukurasa unapoanza.
Watengenezaji wengi wa kisasa wa PDF huunga mkono uwekaji mstari kama chaguo la "Hifadhi kwa Wavuti". Umbizo huongeza 2-5% kwa ukubwa wa faili badala ya uonyeshaji wa ukurasa wa kwanza haraka kwenye miunganisho ya polepole.
Usimbaji na Ruhusa
PDF zinaweza kusimbwa kwa nenosiri (au vyeti) na kupewa ruhusa za kina: chapisha, nakili maandishi, hariri, jaza fomu, toa kwa ajili ya upatikanaji. Usimbaji huhifadhiwa kwenye kamusi ya /Encrypt ya kiishio.
Nguvu za usimbaji zimebadilika: RC4 40-bit (PDF za awali, zinazoweza kuvunjwa kwa urahisi leo), RC4 128-bit (bado dhaifu), AES-128, AES-256. Utekelezaji wa awali wa RC4 wa Acrobat 5 ulivunjwa hadharani mwaka 2001; usimbaji wa kisasa wa PDF (AES-256, PDF 2.0) ni imara unapotumiwa na manenosiri yenye nguvu.
Kumbuka: "Ruhusa" ni za ushauri. Kipengezaji kinachoheshimu ruhusa hizo kitazitekeleza. Kipengezaji kinachozipuuza (au zana inayofuta usimbaji) haifanyi hivyo.
Jinsi PDFSub Inavyosoma PDF
PDFSub huchakata PDF kwa kutumia kifungashio cha PDFium cha Rust (injini sawa inayotumia kipengezaji cha PDF cha Chromium) pamoja na PaddleOCR kwa hati zilizochanganuliwa. Kwa maelezo kamili ya usanifu na ulinganisho na zana za mtandaoni, angalia Kipengezaji dhidi ya Usalama wa PDF wa Mtandaoni.
Kwa kubadilisha PDF kuwa miundo mingine huku ukihifadhi muundo ulioelezewa hapo juu:
- PDF hadi Excel - hutoa maandishi + jedwali, huhifadhi uratibu
- OCR PDF - huongeza tabaka la maandishi linaloweza kutafutwa kwa PDF zilizochanganuliwa
- PDF hadi Word - huweka upya maandishi katika aya zinazoweza kuhaririwa
- Banana PDF - hupunguza picha, huchagua fonti ndogo
Kwa ajili ya kazi za uhifadhi hasa, angalia Jinsi ya Kubadilisha PDF kuwa PDF/A.
Kusoma Zaidi
- ISO 32000-2 (kipimo cha PDF 2.0) - marejeleo yenye mamlaka, yanayohitaji malipo
- Hifadhi za Marejeleo za Adobe PDF - marejeleo ya bure kwa PDF 1.7
- Chama cha PDF - kikundi cha kazi cha tasnia, nakala za bure na faili za majaribio ya utiifu
Kwa mada maalum za PDF: Mwongozo wa Utiifu wa PDF kwa Mawakili, Mwongozo wa Ubadilishaji wa PDF/A.