Bagaimana cara mengonversi dokumen kata ke pdf?

10

Bantu orang-orang tugas saya mengatakan itu harus dalam format .pdf tapi saya melakukannya di Word. Saya sangat macet.

Bagaimana cara mengambil dokumen kata dalam format .docx dan membuat .pdf yang berisi semua teks darinya? Poin bonus jika itu juga berisi semua gambar dan format apa pun, tetapi teks adalah minimum. File sampel yang akan saya gunakan adalah yang ini , meskipun solusi Anda harus umum.

Saya tidak ingin itu melalui langkah-langkah pemrosesan yang tidak perlu - cukup encoding kemudian decoding dokumen di base64 atau apa pun yang tidak dalam semangat pertanyaan, meskipun penggunaan kreatif cowsayakan menjadi pengecualian untuk ini. Aturan standar kode trolling berlaku - solusinya harus benar secara teknis, semua langkah harus secara teknis diperlukan, hasilnya tidak akan berguna secara teknis. Ini harus lebih dari program gaya "Rube Goldberg", daripada kompetisi kebingungan dan kebodohan.

Sebagian besar jawaban atas jawaban saya sendiri pada 5/1/14 menang.

Catatan: Ini adalah pertanyaan . Harap jangan menanggapi pertanyaan dan / atau jawaban dengan serius. Informasi lebih lanjut di sini .

ymbirtt
sumber
2
Tugas ini sangat rumit, tetapi saya yakin bahwa satu-satunya pendekatan yang tepat adalah menggunakan Preview Handler dalam aplikasi WPF, mengambil tangkapan layarnya, menyimpan bitmap sebagai GIF dan kemudian mencetaknya sebagai PDF
Mathias R Jessen
Code-trolling sedang dalam proses dihapus, sesuai dengan posisi resmi. Posting ini memiliki cukup banyak suara pada pertanyaan dan jawaban, dan meskipun menerima lebih dari 50% "hapus" suara pada polling , itu adalah salah satu posting [kode-trolling] yang lebih baik ditentukan. Karena itu, saya menguncinya untuk makna sejarah.
Gagang Pintu

Jawaban:

24

Ok ini sedikit rumit tetapi tidak terlalu buruk karena pdf menggunakan model grafis yang sama dengan postscript yang berarti bahwa sekali Anda memiliki postscript itu cukup sepele untuk mengubahnya menjadi pdf dan postscript adalah cara untuk menggerakkan printer yang harus Anda lakukan hanyalah mencetak ke dapatkan postscript.

Sekarang Anda dapat menulis sebuah program untuk mengonversi postscript ke pdf, tetapi kami tidak harus memiliki ghostscript, yang ditulis untuk unix dan berfungsi dengan baik di linux (tidak ada perbedaan besar untuk proyek ini). Sayangnya kata hanya berjalan di windows, jadi Anda perlu dua komputer, dan untuk meyakinkan windows bahwa komputer linux adalah printer, Anda memerlukan kabel serial dan modem nol. Jika komputer Anda tidak memiliki port serial, konverter usb ke rs232 berfungsi dengan baik (saya sarankan yang menggunakan chipset fttdi). Sekarang hubungkan kedua komputer dengan kabel serial dan modem nol dan verifikasi bahwa Anda dapat berkomunikasi (pastikan parameter Anda cocok).

Ok sekarang setelah Anda berbicara dengan mereka, inilah saatnya untuk meyakinkan kotak windows Anda bahwa kotak linux adalah sebuah printer: cukup instal driver printer untuk applewriter II dan katakan itu terhubung ke port serial. Sekarang ketika Anda mencetak Anda mengirim postscript ke kotak linux. langkah selanjutnya adalah menyimpannya sebagai file.

Sekarang geser ke kotak linux Anda dan gunakan perintah sederhana ini:

dd -if=/dev/ttyS0 -of=- -bs=1 | ps2pdf - - | sed -e '' >tmpfile && mv tmpfile file.pdf

dan sesederhana itu Anda selesai.


Ini sebenarnya dapat dibuat bekerja (jika Anda mengirim sinyal ke dd ketika Anda selesai) tetapi ada cara yang lebih mudah seperti mencetak ke file dan menjalankan gostscript pada kotak windows Anda, dan meskipun fttdi membuat usb ke serial konverter berkualitas baik itu adalah sakit kerajaan untuk menginstal driver.

Hildred
sumber
2
Meskipun pengujian ini di luar kemampuan saya, sedikit membaca latar belakang menunjukkan bahwa ini valid dan mengerikan. Kerja bagus!
ymbirtt
6
Saya berpikir tentang memasukkan instruksi untuk membuat modem nol, jadi diperlukan besi solder.
Hildred
13

Saat ini banyak printer yang merupakan kombinasi printer / pemindai dengan pengumpan dokumen otomatis. Itu akan sederhana.

  1. Cetak dokumen.
  2. Pindai hasil cetak.
emory
sumber
3
Ini adalah bagaimana orang benar-benar melakukannya ... Saya berharap saya bercanda. Dan, ini adalah troll kode , di mana kode Anda?
derobert
9

PHP

Kode ini menghasilkan file PDF yang harus dicetak dengan sempurna pada mesin ticker tape Anda . Jika Anda ingin melihat file PDF pada monitor Anda, Anda mungkin harus memperbesar sedikit.

Contoh dokumen sumber dokumen kata

Output PDF (dilihat di browser) sebagian melihat dokumen PDF

Kode sumber

<?php

header("Content-Type: application/pdf");

$s = docx2txt("word-file.docx"); // <-- Insert filename here!
echo txt2pdf($s);


function docx2txt($filename) {
  if (!($z=zip_open($filename))) return false; // Can't open file
  while ($r=zip_read($z)) {
    if (zip_entry_name($r)!="word/document.xml") continue;
    if (!zip_entry_open($z,$r)) return false; // Can't open XML data
    for ($s="";;) {
      $c=zip_entry_read($r);
      if ($c===false || $c=="") break;
      $s.=$c;
    }
    return trim(preg_replace('/\s+/',' ',preg_replace('/<[^>]*>/','',$s)));
  }
  return false; // Can't find XML data
}


function txt2pdf($text) {
  $width="".ceil(strlen($text)*7.2);
  $text=str_replace('(','\050',str_replace(')','\051',$text));
  $length=strlen($text);
  $wlen=strlen($width);
  $len4="".(44+$length);
  $xr3=sprintf("%010d",174+$wlen);
  $xr4=sprintf("%010d",449+$wlen);
  $xrstart=544+$wlen+strlen($len4)+$length;
  return "%PDF-1.1\n%¥±ë\n\n1 0 obj\n  << /Type /Catalog\n     /Pages 2 0 R\n" .
         "  >>\nendobj\n\n2 0 obj\n  << /Type /Pages\n     /Kids [3 0 R]\n   " .
         "  /Count 1\n     /MediaBox [0 0 $width 14]\n  >>\nendobj\n\n3 0 obj" .
         "\n  <<  /Type /Page\n      /Parent 2 0 R\n      /Resources\n       " .
         "<< /Font\n           << /F1\n               << /Type /Font\n       " .
         "           /Subtype /Type1\n                  /BaseFont /Courier\n " .
         "              >>\n           >>\n       >>\n      /Contents 4 0 R\n" .
         "  >>\nendobj\n\n4 0 obj\n  << /Length $len4 >>\nstream\n  BT\n    /" .
         "F1 12 Tf\n    0 3 Td\n    ($text) Tj\n  ET\nendstream\nendobj\n\nxr" .
         "ef\n0 5\n0000000000 65535 f \n0000000018 00000 n \n0000000077 00000" .
         " n \n$xr3 00000 n \n$xr4 00000 n \ntrailer\n  <<  /Root 1 0 R\n    " .
         "  /Size 5\n  >>\nstartxref\n$xrstart\n%%EOF";
}

?>

Catatan: txt2pdf()Fungsi ini didasarkan pada file PDF minimal yang dibuat oleh Brendan Zagaeski.

r3mainer
sumber
Dimana trollnya?
Nacib Neme
5

Pada sistem UNIX:

mv document.docx document.pdf && cowsay "code-trolling is cool"

Di Windows:

ren document.docx document.pdf
s3lph
sumber
3
catatan: tentu saja tidak akan berhasil ... Baru saja menemukannya lucu
s3lph
4

Saya percaya skrip shell ini menjadi metode yang sederhana dan intuitif untuk menyelesaikan masalah. Apakah ada cara yang lebih baik?

( echo $'<svg>\n<text y="10">';
  unzip -p ./YOUR_FILENAME_HERE.docx word/document.xml |
  sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g';
  echo $'\n</text>\n</svg>' ) |
inkscape -f /dev/fd/0 -D -A ./OUTPUT_FILENAME_HERE.pdf
ymbirtt
sumber
1
"mengapa swap ini
berubah
0

Windows Batch

Cara termudah untuk mengonversi file: ubah ekstensi!

:: convert.cmd

xcopy "%~dpnx0" "%~dpn0.pdf"

Spoiler / troll: (arahkan kursor ke bawah untuk melihat)

Ups ... apakah saya lupa bahwa Anda dapat mengonversi file dengan .exeekstensi sekalipun ? Begitu banyak untuk itu ...;) Juga, saya terlalu malas untuk kode penjaga.
Dan saya pikir saya akan menambahkan sedikit troll tambahan dalam hal ini: bahkan tidak menyentuh data di dalamnya ... (tidak menguraikannya untuk menjadikannya PDF yang valid)

Isiah Meadows
sumber