Meratakan transparansi PDF

11

Saya memiliki PDF, dibuat dengan Inkscape, yang menggunakan warna transparan. Gambar ini harus digunakan dalam dokumen LaTeX.

Meskipun menjaga transparansi itu baik untuk diedit, ini bisa menjadi masalah untuk dicetak. Pencetakan biasanya melibatkan konversi PDF ke PS. Karena Postscript tidak mendukung transparansi, ini memerlukan keduanya

  • flatting, yaitu membuat grafik vektor yang berfungsi tanpa transparansi

atau

  • rastering, yaitu rendering gambar bitmap.

Ketika dokumen PDF yang berisi angka seperti itu dicetak (atau dikonversi ke PS) menggunakan Evince (atau Cairo atau Ghostscript), seluruh halaman akan dirender sebagai bitmap, menjadikan font-font jelek (berbeda dari halaman lain). (Adobe Acrobat menangani PDF dengan baik.)

Sayangnya, mengonversi angka PDF ke EPS (sebelum memasukkannya dengan LaTeX) tidak banyak membantu, karena pdftop dan pdf2ps (sekali lagi, Kairo atau Ghostscript) meraster gambar, yaitu merender bitmap (disimpan sebagai EPS). (Ini sedikit lebih baik, karena tidak mempengaruhi seluruh halaman, tetapi saya masih lebih suka grafis vektor.)

Bagaimana saya bisa meratakan transparansi dengan Inkscape atau perangkat lunak lain di Linux?

Jan
sumber
2
Pertanyaan menarik. Akan sangat kompleks untuk meratakan svg karena setiap persimpangan bentuk yang mungkin perlu untuk membuat bentuk buram baru dengan isian komposit.
artfulrobot
@artfulrobot Persis. Grafik vektor yang dihasilkan secara umum dapat menjadi sangat kompleks. Namun untuk sejumlah grafik garis seni vektor, hasilnya tetap bekerja dengan baik pada printer Postscript modern.
Jan
Metode terbaik yang saya temukan adalah manual yang membosankan, melibatkan menggambar ulang setelah langkah awal: gunakan inkscape untuk mengkonversi pdf Anda ke svg, buka svg dalam editor teks yang baik. Ganti semua kemunculan 'opacity: [0] [0-9 \.]' Dengan 'opacity: 1' (versi regex) atau temukan 'opacity: 0.' dan secara manual ganti dengan opacity 1 (versi membosankan). Buka svg di inkscape dan membuatnya terlihat bagus lagi (bagian yang sulit), daripada kembali ke pdf dan ke eps.
Chris H

Jawaban:

6

Salah satu cara untuk melakukan rasterisasi yang buruk adalah dengan mengkonversi dokumen PDF Anda secara manual menjadi postscript karena ketika Anda menggunakan CUPS melalui evince atau gui apa pun, itu akan dikonversi.

Anda dapat mencoba pdftops -r 1200 document.pdfuntuk meningkatkan resolusi dari standar rendah 300, dan kemudian cetak naskah yang dihasilkan. Namun, dengan printer yang bekerja ini tidak menghasilkan peningkatan yang signifikan. Teks biasa pada halaman dengan dan tanpa gambar transparan masih tampak berbeda - buram vs. jelas.

Jadi saya akhirnya menggunakan Acrobat Professional (pada mesin windows) untuk meratakan gambar transparan yang digunakan dalam dokumen lateks saya, yang memberikan hasil yang optimal. Periksa yang Transparency Flattener Presetada di [High Resolution]dalam pengaturan cetak lanjutan. Rekan saya menyebutkan bahwa orang mungkin bisa FTP file pdf langsung ke printer jaringan laserjet modern, melewati konversi postscript. Saya belum mencoba ini.

Akan lebih baik untuk memiliki solusi linux-only untuk masalah ini.

Fred Schoen
sumber
1

Saya memiliki masalah yang sama dan ini solusi saya (untuk referensi di masa mendatang):

Saya mencoba banyak hal, dan sejauh ini solusi kerja terbaik yang saya temukan di internet adalah rendering PDF sepenuhnya sebagai gambar dengan pdf2psdan ps2pdf13, tetapi hasilnya tidak memuaskan bagi saya, karena semua bentuk vektor hilang. Saya ingin membuat hanya bagian-bagian penting, tetapi mempertahankan grafik vektor.

Apa triknya bagi saya adalah mengisolasi semua bagian penting dalam inkscape dan meletakkannya pada layer yang terpisah (dalam gambar saya ini semua bayangan). Saya hanya membuat lapisan ini (dan lapisan latar belakang) terlihat dan mengekspornya ke PNG, secara efektif menampilkan semua efek transparansi, tetapi hanya mereka. Saya mengimpornya kembali dan menggunakannya di layer baru. Setelah membalik semua visibilitas lapisan (lapisan transparansi: tidak aktif, semua yang lain: aktif), PDF yang diekspor berfungsi dengan baik dengan LaTeX dan dapat dicetak tanpa menjadikan seluruh halaman sebagai gambar.

TL; DR:

  1. Isolasikan semua transparansi yang bermasalah ke satu lapisan (masker transparansi, bayangan, dll.)
  2. Jadikan hanya lapisan & latar belakang yang bermasalah yang terlihat
  3. Ekspor ke PNG
  4. Impor PNG yang baru saja dibuat dan gunakan sebagai latar belakang
  5. Jadikan semua lapisan terlihat kecuali lapisan yang bermasalah
  6. Ekspor ke PDF
  7. Senyum :)
Edgar
sumber
0

Salah satu caranya adalah dengan membuat kotak putih di Inkscape dengan ukuran yang sama dengan halaman Anda dan mengirimkannya ke lapisan bawah. Ini akan mengekspor gambar Anda dengan latar belakang putih alih-alih transparan.

brousch
sumber
1
Masalahnya bukan latar belakang transparan dan menambahkan latar belakang putih tidak menyelesaikannya. Pertanyaan gambar menggunakan bentuk semi-transparan di atas bentuk (buram) lainnya. SVG dan PDF mendukung ini, tetapi PS tidak.
Jan
0

Saya membuka file pdf menggunakan Ubuntu / Gimp dan mencetak satu halaman sekaligus memeriksa pratinjau cetak setiap kali.

Tamu
sumber
-1
pdftops -origpagesizes input.pdf output.ps

kemudian

ps2pdf -r600x600 output.ps input-new.pdf
HinzundKunz
sumber