รันคำสั่งแปลงไฟล์ doc เป็น txt ด้วย LibreOffice

เคยได้ยินมาว่าปัญหาที่เราเจอในการทำงานส่วนมากหรือเกือบทั้งหมด เคยมีคนเจอมาแล้วทั้งนั้น โดยเฉพาะอย่างยิ่งเกี่ยวกับการใช้โปรแกรมคอมพิวเตอร์ สิ่งที่เราต้องการให้โปรแกรมทำ ปัญหาที่พบ หรือช่วยทำให้ง่ายขึ้น เคยมีคนคิดทำมาแล้วเป็นส่วนใหญ่

ช่วงนี้กำลังทำงานด้านเอกสาร คือต้องแปลงไฟล์จากประเภทหนึ่งไปเป็นอีกประเภทหนึ่ง หากใช้วิธีปกติ ก็ต้องเปิดโปรแกรม Office ขึ้นมา แล้วเลือกเมนู Save as ระบุชนิดไฟล์ที่เราต้องการจะแปลง หากมีไม่กี่ไฟล์ก็ไม่เท่าไร แต่ถ้ามีเป็น 100 ไฟล์ คงใช้เวลานาน และค่อนข้างน่าเบื่อกันเลยทีเดียว

เลยหาวิธีการแปลงไฟล์โดยการรันคำสั่งแบบ command line หรือรันเป็นแบตช์ไฟล์ ค้นหาจาก google สักพัก นำมาทดลอง ก็ได้วิธีที่อยู่ใกล้ตัวมาก คือใช้คำสั่ง soffice ของโปรแกรม LibreOffice ตามด้วยออปชั่น ก็สามารถใช้แปลงไฟล์ได้เลย ไม่จำเป็นต้องเปิดโปรแกรมแต่อย่างใด เห็นว่าน่าจะมีประโยชน์เลยนำมาแชร์ แนะนำกัน


ในที่นี้ทดสอบบน CentOS 6.3 ตอนติดตั้งเลือกติดตั้ง Packages ชื่อ “Office Suite and Productivity” หรือใช้ yum ติดตั้งภายหลังก็ได้

หมายเหตุ การใช้คำสั่ง soffice นี้ สามารถนำไปใช้กับโปรแกรม LibreOffice ที่ติดตั้งบน Windows ได้ แต่ต้องระบุ path ให้ถูกต้อง เช่น C:\Program Files (x86)\LibreOffice 3.6\program\soffice.exe

ตัวอย่างไฟล์ที่จะทดสอบ

 

[user1@cent6 ~]$ ls -l
total 12
-rw-r--r--. 1 user1 users 9216 Feb 28 16:38 test-file.doc

 

ถ้าต้องการรันคำสั่ง แบบไม่ต้องแสดงโปรแกรม (X Window) ขึ้นมา สำหรับ soffice ต้องระบุออปชั่น –headless

ระบุออปชั่น –convert-to ตามด้วยประเภทของไฟล์ที่ต้องการแปลง สำหรับการแปลงเป็น txt ให้ระบุเป็น txt:text

ตามด้วยชื่อไฟล์ที่ต้องการแปลง

ตัวอย่างเช่น

[user1@cent6 ~]$ soffice --headless --convert-to txt:text test-file.doc
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
   Set DISPLAY environment variable, use -display option
   or check permissions of your X-Server
   (See "man X" resp. "man xhost" for details)

หากขึ้นข้อความแบบนี้ แปลว่าการแปลงไฟล์ไม่สำเร็จ เพราะตอนนี้ soffice ไม่สามารถรันในโหมด headless ที่ไม่ต้องใช้ X Window ได้

วิธีการแก้ไข ให้ soffice รันโหมด headless ได้ ต้องลงไฟล์ rpm ชื่อ libreoffice-headless

ล็อกอินเป็น root แล้วติดตั้งไฟล์ rpm เพิ่มเติม

[root@cent6 ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@cent6 ~]# cd /mnt/Packages/
[root@cent6 Packages]# rpm -i libreoffice-headless-3.4.5.2-16.el6.x86_64.rpm

 

ลองรันคำสั่ง soffice แปลงใหม่อีกครั้ง

[user1@cent6 ~]$ soffice --headless --convert-to txt:text test-file.doc
convert /home/user1/test-file.doc -> /home/user1/test-file.txt using text

หากแปลงไฟล์สำเร็จ จะมีไฟล์เกิดขึ้น นามสกุล .txt

[user1@cent6 ~]$ ls -l
total 16
-rw-r--r--. 1 user1 users 9216 Feb 28 16:38 test-file.doc
-rw-r--r--. 1 user1 users  213 Feb 28 17:19 test-file.txt

ไฟล์ txt ที่ได้

[user1@cent6 ~]$ cat test-file.txt
ทดสอบการแปลงไฟล์เอกสารจาก doc ไปเป็น txt

เนื้อหาในไฟล์เอกสารบรรทัดที่ 2

document content

สำหรับการแปลงไฟล์ประเภทอื่นๆ ลองเปลี่ยนจาก txt:text เป็นชื่อไฟล์ประเภทอื่นๆ กันครับ

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.