Bab 11. Konversi data

Daftar Isi

11.1. Alat konversi data teks
11.1.1. Mengonversi berkas teks dengan iconv
11.1.2. Memeriksa berkas apakah UTF-8 dengan iconv
11.1.3. Mengonversi nama berkas dengan iconv
11.1.4. Konversi EOL
11.1.5. Konversi TAB
11.1.6. Penyunting dengan konversi otomatis
11.1.7. Ekstraksi teks polos
11.1.8. Menyoroti dan memformat data teks polos
11.2. Data XML
11.2.1. Petunjuk dasar untuk XML
11.2.2. Pemrosesan XML
11.2.3. Ekstraksi data XML
11.2.4. Lint data XML
11.3. Tata cetak
11.3.1. typesetting roff
11.3.2. TeX/LaTeX
11.3.3. Mencetak cantik halaman manual
11.3.4. Membuat halaman manual
11.4. Data yang dapat dicetak
11.4.1. Ghostscript
11.4.2. Menggabungkan dua berkas PS atau PDF
11.4.3. Utilitas data yang dapat dicetak
11.4.4. Mencetak dengan CUPS
11.5. Konversi data surat
11.5.1. Dasar-dasar data surel
11.6. Alat data grafis
11.6.1. Graphic data tools (metapackage)
11.6.2. Graphic data tools (GUI)
11.6.3. Graphic data tools (CLI)
11.7. Konversi data lain-lain

Alat dan tips untuk mengonversi format data pada sistem Debian dijelaskan.

Alat berbasis standar dalam kondisi yang sangat baik tetapi dukungan untuk format data proprietari terbatas.

Paket-paket berikut untuk konversi data teks menarik perhatian saya.


[Tip] Tip

iconv(1) disediakan sebagai bagian dari paket libc6 dan selalu tersedia di hampir semua sistem mirip Unix untuk mengonversi pengodean karakter.

Anda dapat mengonversi pengodean berkas teks dengan iconv(1) dengan yang berikut ini.

$ iconv -f encoding1 -t encoding2 input.txt >output.txt

Nilai pengodean tidak membedakan huruf besar kecil dan mengabaikan "-" dan "_" untuk pencocokkan. Pengodean yang didukung dapat diperiksa oleh perintah "iconv -l".


[Catatan] Catatan

Beberapa pengodean hanya didukung untuk konversi data dan tidak digunakan sebagai nilai lokal (Bagian 8.1, “Lokal”).

Untuk set karakter yang masuk dalam byte tunggal seperti set karakter ASCII dan ISO-8859, pengodean karakter berarti hampir sama dengan set karakter.

Untuk set karakter dengan banyak karakter seperti JIS X 0213 untuk Jepang atau Universal Character Set (UCS, Unicode, ISO-10646-1) untuk hampir semua bahasa, ada banyak skema pengodean yang sesuai dengan mereka ke dalam urutan data byte.

Untuk ini, ada diferensiasi yang jelas antara set karakter dan pengodean karakter.

Code page digunakan sebagai sinonim untuk tabel pengodean karakter untuk beberapa vendor tertentu.

[Catatan] Catatan

Harap dicatat sebagian besar sistem pengodean berbagi kode yang sama dengan ASCII untuk karakter 7 bit. Tapi ada beberapa pengecualian. Jika Anda mengonversi program C Jepang lama dan data URL dari format pengodean yang disebut santai shift-JIS ke format UTF-8, gunakan "CP932" sebagai nama pengodean alih-alih "shift-JIS" untuk mendapatkan hasil yang diharapkan: 0x5C → "\" dan 0x7E → "~". Jika tidak, ini diubah menjadi karakter yang salah.

[Tip] Tip

recode(1) dapat digunakan juga dan menawarkan lebih dari fungsi gabungan iconv(1), fromdos(1), todos(1), frommac(1), dan tomac(1). Untuk informasi lebih lanjut, lihat "info recode".

Penyunting modern cerdas seperti program vim cukup cerdas dan mengatasi dengan baik dengan sistem pengodean dan format berkas apa pun. Anda harus menggunakan penyunting ini di bawah lokal UTF-8 di konsol yang mampu UTF-8 untuk kompatibilitas terbaik.

Sebuah berkas teks Unix Eropa barat lama, "u-file.txt", disimpan dalam pengodean latin1 (iso-8859-1) dapat disunting memakai vim dengan yang berikut.

$ vim u-file.txt

Hal ini dimungkinkan karena mekanisme deteksi otomatis dari pengodean berkas di vim mengasumsikan pengodean UTF-8 terlebih dahulu dan, jika gagal, mengasumsikannya sebagai latin1.

Berkas teks Unix Polandia lama, "pu-file.txt", disimpan dalam pengodean latin2 (iso-8859-2) dapat disunting memakai vim dengan yang berikut.

$ vim '+e ++enc=latin2 pu-file.txt'

Berkas teks unix Jepang lama, "ju-file.txt", disimpan dalam pengodean eucJP dapat disunting memakai vim dengan yang berikut.

$ vim '+e ++enc=eucJP ju-file.txt'

Berkas teks MS-Windows Jepang lama, "jw-file.txt", disimpan dalam apa yang disebut pengodean shift-JIS (lebih tepatnya: CP932) dapat disunting memakai vim dengan yang berikut.

$ vim '+e ++enc=CP932 ++ff=dos jw-file.txt'

Ketika sebuah berkas dibuka dengan opsi "++enc" dan "++ff", ":w" di baris perintah Vim menyimpannya dalam format asli dan menimpa berkas asli. Anda juga dapat menentukan format penyimpanan dan nama berkas di baris perintah Vim, misalnya, ":w ++enc=utf8 new.txt".

Silakan lihat mbyte.txt "dukungan teks multi-byte" dalam bantuan daring vim dan Tabel 11.2, “Daftar nilai pengodean dan penggunaannya” untuk nilai lokal yang digunakan dengan "++enc".

Program keluarga emacs dapat melakukan fungsi yang setara.

Extensible Markup Language (XML) adalah bahasa markup untuk dokumen yang berisi informasi terstruktur.

Lihat informasi pengantar di XML.COM.

Teks XML terlihat agak mirip HTML. Ini memungkinkan kita untuk mengelola beberapa format keluaran untuk dokumen. Salah satu sistem XML yang mudah adalah paket docbook-xsl, yang digunakan di sini.

Setiap berkas XML dimulai dengan deklarasi XML standar sebagai berikut.

<?xml version="1.0" encoding="UTF-8"?>

Sintaks dasar untuk satu elemen XML ditandai sebagai berikut.

<name attribute="value">content</name>

Elemen XML dengan konten kosong ditandai dalam bentuk pendek berikut.

<name attribute="value" />

"attribute="nilai"" dalam contoh di atas adalah opsional.

Bagian komentar dalam XML ditandai sebagai berikut.

<!-- comment -->

Selain menambahkan markup, XML memerlukan konversi kecil ke konten menggunakan entitas terpradefinisi untuk karakter-karakter berikut.


[Perhatian] Perhatian

"<" atau "&" tidak dapat digunakan dalam atribut atau elemen.

[Catatan] Catatan

Ketika entitas tentuan pengguna gaya SGML, misalnya "&tag-anu;", digunakan, definisi pertama menang atas yang lain. Definisi entitas dinyatakan dalam "<!ENTITY tag-anu "entity value">".

[Catatan] Catatan

Selama markup XML dilakukan secara konsisten dengan set tertentu dari nama tag (baik beberapa data sebagai konten atau nilai atribut), konversi ke XML lain adalah tugas sepele menggunakan Extensible Stylesheet Language Transformations (XSLT).

Ada banyak alat yang tersedia untuk memproses berkas XML seperti Extensible Stylesheet Language (XSL).

Pada dasarnya, setelah Anda membuat berkas XML yang terbentuk dengan baik, Anda dapat mengonversinya ke format apa pun menggunakan Extensible Stylesheet Language Transformations (XSLT).

Extensible Stylesheet Language for Formatting Objects (XSL-FO) seharusnya menjadi solusi untuk pemformatan. Paket fop baru di arsip main Debian karena ketergantungannya pada bahasa pemrograman Java. Jadi kode LaTeX biasanya dihasilkan dari XML menggunakan XSLT dan sistem LaTeX digunakan untuk membuat berkas yang dapat dicetak seperti DVI, PostScript, dan PDF.


Karena XML adalah bagian dari Standard Generalized Markup Language (SGML), itu dapat diproses oleh alat yang banyak tersedia untuk SGML, seperti Document Style Semantics and Specification Language (DSSSL).


[Tip] Tip

GNOME yelp kadang-kadang berguna untuk membaca berkas XML Docbook secara langsung karena itu merender secara layak pada X.

Program troff Unix yang awalnya dikembangkan oleh AT&T dapat digunakan untuk tata cetak sederhana. Ini biasanya digunakan untuk membuat manpage.

TeX yang dibuat oleh Donald Knuth adalah alat tata cetak yang sangat kuat dan merupakan standar de facto. LaTeX awalnya ditulis oleh Leslie Lamport memungkinkan akses tingkat tinggi ke kekuatan TeX.


Secara tradisional, roff adalah sistem pemrosesan teks Unix utama. Lihat roff(7), groff(7), groff(1), grotty(1), troff(1), groff_mdoc(7), groff_man(7), groff_ms(7), groff_me(7), groff_mm(7), dan "info groff".

Anda dapat membaca atau mencetak tutorial dan referensi yang bagus tentang "-me" makro di "/usr/share/doc/groff/" dengan memasang paket groff.

[Tip] Tip

"groff -Tascii -me -" menghasilkan keluaran teks polos dengan kode escape ANSI. Jika Anda ingin mendapatkan keluaran mirip manpage dengan banyak "^H" dan "_", gunakan "GROFF_NO_SGR=1 groff -Tascii -me -" sebagai gantinya.

[Tip] Tip

Untuk menghapus "^H" dan "_" dari berkas teks yang dihasilkan oleh groff, filter dengan "col -b -x".

Distribusi perangkat lunak TeX Live menawarkan sistem TeX yang lengkap. Metapackage texlive menyediakan pilihan yang layak dari paket TeX Live yang seharusnya cukup untuk tugas yang paling umum.

Ada banyak referensi yang tersedia untuk TeX dan LaTeX.

  • The teTeX HOWTO: The Linux-teTeX Local Guide

  • tex(1)

  • latex(1)

  • texdoc(1)

  • texdoctk(1)

  • "The TeXbook", oleh Donald E. Knuth (Addison-Wesley)

  • "LaTeX - A Document Preparation System", oleh Leslie Lamport, (Addison-Wesley)

  • "The LaTeX Companion", oleh Goossens, Mittelbach, Samarin, (Addison-Wesley)

Ini adalah lingkungan tata cetak yang paling kuat. Banyak prosesor SGML menggunakan ini sebagai prosesor teks back end mereka. Lyx yang disediakan oleh paket lyx dan GNU TeXmacs yang disediakan oleh paket texmacs menawarkan lingkungan penyuntingan WYSIWYG yang bagus untuk LaTeX sementara banyak yang menggunakan Emacs dan Vim sebagai pilihan untuk penyunting sumber.

Ada banyak sumber daya daring yang tersedia.

Ketika dokumen menjadi lebih besar, terkadang TeX dapat menyebabkan kesalahan. Anda harus meningkatkan ukuran pool di "/etc/texmf/texmf.cnf" (atau lebih tepat menyunting "/etc/texmf/texmf.d/95NonPath" dan menjalankan update-texmf(8)) untuk memperbaiki ini.

[Catatan] Catatan

The TeX source of "The TeXbook" is available at www.ctan.org tex-archive site for texbook.tex. This file contains most of the required macros. I heard that you can process this document with tex(1) after commenting lines 7 to 10 and adding "\input manmac \proofmodefalse". It's strongly recommended to buy this book (and all other books from Donald E. Knuth) instead of using the online version but the source is a great example of TeX input!

Data yang dapat dicetak dinyatakan dalam format PostScript pada sistem Debian. Common Unix Printing System (CUPS) menggunakan Ghostscript sebagai program backend peraster untuk pencetak non-PostScript.

Printable data may also be expressed in the PDF format on the recent Debian system.

PDF files can displayed and its form entries may be filled using GUI viewer tools such as Evince and Okular (see Bagian 7.4, “Aplikasi GUI”); and modern browsers such as Chromium.

PDF files can be edited using some graphics tools such as LibreOffice, Scribus, and Inkscape (see Bagian 11.6, “Alat data grafis”).

[Tip] Tip

You can read a PDF file with GIMP and convert it into PNG format using higher than 300 dpi resolution. This may be used as a background image for LibreOffice to produce a desirable altered printout with minimum efforts.

Anda dapat menggabungkan dua berkas PostScript (PS) atau Portable Document Format (PDF) menggunakan gs(1) dari Ghostscript.

$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=bla.ps -f foo1.ps foo2.ps
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=bla.pdf -f foo1.pdf foo2.pdf
[Catatan] Catatan

PDF, yang merupakan format data cetak lintas platform yang banyak digunakan, pada dasarnya adalah format PS terkompresi dengan beberapa fitur dan ekstensi tambahan.

[Tip] Tip

Untuk baris perintah, psmerge(1) dan perintah lainnya dari paket psutils berguna untuk memanipulasi dokumen PostScript. pdftk(1) dari paket pdftk berguna untuk memanipulasi dokumen PDF juga.

Perintah lp(1) dan lpr(1) yang ditawarkan oleh Common Unix Printing System (CUPS) menyediakan opsi untuk pencetakan data yang dapat dicetak secara disesuaikan.

Anda dapat mencetak 3 salinan berkas yang dikolasi menggunakan salah satu perintah berikut.

$ lp -n 3 -o Collate=True filename
$ lpr -#3 -o Collate=True filename

Anda dapat lebih jauh menyesuaikan operasi pencetak dengan menggunakan opsi pencetak seperti "-o number-up=2", "-o page-set=even", "-o page-set=odd","-o scaling=200","-o natural-scaling=200",dll., yang didokumentasikan di Command-Line Printing and Options.

Paket berikut untuk konversi data surel menarik perhatian saya.


[Tip] Tip

Internet Message Access Protocol versi 4 (IMAP4) dapat digunakan untuk memindahkan surel keluar dari sistem surat proprietari jika perangkat lunak klien surel dapat dikonfigurasi untuk menggunakan server IMAP4 juga.

Data surat (SMTP) harus dibatasi pada serangkaian data 7 bit. Jadi data biner dan data teks 8 bit dikodekan ke dalam format 7 bit dengan Multipurpose Internet Mail Extensions (MIME) dan pemilihan charset (lihat Tabel 11.2, “Daftar nilai pengodean dan penggunaannya”).

Format penyimpanan surat standar diformat mbox sesuai dengan RFC2822 (memperbarui RFC822). Lihat mbox(5) (disediakan oleh paket mutt).

Untuk bahasa Eropa, "Content-Transfer-Encoding: quoted-printable" dengan charset ISO-8859-1 biasanya digunakan untuk surat karena tidak ada banyak karakter 8 bit. Jika teks Eropa dikodekan dalam UTF-8, "Content-Transfer-Encoding: quoted-printable" kemungkinan akan digunakan karena sebagian besar data 7 bit.

Untuk bahasa Jepang, secara tradisional "Content-Type: text/plain; charset=ISO-2022-JP" biasanya digunakan untuk surat untuk menyimpan teks dalam 7 bit. Tetapi sistem Microsoft yang lebih lama dapat mengirim data surel dalam Shift-JIS tanpa deklarasi yang tepat. Jika teks Jepang dikodekan dalam UTF-8, Base64 kemungkinan akan digunakan karena berisi banyak data 8 bit. Situasi bahasa Asia lainnya serupa.

[Catatan] Catatan

Jika data surel non-Unix Anda dapat diakses oleh perangkat lunak klien non-Debian yang dapat berbicara dengan server IMAP4, Anda mungkin dapat memindahkannya dengan menjalankan server IMAP4 Anda sendiri.

[Catatan] Catatan

Jika Anda menggunakan format penyimpanan surel lainnya, memindahkannya ke format mbox adalah langkah pertama yang baik. Program klien serbaguna seperti mutt(1) mungkin berguna untuk ini.

Anda dapat memecah konten kotak surat ke setiap pesan menggunakan procmail(1) dan formail(1).

Setiap pesan surat dapat dibongkar menggunakan munpack(1) dari paket mpack (atau alat khusus lainnya) untuk mendapatkan konten yang dikodekan MIME.

Meskipun program GUI seperti gimp(1) sangat kuat, alat baris perintah seperti imagemagick(1) cukup berguna untuk mengotomatisasi manipulasi gambar melalui skrip.

Format berkas gambar de facto dari kamera digital adalah Exchangeable Image File Format (EXIF) yang merupakan format berkas gambar JPEG dengan tag metadata tambahan. Ini dapat menyimpan informasi seperti pengaturan tanggal, waktu, dan kamera.

Paten kompresi data lossless Lempel-Ziv-Welch (LZW) telah kedaluwarsa. Utilitas Graphics Interchange Format (GIF) yang menggunakan metode kompresi LZW sekarang tersedia secara bebas pada sistem Debian.

[Tip] Tip

Setiap kamera digital atau pemindai dengan media rekam lepasan bekerja dengan Linux melalui pembaca penyimpanan USB karena mengikuti Aturan Desain untuk Sistem Berkas Kamera dan menggunakan sistem berkas FAT. Lihat Bagian 10.1.7, “Perangkat penyimpanan lepasan”.

The following packages for the GUI graphics data conversion, editing, and organization tools caught my eyes.

Tabel 11.18. List of graphics data tools (GUI)

paket popcon ukuran kata kunci deskripsi
gimp V:50, I:252 19304 gambar(bitmap) GNU Image Manipulation Program
xsane V:12, I:144 2339 gambar(bitmap) Frontend X11 berbasis GTK untuk SANE (Scanner Access Now Easy)
scribus V:1, I:16 31345 ps/pdf/SVG/… Penyunting DTP Scribus
libreoffice-draw V:72, I:430 10312 gambar(vector) Keluarga perkantoran LibreOffice - menggambar
inkscape V:15, I:112 99800 gambar(vector) Penyunting SVG (Scalable Vector Graphics)
dia V:2, I:22 3741 gambar(vector) penyunting diagram (Gtk)
xfig V:0, I:11 7849 gambar(vector) Fasilitas untuk Pembuatan Gambar Interaktif di bawah X11
gocr V:0, I:7 540 gambar→text perangkat lunak OCR bebas
eog V:64, I:277 7770 gambar(Exif) Program penampil grafis Eye of GNOME
gthumb V:3, I:16 5032 gambar(Exif) penampil dan peramban citra (GNOME)
geeqie V:4, I:15 2522 gambar(Exif) penampil citra menggunakan GTK
shotwell V:17, I:255 6263 gambar(Exif) pengorganisasi foto digital (GNOME)
gwenview V:33, I:106 11755 gambar(Exif) penampil citra (KDE)
kamera I:105 998 gambar(Exif) dukungan kamera digital untuk aplikasi KDE
digikam V:1, I:9 293 gambar(Exif) aplikasi manajemen foto digital untuk KDE
darktable V:4, I:13 30554 gambar(Exif) virtual lighttable and darkroom for photographers
hugin V:0, I:8 5208 gambar(Exif) panorama photo stitcher
librecad V:1, I:15 8963 DXF, ... 2D CAD data editor
freecad I:18 36 DXF, ... 3D CAD data editor
blender V:3, I:28 84492 blend, TIFF, VRML, … Penyunting konten 3D untuk animasi dll
mm3d V:0, I:0 3881 ms3d, obj, dxf, … Penyunting model 3D berbasis OpenGL
fontforge V:0, I:6 3993 ttf, ps, … penyunting fonta untuk fonta PS, TrueType, dan OpenType
xgridfit V:0, I:0 806 ttf program untuk gridfitting dan hinting fonta TrueType

The following packages for the CLI graphics data conversion, editing, and organization tools caught my eyes.

Tabel 11.19. List of graphics data tools (CLI)

paket popcon ukuran kata kunci deskripsi
imagemagick I:317 74 gambar(bitmap) program manipulasi gambar
graphicsmagick V:1, I:11 5565 gambar(bitmap) program manipulasi citra (fork dari imagemagick)
netpbm V:28, I:326 8526 gambar(bitmap) alat konversi grafis
libheif-examples V:0, I:2 191 heif→jpeg(bitmap) convert High Efficiency Image File Format (HEIF) to JPEG, PNG, or Y4M formats with heif-convert(1) command
icoutils V:7, I:50 221 png↔ico(bitmap) mengonversi ikon dan kursor MS Windows ke dan dari format PNG (favicon.ico)
pstoedit V:2, I:52 1011 ps/pdf→gambar(vector) Konverter berkas PostScript dan PDF ke grafis vektor yang dapat disunting (SVG)
libwmf-bin V:7, I:119 151 Windows/gambar(vector) Alat konversi metafile Windows (data grafik vektor)
fig2sxd V:0, I:0 151 fig→sxd(vektor) mengonversi berkas XFig ke format OpenOffice.org Draw
unpaper V:2, I:17 412 gambar→gambar alat pasca-pemrosesan bagi halaman yang dipindai untuk OCR
tesseract-ocr V:7, I:33 2228 gambar→text perangkat lunak OCR bebas berdasarkan mesin OCR komersial HP
tesseract-ocr-eng V:7, I:34 4032 gambar→text Data mesin OCR: berkas bahasa tesseract-ocr untuk teks bahasa Inggris
ocrad V:0, I:3 587 gambar→text perangkat lunak OCR bebas
exif V:2, I:42 339 gambar(Exif) utilitas baris perintah untuk menampilkan informasi EXIF dalam berkas JPEG
exiv2 V:2, I:27 275 gambar(Exif) alat manipulasi metadata EXIF/IPTC
exiftran V:1, I:14 69 gambar(Exif) mentransformasi citra jpeg kamera digital
exiftags V:0, I:3 292 gambar(Exif) utilitas untuk membaca tag Exif dari berkas JPEG kamera digital
exifprobe V:0, I:3 499 gambar(Exif) membaca metadata dari gambar digital
dcraw V:1, I:12 583 gambar(Raw)→ppm dekode gambar kamera digital mentah
findimagedupes V:0, I:1 77 citra→sidik jari menemukan gambar yang serupa secara visual atau duplikat
ale V:0, I:0 839 gambar→gambar menggabung gambar untuk meningkatkan mutu atau membuat mosaik
imageindex V:0, I:1 145 gambar(Exif)→html menghasilkan galeri HTML statis dari gambar
outguess V:0, I:1 230 jpeg,png alat Steganografi universal
jpegoptim V:0, I:7 59 jpeg optimize JPEG files
optipng V:3, I:43 213 png optimize PNG files, lossless compression
pngquant V:0, I:9 61 png optimize PNG files, lossy compression

Ada banyak program lain untuk mengonversi data. Paket-paket berikut menarik perhatian saya menggunakan regex "~Guse::converting" dalam aptitude(8) (lihat Bagian 2.2.6, “Opsi metode pencarian dengan aptitude”).


Anda juga dapat mengekstrak data dari format RPM dengan yang berikut.

$ rpm2cpio file.src.rpm | cpio --extract