단어 문서를 pdf로 어떻게 변환합니까?


10

내 과제를 .pdf 형식으로해야한다고 말하지만 Word에서 수행했습니다. 정말 붙어 있습니다.

.docx 형식의 단어 문서를 가져 와서 모든 텍스트가 포함 된 .pdf를 만들려면 어떻게해야합니까? 모든 이미지와 서식이 포함되어 있지만 보너스는 최소한의 보너스 포인트입니다. 내가 사용할 샘플 파일은 this 이지만 솔루션은 일반적입니다.

불필요한 처리 단계를 거치고 싶지는 않습니다. 단순히 base64 또는 문제의 정신에 맞지 않는 것을 인코딩하고 디코딩하는 것은 독창적 인 사용 cowsay이 예외입니다. 코드 트롤링의 표준 규칙이 적용됩니다-솔루션은 기술적으로 정확해야하며 모든 단계는 기술적으로 필요하며 결과는 기술적으로 쓸모가 없어야합니다. 이것은 난독 화 및 둔각 경쟁보다 "루브 골드버그 (Rube Goldberg)"스타일의 프로그램이어야합니다.

5/1/14의 승리로 내 자신 이외의 답변에 대한 대부분의 공감대.

참고 : 이것은 질문입니다. 질문 및 / 또는 답변을 진지하게 받아들이지 마십시오. 자세한 내용은 여기를 참조 하십시오 .


2
이 과제는 복잡하지만 WPF 응용 프로그램에서 미리보기 처리기를 사용하고 스크린 샷을 찍고 비트 맵을 GIF로 저장 한 다음 PDF로 인쇄하는 것이 유일한 방법 일 것입니다.
Mathias R Jessen

공식 입장 에 따라 코드 트롤링을 제거하는 중 입니다. 이 게시물 질문에 대한 투표 및 답변의 공정한 금액을 가지고 있으며, 그것의 50 % 이상 "삭제"표를 받았다하더라도 설문 조사 , 그것은 더 잘 지정된 [코드 건지] 게시물 중 하나입니다. 따라서 나는 역사적 중요성을 위해 그것을 잠그고 있습니다.
Doorknob

답변:


24

pdf는 postscript와 동일한 그래픽 모델을 사용하기 때문에 조금 까다 롭지 만 나쁘지는 않습니다. 즉, 일단 postscript를 사용하면 pdf로 변환하는 것이 매우 간단하고 postscript는 프린터를 구동하는 방법입니다. 포스트 스크립트를 얻습니다.

이제 포스트 스크립트를 pdf로 변환하는 프로그램을 작성할 수 있지만 유닉스 용으로 작성되었으며 Linux에서 잘 작동하는 고스트 스크립트가있을 필요는 없습니다 (이 프로젝트와 큰 차이는 없습니다). 불행히도 단어는 Windows에서만 실행되므로 두 대의 컴퓨터가 필요하며 Linux 컴퓨터가 프린터임을 Windows에 확신 시키려면 직렬 케이블과 널 모뎀이 필요합니다. 컴퓨터에 직렬 포트가없는 경우 USB to rs232 변환기가 제대로 작동합니다 (fttdi 칩셋이있는 것을 권장합니다). 이제 직렬 케이블과 널 모뎀으로 두 컴퓨터를 연결하고 통신 할 수 있는지 확인하십시오 (매개 변수가 일치하는지 확인하십시오).

이제 리눅스 박스가 프린터라는 것을 윈도우 박스에 설득시킬 시간이다. 애플 라이터 II 용 프린터 드라이버를 설치하고 시리얼 포트에 연결되어 있다고 말하면된다. 이제 인쇄 할 때 리눅스 박스에 포스트 스크립트를 보냅니다. 다음 단계는 파일로 저장하는 것입니다.

이제 리눅스 박스에 스쿠 트하고이 간단한 명령을 사용하십시오 :

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

그리고 당신이 한 것처럼 간단합니다.


이것은 실제로 작동하도록 만들 수 있지만 (종료했을 때 신호를 dd로 보내면) 파일로 인쇄하고 Windows 상자에서 gostscript를 실행하는 것과 같은 쉬운 방법이 있습니다. 드라이버를 설치하기 위해 왕실의 고통.


2
이것을 테스트하는 것은 내 수단을 넘어서지 만 약간의 배경 독서는 이것이 유효하고 끔찍하다는 것을 암시합니다. 잘 했어!
ymbirtt

6
널 모뎀을 만드는 지침을 포함시키는 것에 대해 생각했는데 납땜 인두가 필요했습니다.
초에 hildred

13

요즘 많은 프린터가 자동 문서 공급기와 프린터 / 스캐너를 조합 한 것입니다. 간단합니다.

  1. 문서를 인쇄하십시오.
  2. 출력물을 스캔하십시오.

3
사람들이 실제로하는 방법입니다. 농담 이길 바랍니다. 그리고 이것은 코드 스크롤 입니다. 코드는 어디에 있습니까?
derobert

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 파일을 기반으로합니다 .


트롤 어 Where 어?
Nacib Neme

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
"이것이 왜 플로피로
바뀌는가


0

윈도우 배치

파일을 변환하는 가장 쉬운 방법 : 확장자 변경!

:: convert.cmd

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

스포일러 / 트롤 : (아래로 이동하면 볼 수 있습니다)

.exe확장명을 가진 파일조차 변환 할 수 없다는 것을 잊었 습니까? 그것을 위해 너무 많이 ...;) 또한, 경비원을 코딩하기에는 너무 게으르다.
그리고 나는 이것에 약간의 트롤을 추가 할 것이라고 생각했습니다 : 그것은 내부의 데이터를 건드리지 않습니다 ... (유효한 PDF로 만들기 위해 파싱하지 않았습니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.