2010-05-07 18 views
5

मैं पीडीएफ दस्तावेज़ में शब्दों के फ़ॉन्ट परिवार और फ़ॉन्ट आकार को कैसे समझूं? हम वास्तव में iText का उपयोग करके प्रोग्रामिंग रूप से एक पीडीएफ दस्तावेज उत्पन्न करने की कोशिश कर रहे हैं, लेकिन हमें यकीन नहीं है कि फ़ॉन्ट परिवार और मूल दस्तावेज़ के फ़ॉन्ट आकार को कैसे ढूंढना है, जिसे उत्पन्न करने की आवश्यकता है। दस्तावेज़ गुणों में यह जानकारी शामिल नहीं हैमैं पीडीएफ दस्तावेज़ में शब्दों के फ़ॉन्ट परिवार और फ़ॉन्ट आकार को कैसे समझूं?

उत्तर

5

फ़ॉन्ट्स सूची में संग्रहीत हैं (मुझे लगता है कि प्रकार फ़ॉन्ट के उप-सूची में)। । आप किसी पाठ फ़ाइल के रूप में एक पीडीएफ खोलते हैं, तो आप सूची प्रविष्टियाँ खोजने के लिए सक्षम होना चाहिए (वे शुरू करते हैं और क्रमश: "< <" के साथ समाप्त और ">>"

एक सरल pdf फ़ाइल पर, मैं निम्नलिखित पाया:

<</Type/Font/BaseFont/Helvetica-Bold/Subtype/Type1/Encoding/WinAnsiEncoding>> 

इस प्रकार उपसर्ग के लिए खोज आप मदद करनी चाहिए।

बेशक

इस एक मैनुअल है (कुछ पीडीएफ फाइलों में, वहाँ commponents लेकिन '/ प्रकार/फ़ॉन्ट' ठीक होना चाहिए के बीच रिक्त स्थान हैं) प्रक्रिया, जबकि आप शायद एक स्वचालित पसंद करेंगे।

एक और नोट पर, हम कभी-कभी identifont या what the font का उपयोग असामान्य फ़ॉन्ट ढूंढने के लिए करते हैं जो हमें समस्या (लोगो फ़ॉन्ट) देते हैं।

संबंध Guillaume

संपादित करें: निम्नलिखित कोड पन्नों में सभी फ़ॉन्ट मिल जाएगा। संक्षेप में, आप subdictionnary "ressource" और फिर subdictionnary "फ़ॉन्ट" के लिए प्रत्येक पृष्ठ की उपन्यास खोजते हैं। बाद में प्रत्येक प्रविष्टि एक फ़ॉन्ट का वर्णन करने वाला एक फ़ॉन्ट डिक्शनरी है।

PdfReader reader = new PdfReader(
    new FileInputStream(new File("file.pdf"))); 
int nbmax = reader.getNumberOfPages(); 
System.out.println("nb pages " + nbmax); 

for (int i = 1; i <= nbmax; i++) { 
    System.out.println("----------------------------------------"); 
    System.out.println("Page " + i); 
    PdfDictionary dico = reader.getPageN(i); 
    PdfDictionary ressource = dico.getAsDict(PdfName.RESOURCES); 
    PdfDictionary font = ressource.getAsDict(PdfName.FONT); 
    // we got the page fonts 
    Set keys = font.getKeys(); 
    Iterator it = keys.iterator(); 
    while (it.hasNext()) { 
     PdfName name = (PdfName) it.next(); 
     PdfDictionary fontdict = font.getAsDict(name); 
     PdfObject typeFont = fontdict.getDirectObject(PdfName.SUBTYPE); 
     PdfObject baseFont = fontdict.getDirectObject(PdfName.BASEFONT);    
     System.out.println(baseFont.toString());    
    } 
} 

नाम (परिवर्तनीय "नाम" निम्नलिखित कोड में) फ़ॉन्ट को बदलने के लिए पाठ में उपयोग किया जाता है। पीडीएफ में, आपको इसे टेक्स्ट के बगल में ढूंढना होगा। निम्नलिखित संख्या आकार है। उदाहरण के लिए, यह आकार 12 है। (क्षमा करें, अभी भी इस भाग के लिए कोई कोड नहीं है)।

BT 
/F13 12 Tf 
288 720 Td 
the text to find Tj 
ET 
+0

यहां एक पीडीएफ देख रहे हैं और मैं हमेशा एक साधारण साधारण पाठ-केवल पीडीएफ के लिए/टीटी 1 1 टीएफ देखता हूं, लेकिन फ़ॉन्ट आकार 1 से काफी बड़ा है। मैं अनुमान लगा रहा हूं आपको उस बिंदु तक पहुंचने वाले परिवर्तनों को भी जोड़ना होगा, लेकिन मुझे ऐसा करने का एक अच्छा तरीका नहीं मिला है, जो एक रेंडरर को लागू करने से कम है। – Trejkaz

1

पीडीएफ पर निर्भर करता है, अगर यह रेखांकित नहीं किया गया है आप एडोब इलस्ट्रेटर में खोलने के लिए सक्षम हो सकता है, डबल पाठ क्लिक करें और देखने के लिए यह फ़ॉन्ट परिवार, आकार, आदि इसके बारे में कुछ का चयन

यदि पाठ को रेखांकित किया गया है तो उन ऑनलाइन उपकरणों में से एक का उपयोग करें जो पैट्री फ़ॉन्ट को ढूंढने का सुझाव देते हैं।

गुड लक

1

यदि आपके पास एडोब एक्रोबेट आप फोंट के अंदर देख सकते हैं और वस्तुओं और पाठ धाराओं की जांच कर सकते हैं। मैंने इस पर एक ब्लॉग पोस्ट http://pdf.jpedal.org/java-pdf-blog/bid/10479/Viewing-PDF-objects