วันศุกร์ที่ 10 กรกฎาคม พ.ศ. 2552

Thousands Separator

exบน OpenOffice.org Calc นั้นไม่มีปุ่ม comma หรือ Thousand Separator เหมือนกับบน Excel ผมก็เลยทำปุ่มนี้ขึ้นมาเป็น extension เมื่อติดตั้งแล้วจะได้ปุ่มเหมือนกับบน Excel เลยครับโดยสามารถดาวน์โหลดได้ที่

http://extensions.services.openoffice.org/project/thousandseparator

ซึ่งการทำงานผมได้เลียนแบบบน Excel 2003 มาครับ
Continue Reading...

วันเสาร์ที่ 4 กรกฎาคม พ.ศ. 2552

OpenOffice.org Menubar&Toolbar Merging

สำหรับคนที่คิดจะเริ่มทำ extensions ของ OpenOffice.org เป็นครั้งแรกคงหนีไม่พ้น extensions ที่ช่วยทำ extensions อีกทีที่ชื่อว่า BasicAddonBuilder หรือ BAB นั่นเอง สามารถดูได้จาก

http://www.linuxbeacon.com/doku.php/articles:ooobab

ซึ่ง extensions นี้ให้ความสะดวกสบายมากเพราะ จะมี UI มาคอยเก็บค่า configuration ต่างๆที่จำเป็นแล้วนำไปสร้างเป็น Extension ให้เรียบร้อยเลยแต่ว่า มันไม่มีเมนูสำหรับแทรก ปุ่มลงใน toolbar หรือแทรก menu ลงใน menubar เลยสิ มีแค่สร้าง menu ใหม่หรือ toolbar ใหม่เท่านั้น
แต่ เราสามารถทำ ปุ่มหรือ menu ที่เราสร้างไปแทรกอยู่ toolbar หรือ menubar เก่าได้ด้วยวิธีการแก้ไข file Addon.xcu โดยเราต้องเพิ่ม MergePoint ครับเช่น

<prop oor:name="MergePoint">
  <value>.uno:PickList\.uno:SetDocumentProperties</value>
</prop>

หมายความว่า จุดที่เราจะ Merge นั้นอยู่ที่ Menu File ตำแหน่ง Properties ซึ่งค่าตัวแปรต่างๆ ที่ใช้นั้นเราสามารถดูได้จาก uno function ครับ ในส่วนต่อมาเราจะต้องบอกว่าเราจะแทรกก่อนหรือหลัง ส่วนที่เราระบุไปเมื่อครู่ โดยการใช้ MergeCommand เช่น

<prop oor:name="MergeFallback">
  <value>AddPath</value>
</prop>

หลังจากเรากำหนดจุด MergePoint, MergeCommand และ MergeFallback แล้วเราก็ทำการเพิ่ม Menu ได้เลยครับดังนี้

<node oor:name="MenuItems">
  <node oor:name="m1" oor:op="replace">
    <prop oor:name="Context" oor:type="xs:string">
      <value>com.sun.star.text.TextDocument, com.sun.star.sheet.SpreadsheetDocument, com.sun.star.drawing.DrawingDocument, com.sun.star.presentation.PresentationDocument </value> 
    </prop>
    <prop oor:name="URL" oor:type="xs:string">
      <value>vnd.sun.star.script:EasyMigration.PageSetup.PageSetup?language=Basic&location=application</value>
    </prop>
    <prop oor:name="Title" oor:type="xs:string">
      <value>Page Setup</value>
    </prop>
  </node>
</node>

ในส่วนของ Context นั้นเป็นตัวบอกว่าเราจะทำใน Application อะไรส่วน URL นั้นบอกว่าเราจะทำอะไรเช่นในตัวอย่างนั้นจะเรียก Macro ตัวนึงครับ ส่วน Title นั้นก็เป็น ชื่อของ Menu ของเรานั่นเอง

เราสามารถเพิ่ม Submenu ได้ด้วยครับ อ่านเพิ่มเติมได้จาก http://wiki.services.openoffice.org/wiki/Framework/Article/Addon_Menu_Toolbar_Merging
ปล. ลิ้งด้านบน มีข้อมูลในส่วนของ toolbar merging นะจ๊ะ คล้ายๆกัน
Continue Reading...

วันพุธที่ 1 กรกฎาคม พ.ศ. 2552

Export Thai pdf on drupal

ปัญหาคือ module print บน drupal นั้นไม่ ได้ติด tools ในการ export pdf มาให้เราจึงต้องทำการเลือก third-party tools มาซักตัวซึ่งผมก็เลือก tcpdf เพราะชื่อนั้นคุ้นหูดีครับ
ชื่อคุ้นหูแต่ว่า tcpdf นั้นยังไม่สามารถ export ภาษาไทยได้ ดังนั้นเราจึงต้อง config กันหน่อย
ขั้น แรกก็สันนิษฐานว่า ฟอนต์ที่ใช้นั้นคงไม่มี อักขระ ไทยแน่ๆจึงลองเปลี่ยน font ดู ซึ่งไปเจอ freeserif ที่ดันมีอักขระไทยแต่ว่ามีแต่แบบ regular ส่วนที่เป็น bold กับ italic ดันไม่มี
คราวนี้สงสัยคงต้องสร้าง font เองแล้วแต่ว่า tcpdf ใช้ font นามสกุล .ctg.z, .z และ .php ซึ่ง tcpdf นั้นมี tools ในการสร้าง font มาให้อยู่แล้วและมีคู่มืออยู่ที่

http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_fonts


วิธีการครบ แต่ว่าขาด font ซึ่ง font ฟรี ที่มีอักขระไทยนั้นคงหนีไม่พ้น norasi ผมจึงทำการ ดาวน์โหลดแล้วจัดการ
  1. สร้าง ufm ก่อนด้วยวิธีการ ttf2ufm -a -F norasi.ttf จะได้ ufm และ afm มาครับแต่ว่าเราจะให้ ufm เนื่องจากเราจะใช้ TrueType ที่เป็น Unicode ครับ
  2. ทำ การ run php script makefont.php เพื่อสร้าง ไฟล์เจ้าปัญหา .ctg.z, .z และ .php ด้วยคำสั่ง php -q makefont.php norasi.ttf norasi.ufm
ก็จะ ได้ ไฟล์ .ctg.z, .z และ .php ครับซึ่งถ้าเรา copy เข้าไปเก็บไว้ใน fonts ของ tcpdf แล้วทำการเลือกใช้ font นั้นเราก็จะสามารถ export เป็นภาษาไทยได้แล้ว
แต่ที่เราทำมานั้นเราเพิ่งจะได้ font ที่เป็นแบบ regular ตัวเดียวนะครับ ถ้าเราต้องการตัว bold และ italic เราต้องทำกับ font ที่เหลือด้วยครับโดยชื่อนั้นต้องเป็นตาม pattern นี้
  1. norasi = regular
  2. norasib = bold
  3. norasii = italic
  4. norasibi = bold & italic
แค่นี้เรา file PDF เราก็สมบูรณ์แล้วครับ เย้

ซึ่งต้องใช้ makefont.php และ ttf2ufm.exe ซึ่งอยู่ภายใน tcpdf ครับ
Continue Reading...

Blogroll

About