Saya baru-baru ini membutuhkan satu halaman PDF kosong (ukuran 8,5 "x 11") dan menyadari bahwa saya tidak tahu cara membuatnya dari baris perintah.
Penerbitan touch blank.pdf
menghasilkan file PDF kosong . Apakah ada alat baris perintah yang menghasilkan halaman PDF kosong ?
command-line
pdf
Brian Fitzpatrick
sumber
sumber
Jawaban:
convert
, utilitas ImageMagick yang digunakan dalam jawaban Ketan, juga memungkinkan Anda untuk menulis sesuatuatau
atau (untuk kertas A4 horizontal)
dll. , tanpa membuat file teks kosong. @chbrown memperhatikan bahwa ini membuat file pdf yang lebih kecil.
"xc:" berarti "X Constant Image" tetapi benar-benar dapat dianggap sebagai "x canvas". Ini adalah cara untuk menentukan satu blok warna, dalam hal ini tidak ada. Info lebih lanjut di http://imagemagick.org/Usage/canvas/#solid yang merupakan manual "de facto" untuk ImageMagick. [ditambah dengan informasi dari pipa] (Hal seperti
pdf:a
dapat digunakan untuk secara eksplisit menyatakan format file.label:'some text'
,gradient:
,rose:
danlogo:
tampaknya menjadi contoh lain dari format file khusus.)Anko menyarankan memposting modifikasi ini sebagai jawaban terpisah, jadi saya melakukannya.
sumber
~/bin
Seperti GIF terkecil yang mungkin, PDF halaman kosong terkecil yang mungkin perlu dikerjakan dengan tangan, karena sangat kecil sehingga bit metadata yang tidak perlu namun tidak berbahaya menjadi bagian penting dari ukuran file, dan kompresi sebenarnya membuat segalanya lebih besar . Ini juga membutuhkan perhatian cermat terhadap aturan dalam spesifikasi PDF tentang bit apa dari struktur file yang diperlukan dan yang tidak diperlukan. (Tahukah Anda bahwa objek halaman harus berisi
/Resources
kamus, meskipun kamus itu kosong, tetapi tidak diharuskan menyertakan/Contents
aliran?)Jika Anda tidak menggunakan objek PDF 1.5 dan aliran referensi silang (yang memiliki keuntungan bahwa file tersebut dapat sepenuhnya dicetak ASCII) Saya percaya yang terbaik yang dapat Anda lakukan adalah 317 byte. Jika copy dan paste, perhatikan bahwa perlu ada sebuah ruang tambahan pada semua empat dari entri tabel referensi silang (garis antara
0 4
dantrailer<<...
), dan bahwa ada tidak seharusnya menjadi baris baru akhir setelah%%EOF
.Mengganti tabel referensi silang dengan stream referensi silang v1.5 yang dibuat secara manual memang membuat file sedikit lebih kecil, dengan harga yang tidak lagi dapat dicetak ASCII: 294 bytes. (Demi keterbacaan, belum lagi bisa mengetik sama sekali, aliran xref di bawah ini telah hexdumped, tetapi ini tidak tercermin dalam kamus alirannya. Untuk memulihkan PDF yang valid Anda harus mengganti hexdump dengan sesuai byte biner mentah, atau mengubah
/Length 15
ke/Length 30/Filter/ASCIIHexDecode
dan menerima file yang 328 byte panjang.)Saya juga bereksperimen dengan membungkus objek 1 hingga 3 ke dalam aliran objek, tetapi ini menambahkan kembali lebih banyak overhead daripada menghemat, bahkan ketika aliran dikompresi.
Formulasi alternatif yang mungkin dari aliran xref adalah
Sayangnya, terlepas dari penghematan besar dalam panjang data stream aktual, tambahan
/Index[1 4]
memakan semua kecuali satu byte penghematan. Juga, tidak jelas bagi saya apakah Anda diizinkan untuk meninggalkan objek 0 sepenuhnya dari file. (Ini juga tidak jelas bagi saya apakah objek 0 harus memiliki nomor generasi -1. Jika itu tidak diperlukan, Anda sebenarnya menyimpan lebih banyak byte.)
Untuk mengubah ukuran kertas, ganti
612 792
dengan lebar dan tinggi yang sesuai, dinyatakan dalam poin PostScript (72 poin PostScript = 1 inci AS atau 25,4 milimeter). Misalnya,595 842
untuk A4. Anda bisa menanamkan ini dalam skrip shell yang mengeluarkan PDF kosong dari ukuran kertas apa pun yang diinginkan; satu-satunya bagian yang sulit adalah memastikan bahwastartxref
offset tetap akurat bahkan jika ukuran objek 3 berubah.sumber
Jika Anda telah menginstal
convert
(utilitas ImageMagick), Anda dapat melakukan ini:sumber
convert
juga memiliki-size
opsi yang dapat Anda gunakan untuk mengatur ukuran output pdf.convert xc:none -page Letter a.pdf
tanpa membuat file txt kosong.(null)
kesalahan font apa pun .convert.im6: improper image header
a.txt '@ error / txt.c / ReadTXTImage / 429. convert.im6: tidak ada gambar yang ditentukana.pdf' @ error/convert.c/ConvertImageCommand/3044.
echo .bp | groff -T pdf > t.pdf
Dipersembahkan kepada Anda oleh groff, perangkat lunak yang paling diremehkan di dunia.
sumber
groff: can't find `DESC' file
dangroff:fatal error: invalid device `pdf'
dengan groff versi 1.22.2 di CentOS 7.2.bash 4.1.2
runninggroff 1.18.1.4
.bp
hanya singkatan "break page", itulah sebabnya ini menghasilkan dokumen 2 halaman. Untuk menghasilkan dokumen 1 halaman, lakukan saja yang lebih sederhanaecho | groff -T pdf > blank.pdf
.echo .bp
memang harus digantiecho
, seperti yang dikatakanAnda bisa menggunakan pdfTeX:
yang menghasilkan satu halaman kosong
texput.pdf
sekitar 900 byte, setengah dari apa yang digunakan ImageMagick.Ini menempatkan Anda pada belas kasihan ukuran kertas standar instalasi TeX Anda. Untuk mengatur ukuran secara eksplisit, Anda dapat pergi ke LaTeX sebagai gantinya:
Namun pilihan lain adalah menggunakan driver PDF Ghostscript, meskipun
ps2pdf
skrip praktis :yang jauh lebih tenang daripada TeX tetapi menghasilkan keluaran yang lebih kecil (sekitar 2300 byte).
sumber
echo "" | ps2pdf -sPAPERSIZE=a4 - blank.pdf
. Ini sedikit lebih kecil, pada 2200 byte.echo '\documentclass[letterpaper]{article}\usepackage[pass]{geometry} \begin{document}\shipout\hbox{}\end{document}' | pdflatex
menciptakanarticle.pdf
. Apakah mungkin untuk membuatnyablank.pdf
secara langsung?-jobname <basename>
pada baris perintah.\shipout\hbox{}
- masing ataushowpage
menghasilkan satu halaman. Baik TeX dan Postscript memiliki konstruksi perulangan yang dapat Anda gunakan, tetapi mungkin lebih mudah untuk menggunakan bahasa skrip pilihan Anda untuk menduplikasi perintah beberapa kali sesuai.Cara mudah untuk membuat PDF dengan halaman kosong, adalah menggunakan
rst2pdf
:hanya menggema dalam satu ruang tidak akan dilakukan, Anda akan berakhir dengan file PDF tanpa halaman (yang tidak sama dengan file kosong).
sumber
Pada baris perintah, ketik:
perintah
ps2pdf
ini digunakan untuk mengonversi file PostScript ke pdfsumber
ps2pdf blank.pdf
mengembalikan kesalahan, karena mengharapkan file Postscript sebagai argumen. Dan perintah kedua membutuhkan yang sudah ada sebelumnyafile.pdf
. Apakah saya melewatkan sesuatu?touch blank.ps
.; 2ps2pdf blank.ps blank.pdf
.; 3.pdftk A=1.pdf B=blank.pdf cat A1-end B output 2.pdf
Terakhir, tak kalah penting, inilah cara Ghostscript untuk membuat PDF yang menunjukkan halaman kosong:
Ukuran halaman kemungkinan besar adalah Letter. Jika Anda ingin A4, gunakan ini:
Latar Belakang: yang
-c
parameter dapat diikuti beberapa string PostScript valid, yang Ghostscript akan mencoba untuk menafsirkan. Dan halaman kosong di PostScript diwakili oleh blok kode pendek ini:sumber