Saya mengekspor konten MS Word ke teks biasa untuk digunakan dengan utilitas teks & file. Saya memiliki kendala di mana fitur penomoran baris telah diaktifkan di perangkat lunak MS, dan referensi ke nomor baris dalam hasil akhir harus cocok dengan penomoran itu. Jadi masukkan "garis penomoran":
( Poe, EA )
Jelas bagi Word , penomoran semacam itu tidak memecah garis pada baris baru , itu memecah "garis" setelah margin yang tepat (atau sesuatu). Skrip seperti docx2txt
, sepertinya tidak menerangkan hal ini secara default dan memecah baris pada baris baru. Jadi jika saya gunakan grep -n
dengan penomoran, garis tidak akan cocok dengan fitur nomor baris sumber, seperti diilustrasikan di atas. Tidak jelas dari dokumentasi bagaimana saya perlu mengedit skrip Perl untuk mengonversi file seperti yang saya perlukan dalam kasus ini:
our $config_newLine = "\n"; # Alternative is "\r\n".
our $config_lineWidth = 80; # Line width, used for short line justification.
Aku mencoba mengganti \n
untuk \r\n
tapi itu tampaknya tidak bekerja untuk saya. Jadi saya terpaksa mengekspor dokumen langsung dari Word dengan pengaturan berikut (simpan sebagai teks biasa , di v.2013,64pc):
- Unicode (UTF-8)
- Masukkan jeda baris + garis akhir dengan (CR / LF)
- Izinkan penggantian karakter
Dan sekarang memang ketika saya menggunakan itu .txt
file ada pertandingan yang sempurna antara nomor baris dalam fitur sumber penomoran dan grep -n
output.
- Apakah ada konfigurasi / proses spesifik yang harus saya ketahui
docx2txt
atau utilitas baris perintah serupa yang akan memungkinkan saya untuk mengkonversi file .docx saya menjadi teks biasa sambil mempertahankan jeda baris, tanpa menggunakan Word seperti yang saya lakukan? - Apa praktik terbaik , jika ada, untuk mengekspor dokumen MS Word (yang mungkin berisi karakter beraksen) ke teks biasa untuk digunakan dengan utilitas file / teks, sehubungan dengan jeda baris dan pemformatan; dan apakah ada implikasi negatif dengan pengaturan yang saya pilih untuk mengekspor yaitu memasukkan CR / LF?
Sampel
Seperti yang disarankan, saya memberikan sampel. Dalam arsip rar ini , saya bundel file .docx dengan paragraf sederhana, dan file .txt yang diekspor menggunakan Word dengan opsi yang disebutkan di atas. Yang terakhir dapat dibandingkan dengan menjalankan default docx2txt
pada file sumber.
sumber
Jawaban:
docx2txt
bekerja pada informasi dalamdocx
file yang merupakan kumpulan file XML zip.Berkenaan dengan pembungkus baris,
.docx
data XML hanya mencakup informasi tentang paragraf dan hard-break, bukan tentang soft-breaks. Istirahat lunak adalah hasil dari rendering teks dalam font tertentu, ukuran font dan lebar halaman.docx2txt
biasanya hanya mencoba memasukkan teks dalam 80 kolom (80 kolom dapat dikonfigurasi), tanpa memperhatikan font dan ukuran font. Jika Anda.docx
berisi informasi font dari sistem Windows yang tidak tersedia di Unix / Linux, maka melakukan ekspor ke.txt
melalui Open / LibreOffice juga tidak akan menghasilkan tata letak yang sama, meskipun ia mencoba melakukan pekerjaan yang baik¹.Jadi
docx2txt
atau utilitas baris perintah lainnya, termasuk pemrosesan Open / LibreOffice yang digerakkan oleh commandline, tidak akan menjamin konversi teks ke tata letak yang sama seperti mengekspor dari Word does².Jika Anda ingin (atau dipaksa oleh persyaratan klien) untuk membuat persis seperti yang dilakukan Word, dalam pengalaman saya hanya ada satu cara: biarkan Word melakukan rendering. Ketika dihadapkan dengan masalah yang sama dengan Anda³, dan memiliki hasil yang tidak kompatibel menggunakan alat lain, termasuk OpenOffice, saya kembali menginstal Windows VM pada server Linux host. Pada VM klien, sebuah program mengamati file yang masuk untuk dikonversi pada host, yang akan memulai dan mengarahkan Word untuk melakukan konversi dan kemudian menyalin kembali hasilnya⁴.
Keputusan tentang menggunakan CR / LF atau LF saja, atau UTF-8 atau pengkodean lainnya untuk
.txt
sebagian besar tergantung pada bagaimana file yang dihasilkan digunakan. Jika file yang dihasilkan digunakan pada Windows saya pasti akan pergi dengan CR / LF, UTF-8 dan BOM UTF-8 . Program modern di Linux dapat menyimpulkan bahwa suatu file adalah UTF-8, tetapi tidak akan muntah di BOM dan / atau menggunakan informasi itu. Anda harus menguji semua aplikasi target Anda untuk kompatibilitas jika diketahui di muka.¹ Ketidakcocokan semacam ini adalah alasan utama beberapa teman saya tidak dapat mengubah ke Linux dari Windows, meskipun mereka menginginkannya. Mereka harus menggunakan MicroSoft Word, sebagai Open / LibreOffice sesekali mangles teks yang mereka tukarkan dengan klien.
² Anda dapat menginstal semua font yang digunakan dalam file Word dan mungkin beruntung untuk beberapa teks, kadang-kadang.
³ Rendering PDF dari
.doc/.docx
⁴ Program ini menggunakan otomasi GUI — seolah-olah seseorang mengklik menunya — dan tidak berusaha menggerakkan Word melalui API. Saya cukup yakin yang terakhir dapat dilakukan juga dan akan memiliki keuntungan tidak melanggar hal-hal jika Word akan ditingkatkan
sumber
vim
dan saya bisa melihat itu semua tentang xml memang - saya harus melihat lebih jauh ke dalamnya. Belum memikirkan font, atau bahkan mungkin tanda hubung. Juga selama beberapa operasi saya mendapat pesan dari editor teks yang mengeluh tentang BOM jadi saya akan membaca tautannya (karena saya tidak tahu apa ini). Saya terkejut dengan solusi VM Anda! Saya agak terbiasa dengan otomatisasi GUI - Saya pernah melihatnya digunakan untuk membangun workstation setelah gambar dasar direplikasi; tidak memikirkan hal ini ...grep
; jika garisnya panjang, ini mengurangi "presisi" pada output. Saya kira kendala berbeda-beda sesuai dengan sifat konten dan bagaimana penggunaannya. Di sisi lain pertanyaan seperti itu tidak akan terjadi jika dokumen tidak mengandalkan fitur penomoran kata di sini. Membangun kerangka dokumen untuk mencakup materi warisan adalah bisnis serius. Bersulang!