test_multibyte_kor.py :  » PDF » ReportLab » ReportLab_2_4 » tests » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » PDF » ReportLab 
ReportLab » ReportLab_2_4 » tests » test_multibyte_kor.py
from reportlab.lib.testutils import setOutDir,makeSuiteForClasses,outputfile,printLocation
setOutDir(__name__)
import string, os
import unittest
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib import colors
from reportlab.lib.codecharts import KutenRowCodeChart,hBoxText
from reportlab.pdfbase.cidfonts import UnicodeCIDFont,findCMapFile
global VERBOSE
VERBOSE = 0

class KoreanFontTests(unittest.TestCase):

    def test0(self):

        # if they do not have the font files or encoding, go away quietly
##        try:
##            from reportlab.pdfbase.cidfonts import CIDFont, findCMapFile
##            findCMapFile('KSCms-UHC-H')
##        except:
##            #don't have the font pack.  return silently
##            print 'CMap not found'
##            return

        localFontName = 'HYSMyeongJo-Medium'
        c = Canvas(outputfile('test_multibyte_kor.pdf'))
        c.setFont('Helvetica', 30)
        c.drawString(100,700, 'Korean Font Support')
        c.setFont('Helvetica', 10)
        c.drawString(100,680, 'Short sample in Unicode; grey area should outline the text with correct width.')


        hBoxText(u'\ub300\ud55c\ubbfc\uad6d = Korea',
                 c, 100, 660, 'HYSMyeongJo-Medium')
        hBoxText(u'\uc548\uc131\uae30 = AHN Sung-Gi (Actor)',
                 c, 100, 640, 'HYGothic-Medium')

##        pdfmetrics.registerFont(UnicodeCIDFont('HYSMyeongJo-Medium'))
##        c.setFont('Helvetica', 10)
##        c.drawString(100,610, "Longer sample From Adobe's Acrobat web page in EUC:")
##
##        sample = """\xbf\xad \xbc\xf6 \xbe\xf8\xb4\xc2 \xb9\xae\xbc\xad\xb4\xc2 \xbe\xc6\xb9\xab\xb7\xb1 \xbc\xd2\xbf\xeb\xc0\xcc \xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9. \xbb\xe7\xbe\xf7 \xb0\xe8\xc8\xb9\xbc\xad, \xbd\xba\xc7\xc1\xb7\xb9\xb5\xe5\xbd\xc3\xc6\xae, \xb1\xd7\xb7\xa1\xc7\xc8\xc0\xcc \xb8\xb9\xc0\xcc \xc6\xf7\xc7\xd4\xb5\xc8 \xbc\xd2\xc3\xa5\xc0\xda \xb6\xc7\xb4\xc2 \xc0\xa5
##\xbb\xe7\xc0\xcc\xc6\xae\xb8\xa6 \xc0\xdb\xbc\xba\xc7\xcf\xb4\xc2 \xb0\xe6\xbf\xec Adobe\xa2\xe7 Acrobat\xa2\xe7 5.0 \xbc\xd2\xc7\xc1\xc6\xae\xbf\xfe\xbe\xee\xb8\xa6 \xbb\xe7\xbf\xeb\xc7\xd8\xbc\xad \xc7\xd8\xb4\xe7 \xb9\xae\xbc\xad\xb8\xa6 Adobe
##Portable Document Format (PDF) \xc6\xc4\xc0\xcf\xb7\xce \xba\xaf\xc8\xaf\xc7\xd2 \xbc\xf6 \xc0\xd6\xbd\xc0\xb4\xcf\xb4\xd9. \xb4\xa9\xb1\xb8\xb3\xaa \xb1\xa4\xb9\xfc\xc0\xa7\xc7\xd1 \xc1\xbe\xb7\xf9\xc0\xc7
##\xc7\xcf\xb5\xe5\xbf\xfe\xbe\xee\xbf\xcd \xbc\xd2\xc7\xc1\xc6\xae\xbf\xfe\xbe\xee\xbf\xa1\xbc\xad \xb9\xae\xbc\xad\xb8\xa6 \xbf\xad \xbc\xf6 \xc0\xd6\xc0\xb8\xb8\xe7 \xb7\xb9\xc0\xcc\xbe\xc6\xbf\xf4, \xc6\xf9\xc6\xae, \xb8\xb5\xc5\xa9, \xc0\xcc\xb9\xcc\xc1\xf6 \xb5\xee\xc0\xbb \xbf\xf8\xba\xbb \xb1\xd7\xb4\xeb\xb7\xce \xc0\xc7\xb5\xb5\xc7\xd1 \xb9\xd9 \xb4\xeb\xb7\xce
##\xc7\xa5\xbd\xc3\xc7\xd2 \xbc\xf6 \xc0\xd6\xbd\xc0\xb4\xcf\xb4\xd9. Acrobat 5.0\xc0\xbb \xbb\xe7\xbf\xeb\xc7\xcf\xbf\xa9 \xc0\xa5 \xba\xea\xb6\xf3\xbf\xec\xc0\xfa\xbf\xa1\xbc\xad \xb9\xae\xbc\xad\xb8\xa6 \xbd\xc2\xc0\xce\xc7\xcf\xb0\xed \xc1\xd6\xbc\xae\xc0\xbb \xc3\xdf\xb0\xa1\xc7\xcf\xb4\xc2 \xb9\xe6\xbd\xc4\xc0\xb8\xb7\xce
##\xb1\xe2\xbe\xf7\xc0\xc7 \xbb\xfd\xbb\xea\xbc\xba\xc0\xbb \xc7\xe2\xbb\xf3\xbd\xc3\xc5\xb3 \xbc\xf6 \xc0\xd6\xbd\xc0\xb4\xcf\xb4\xd9.
##
##\xc0\xfa\xc0\xdb\xb1\xc7 © 2001 Adobe Systems Incorporated. \xb8\xf0\xb5\xe7 \xb1\xc7\xb8\xae\xb0\xa1 \xba\xb8\xc8\xa3\xb5\xcb\xb4\xcf\xb4\xd9.
##\xbb\xe7\xbf\xeb\xc0\xda \xbe\xe0\xb0\xfc
##\xbf\xc2\xb6\xf3\xc0\xce \xbb\xe7\xbf\xeb\xc0\xda \xba\xb8\xc8\xa3 \xb1\xd4\xc1\xa4
##Adobe\xc0\xc7 \xc0\xe5\xbe\xd6\xc0\xda \xc1\xf6\xbf\xf8
##\xbc\xd2\xc7\xc1\xc6\xae\xbf\xfe\xbe\xee \xba\xd2\xb9\xfd \xc0\xcc\xbf\xeb \xb9\xe6\xc1\xf6
##"""
##        tx = c.beginText(100,600)
##        tx.setFont('HYSMyeongJo-Medium-KSC-EUC-H', 7, 8)
##        tx.textLines(sample)
##        tx.setFont('Helvetica', 10, 12)
##        tx.textLine()
##        tx.textLines("""This test document shows Korean output from the Reportlab PDF Library.
##            You may use one Korean font, HYSMyeongJo-Medium, and a number of different
##            encodings.
##
##            The available encoding names (with comments from the PDF specification) are:
##            encodings_kor = [
##                'KSC-EUC-H',        # KS X 1001:1992 character set, EUC-KR encoding
##                'KSC-EUC-V',        # Vertical version of KSC-EUC-H
##                'KSCms-UHC-H',      # Microsoft Code Page 949 (lfCharSet 0x81), KS X 1001:1992
##                                    #character set plus 8,822 additional hangul, Unified Hangul
##                                    #Code (UHC) encoding
##                'KSCms-UHC-V',      #Vertical version of KSCms-UHC-H
##                'KSCms-UHC-HW-H',   #Same as KSCms-UHC-H, but replaces proportional Latin
##                                    # characters with halfwidth forms
##                'KSCms-UHC-HW-V',   #Vertical version of KSCms-UHC-HW-H
##                'KSCpc-EUC-H',      #Macintosh, KS X 1001:1992 character set with MacOS-KH
##                                    #extensions, Script Manager Code 3
##                'UniKS-UCS2-H',     #Unicode (UCS-2) encoding for the Adobe-Korea1 character collection
##                'UniKS-UCS2-V'      #Vertical version of UniKS-UCS2-H
##                ]
##
##            The following pages show all characters in the KS X 1001:1992 standard, using the
##            encoding 'KSC-EUC-H' above.  More characters (a LOT more) are available if you
##            use UHC encoding or the Korean Unicode subset, for which the correct encoding
##            names are also listed above.
##            """)
##
##        c.drawText(tx)
##
##        c.setFont('Helvetica',10)
##        c.drawCentredString(297, 36, 'Page %d' % c.getPageNumber())
##        c.showPage()
##
##        # full kuten chart in EUC
##        c.setFont('Helvetica', 18)
##        c.drawString(72,750, 'Characters available in KS X 1001:1992, EUC encoding')
##        y = 600
##        for row in range(1, 95):
##            KutenRowCodeChart(row, 'HYSMyeongJo-Medium','KSC-EUC-H').drawOn(c, 72, y)
##            y = y - 125
##            if y < 50:
##                c.setFont('Helvetica',10)
##                c.drawCentredString(297, 36, 'Page %d' % c.getPageNumber())
##                c.showPage()
##                y = 700

        c.save()

        if VERBOSE:
            print 'saved '+outputfile('test_multibyte_kor.pdf')


def makeSuite():
    return makeSuiteForClasses(KoreanFontTests)


#noruntests
if __name__ == "__main__":
    VERBOSE = 1
    unittest.TextTestRunner().run(makeSuite())
    printLocation()
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.