Làm cách nào để chuyển đổi một tài liệu word thành pdf?


10

Giúp mọi người bài tập của tôi nói rằng nó cần phải ở định dạng .pdf nhưng tôi đã làm nó trong Word. Tôi thực sự bế tắc.

Làm cách nào để tôi lấy một tài liệu từ ở định dạng .docx và tạo một .pdf có chứa tất cả văn bản từ nó? Điểm thưởng nếu nó cũng chứa tất cả các hình ảnh và bất kỳ định dạng nào, nhưng văn bản là tối thiểu. Tệp mẫu tôi sẽ sử dụng sẽ là tệp này , mặc dù giải pháp của bạn nên chung chung.

Tôi không muốn nó trải qua bất kỳ bước xử lý không cần thiết nào - chỉ cần mã hóa sau đó giải mã tài liệu trong cơ sở64 hoặc bất cứ điều gì không theo tinh thần của câu hỏi, mặc dù việc sử dụng sáng tạo cowsaysẽ là một ngoại lệ đối với điều này. Áp dụng quy tắc chuẩn của mã trolling - giải pháp phải chính xác về mặt kỹ thuật, tất cả các bước cần thiết về mặt kỹ thuật, kết quả sẽ vô dụng về mặt kỹ thuật. Đây phải là một chương trình theo phong cách "Rube Goldberg", hơn là một cuộc thi khó hiểu và khó hiểu.

Hầu hết các câu trả lời cho câu trả lời khác ngoài câu trả lời của tôi bằng 5/1/14.

Lưu ý: Đây là một câu hỏi . Xin đừng coi trọng câu hỏi và / hoặc câu trả lời. Thêm thông tin ở đây .


2
Nhiệm vụ này phức tạp, nhưng tôi chắc chắn rằng cách tiếp cận đúng đắn duy nhất là sử dụng Trình xử lý xem trước trong ứng dụng WPF, chụp ảnh màn hình đó, lưu bitmap dưới dạng GIF và sau đó in dưới dạng PDF
Mathias R Jessen

Mã trolling đang trong quá trình loại bỏ, theo lập trường chính thức. Bài đăng này có số lượng phiếu bầu khá lớn cho câu hỏi và câu trả lời, và mặc dù nó đã nhận được hơn 50% phiếu "xóa" trong cuộc thăm dò , đây là một trong những bài đăng [trolling mã] được chỉ định rõ hơn. Vì vậy, tôi đang khóa nó cho ý nghĩa lịch sử.
Doorknob

Câu trả lời:


24

Ok điều này hơi khó nhưng không quá tệ vì pdf sử dụng mô hình đồ họa giống như mô tả bài viết, điều đó có nghĩa là một khi bạn có phần tái bút, việc chuyển đổi nó thành pdf và việc đăng bài là cách để in máy in, tất cả những gì bạn phải làm là in lấy phần tái bút.

Bây giờ bạn có thể viết một chương trình để chuyển đổi postcript sang pdf, nhưng chúng ta không cần phải có ghostscript, được viết cho unix và chỉ hoạt động tốt trên linux (không có sự khác biệt lớn cho dự án này). Thật không may, từ chỉ chạy trên windows, vì vậy bạn cần hai máy tính và để thuyết phục windows rằng máy tính linux là máy in bạn cần cáp nối tiếp và modem null. Nếu (các) máy tính của bạn không có các cổng chuyển đổi nối tiếp usb sang rs 232 hoạt động tốt (tôi khuyên bạn nên sử dụng bộ chuyển đổi với chipset fttdi). Bây giờ kết nối hai máy tính với cáp nối tiếp và modem null và xác minh rằng bạn có thể giao tiếp (đảm bảo rằng các tham số của bạn khớp với nhau).

Bây giờ bạn đã nói với họ rằng đã đến lúc thuyết phục hộp windows của bạn rằng hộp linux là máy in: chỉ cần cài đặt trình điều khiển máy in cho applewriter II và nói rằng nó được kết nối với cổng nối tiếp. Bây giờ khi bạn in bạn gửi postcript vào hộp linux. Bước tiếp theo là lưu nó dưới dạng tệp.

Bây giờ hãy tìm đến hộp linux của bạn và sử dụng lệnh đơn giản này:

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

và đơn giản như bạn đã làm xong.


Điều này thực sự có thể được thực hiện để hoạt động (nếu bạn gửi tín hiệu đến dd khi bạn kết thúc) nhưng có nhiều cách dễ dàng hơn như in vào tệp và chạy gostscript trên hộp windows của bạn, và mặc dù fttdi tạo usb chất lượng tốt cho bộ chuyển đổi nối tiếp một nỗi đau hoàng gia để cài đặt các trình điều khiển.


2
Mặc dù thử nghiệm điều này vượt quá khả năng của tôi, một chút đọc nền cho thấy rằng điều này vừa hợp lệ vừa khủng khiếp. Làm tốt lắm!
ymbirtt

6
Tôi nghĩ về việc bao gồm các hướng dẫn để tạo ra một modem null, vì vậy cần có một que hàn.
hildred

13

Ngày nay, nhiều máy in là máy in / máy quét kết hợp với bộ nạp tài liệu tự động. Nó sẽ đơn giản.

  1. In tài liệu.
  2. Quét bản in ra.

3
Đây là cách mọi người thực sự làm điều đó ... Tôi ước tôi đang đùa. Và, đây là mã trolling , mã của bạn ở đâu?
derobert

9

PHP

Mã này tạo ra các tệp PDF sẽ in ra hoàn hảo trên máy băng ticker của bạn . Nếu bạn muốn xem các tệp PDF trên màn hình của mình, bạn có thể phải phóng to một chút.

Ví dụ tài liệu nguồn tài liệu văn bản

Đầu ra PDF (xem trong trình duyệt) xem một phần tài liệu PDF

Mã nguồn

<?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";
}

?>

Lưu ý: txt2pdf()Chức năng này dựa trên tệp PDF tối thiểu được tạo bởi Brendan Zagaeski.


Troll ở đâu?
Nacib Neme

5

Trên các hệ thống UNIX:

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

Trên Windows:

ren document.docx document.pdf

3
lưu ý: tất nhiên sẽ không hoạt động ... Chỉ thấy nó buồn cười
s3lph

4

Tôi tin rằng kịch bản shell này là một phương pháp đơn giản và trực quan để giải quyết vấn đề. Có cách nào tốt hơn?

( 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

1
"tại sao việc hoán đổi này thành đĩa mềm?";)
hildred


0

Batch Windows

Cách dễ nhất để chuyển đổi một tập tin: thay đổi phần mở rộng!

:: convert.cmd

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

Spoiler / troll: (di chuột bên dưới để xem)

Rất tiếc ... tôi có quên rằng bạn có thể chuyển đổi ngay cả một tệp có .exephần mở rộng không? Quá nhiều cho điều đó ...;) Ngoài ra, tôi quá lười để viết mã cho các vệ sĩ.
Và tôi nghĩ rằng tôi đã thêm một chút troll thêm vào đây: nó thậm chí không chạm vào dữ liệu bên trong ... (không phân tích nó để biến nó thành một tệp PDF hợp lệ)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.