Saya bertanya-tanya bagaimana cara melihat dan mengedit kode file PDF?
Dengan melihat, saya tidak ingin melihat format biner, jadi saya pikir
hexdump
mungkin bukan yang saya inginkan. Saya sudah mencobagedit
, tetapi tidak ada metode penyandian yang dapat digunakan untuk mendekode konten PDF.Dengan mengedit, saya ingin mencari
/Fit
dan mengubahnya/XYZ
dengan misalnya. Tapi perintah sayased s/\/Fit/\/XYZ/ < 1.pdf > 2.pdf
sepertinya tidak mengubah tampilan PDF saya seperti yang saya harapkan, meskipun tidak melaporkan kesalahan. Saya bertanya-tanya apakahsed
sebenarnya dapat bekerja pada file PDF seolah-olah itu teks biasa?
Konteks pertanyaan saya dapat ditemukan dari pertanyaan ini . OS saya adalah Ubuntu 10.10.
!
,\b
dang
artinya? Bisakah itu dilakukan tanpa perl hanya dengan sed?g
berarti mengganti semua kemunculan pada setiap baris, baik sed dan perl.!
adalah pemisah; Anda dapat memilih (hampir) karakter apa saja sebagai pemisah untuks
perintah (ini berlaku dalam sed dan perl).\b
berarti batas kata; itu ada di perl tetapi tidak di sed.Mengenai pertanyaan pertama Anda ("melihat kode sumber, tetapi tidak ada biner"): ada beberapa opsi yang Anda miliki untuk mengurangi kompresi aliran biner internal yang dilampirkan ke banyak objek.
Alat favorit saya untuk ini adalah QPDF , tersedia di semua platform OS utama. Perintah berikut ini akan menghapus semua stream dan semua stream objek:
Sekarang Anda dapat membuka PDF Anda di editor teks apa pun. (Mungkin masih ada beberapa gumpalan biner di sana: misalnya, file font dan profil ICC, yang tidak masuk akal untuk diperluas QPDF).
Untuk kembali kompres- yang
expanded.pdf
lagi setelah mengedit, Anda dapat menjalankan:(Hati-hati saat mengedit PDF secara manual! Anda perlu tahu banyak tentang sintaks internal agar dapat melakukan ini dengan benar. Segera setelah Anda menambah atau menghapus satu byte, Anda bisa mendapatkan pesan kesalahan dari pembaca PDF yang mungkin tidak lagi dapat membukanya, karena ToC internal PDF rusak, yang didasarkan pada perhitungan byte-offset. Hanya mengganti
Fit
denganXYZ
string harus baik-baik saja, meskipun ...)sumber
fix-qdf
program yang merupakan bagian dari qpdf. Anda masih harus sedikit berhati-hati. Lihat qpdf.sourceforge.net/files/qpdf-manual.html#ref.qdffix-qdf
. Oleh karena itu, jika Anda ingin mengganti string dengan string dengan panjang yang berbeda, itu mungkin, tetapi Anda perlu menggunakanfix-qdf
alat ini. Saya akan mengatakan, bahwa ini adalah tambahan yang berguna untuk jawabannya.sed
berorientasi garis, yang membuatnya tidak cocok untuk file biner, yang disusun sebagai blok bukan garis.Coba gunakan bbe (bbe-.sourceforge.net) sebagai gantinya.
Atau, baik Emacs (GNU dan XEmacs) dan vim membuka file PDF dengan mulus. Tentu saja, ini tidak terlalu tercetak, karena merupakan gabungan teks dan biner, tetapi cukup untuk keperluan pengeditan Anda.
Ada plugin Pdftk untuk vim yang membuat segalanya lebih mudah, unduh di sini (file zip).
Seperti yang mungkin Anda ketahui, kedua editor di atas memiliki kemampuan pencarian dan penggantian yang kuat.
Juga, mengonversi mode PDF ke QDF sebelum membuat pengeditan file PDF sangat mudah.
sumber
sed
menggunakan-b
sakelar. jika berhasil saya akan menambahkan ini ke jawaban saya.-b
, ini spesifik cygwin.Gunakan LibreOffice atau OpenOffice untuk membuka PDF, melihatnya, mengganti hal-hal, menulis PDF baru, dll. Saya pikir Anda bahkan dapat menggunakannya dari baris perintah atau secara terprogram jika ada banyak dokumen untuk diproses.
Perhatikan bahwa PDF dari beberapa sumber, misalnya Pemindai, sering berisi halaman sebagai gambar daripada sebagai teks sehingga Anda akan kurang beruntung dengan mereka untuk menggunakan pencarian dan ganti.
sumber