Word文書をPDFに変換するにはどうすればよいですか?


10

私の課題は.pdf形式である必要があると言っている人を助けますが、私はWordでそれを行いました。私は本当に行き詰まっています。

Word文書を.docx形式で取得し、そこからすべてのテキストを含む.pdfを作成するにはどうすればよいですか?すべての画像と書式設定も含まれている場合はボーナスポイントになりますが、テキストは最低限必要です。私が使用するサンプルファイルはこれですが、ソリューションは一般的なものでなければなりません。

不要な処理手順を実行したくありません。単にbase64または問題の精神に含まれないものでドキュメントをエンコードしてデコードするだけです。ただし、クリエイティブな使用はcowsay例外です。コードトローリングの標準ルールが適用されます-ソリューションは技術的に正しく、すべてのステップは技術的に必要であり、結果は技術的に役に立たないはずです。これは、難読化と鈍化の競争ではなく、「Rube Goldberg」スタイルのプログラムのはずです。

5/1/14の勝利までに、自分以外の回答に対する賛成票が最も多くなります。

注:これは質問です。質問や回答を真剣に受け止めないでください。詳細はこちら


2
この割り当ては非常に複雑ですが、WPFアプリケーションでプレビューハンドラーを使用し、そのスクリーンショットを撮り、ビットマップをGIFとして保存し、それをPDFとして印刷することが唯一の適切なアプローチであると確信しています
Mathias R 。ジェッセン

コードトローリングは、公式のスタンスに従って削除される過程にあります。この投稿は質問に投票や回答の公正な量を持っており、それは上50%以上、「削除」票を受け取っていても世論調査、それはよりも指定[コード-トローリング]ポストの一つです。したがって、私はそれを歴史的意義のためにロックしています。
ドアノブ

回答:


24

わかりました。少しトリッキーですが、PDFはポストスクリプトと同じグラフィックモデルを使用しているので、それほど悪くはありません。追記を取得します。

これで、postscriptをpdfに変換するプログラムを作成できますが、UNIX用に作成され、Linuxで正常に動作するghostscriptがなくてもかまいません(このプロジェクトでは大きな違いはありません)。残念ながら、wordはWindowsでのみ実行されるため、2台のコンピューターが必要です。LinuxコンピューターがプリンターであることをWindowsに納得させるには、シリアルケーブルとヌルモデムが必要です。コンピュータにシリアルポートがない場合、USBからrs232へのコンバータは問題なく動作します(fttdiチップセットを搭載したものをお勧めします)。次に、シリアルケーブルとヌルモデムを使用して2台のコンピューターを接続し、通信できることを確認します(パラメーターが一致していることを確認します)。

それでは、LinuxボックスがプリンターであることをWindowsボックスに納得させるときがきました。applewriterIIのプリンタードライバーをインストールし、シリアルポートに接続されていると言います。印刷するときは、Linuxボックスにポストスクリプトを送信します。次のステップは、それをファイルとして保存することです。

さあ、あなたのLinuxボックスに向かってスクートして、次の簡単なコマンドを使ってください:

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

そして、あなたがしているのと同じくらい簡単です。


これは実際に機能させることができます(終了時にddに信号を送信する場合)。ただし、ファイルに出力してWindowsボックスでgostscriptを実行するなどの簡単な方法があります。また、fttdiは高品質のUSBシリアルコンバーターを作成しますが、ドライバーをインストールするための王室の痛み。


2
これをテストすることは私の手段を超えていますが、背景知識を少し読むと、これは有効かつひどいものであることが示唆されます。よくできました!
ymbirtt 2013

6
ヌルモデムの作成手順を含めることを考えたので、はんだごてが必要でした。
13

13

最近の多くのプリンタは、自動ドキュメントフィーダを備えたプリンタ/スキャナの組み合わせです。簡単でしょう。

  1. ドキュメントを印刷します。
  2. プリントアウトをスキャンします。

3
これが実際のやり方です…冗談でしょ。そして、これはコードトローリングです。コードはどこにありますか?
derobert 2014年

9

PHP

このコードは、ティッカーテープマシンで完全に印刷できるPDFファイルを生成します。モニターでPDFファイルを表示したい場合は、少し拡大する必要があるかもしれません。

ソースドキュメントの例 ワード文書

PDF出力(ブラウザーで表示) PDFドキュメントの部分ビュー

ソースコード

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

?>

注:このtxt2pdf()関数は、Brendan Zagaeskiによって作成された最小限のPDFファイルに基づいています。


トロルはどこ?
Nacib Neme 2014

5

UNIXシステムの場合:

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

Windowsの場合:

ren document.docx document.pdf

3
注:もちろん機能しません...面白いと思っただけです
s3lph

4

このシェルスクリプトは、問題を解決するためのシンプルで直感的な方法だと思います。もっと良い方法はありますか?

( 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
"なぜこれはフロッピーにスワップするのですか?";)
2013


0

Windowsバッチ

ファイルを変換する最も簡単な方法:拡張子を変更する!

:: convert.cmd

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

スポイラー/トロール:(下にカーソルを合わせるとわかります)

エラーが発生しました。.exe拡張子が付いたファイルでも変換できますか?そんなに...;)また、私は警備員をコーディングするのが面倒です。
そして、私はこれに少し余分なトロールを追加すると思いました:それは内部のデータにさえ触れません...(それを有効なPDFにするために解析しません)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.