2013-12-11 1 views
2

wkhtmltopdf.exe에 대한 배치 파일을 만들어 html을 pdf로 변환하고이 코드를 작성하려고합니다. wkhtmltopdf 배치 파일

@echo off &setlocal enabledelayedexpansion 
    for %%i in (*.html) do (
     set "line=" 
     for %%j in ("%%~ni.*") do set line=!line! "%%~j" 
     start "" wkhtmltopdf.exe !line! 
    ) 

그러나, 그것은 아무것도 변환 din't 및 결과 내 생각

wkhtmltopdf.exe awb112312.html awb112312.pdf 
wkhtmltopdf.exe invoice.html invoice.pdf 
+0

오류가 있습니까? '>> 2 err.txt >> 1 out.txt'을 명령에 추가하면 (또는 그 포워딩의 cmd 버전이 무엇이든), 당신은 무엇을 얻게됩니까? – Nenotlep

+0

오류는 발생하지 않지만이 파일을 출력합니다. [link] (http://pastebin.com/7app9D5a) – Lam

+0

원하는 명령을 출력하고 실행하지 않는 것처럼 보입니다. –

답변

2

의 2 개 라인을 준,이 배치 파일을 실행에 오류 메시지가

wkhtmltopdf.exe not recognized as an internal or external command, operable program or batch file. 

출력이 있습니다.

이유는 wkhtmltopdf.exe이 전체 경로없이 배치 파일에 사용됩니다. 따라서 Windows는 배치 파일의 현재 작업 디렉토리에서 먼저 검색하고 환경 변수 에 포함 된 모든 디렉토리에서 wkhtmltopdf.exe에 대해 세미콜론으로 구분 된 PATH 경로를 찾은 다음 응용 프로그램이 %ProgramFiles%의 서브 디렉토리에 설치되거나 %ProgramFiles(x86)%.

wkhtmltopdfwkhtmltopdf의 홈페이지 START은 정말 전혀 필요하지 않아야하므로 명령에 따라 콘솔 응용 프로그램입니다.

루프는 현재 작업 디렉토리의 각 .html 파일을 PDF 파일로 변환해야한다는 점에서별로 의미가 없습니다. 왜 현재 발견 된 * .html 파일과 같은 이름을 가진 다른 파일을 현재 작업 디렉토리의 파일 확장자로 검색하고 발견 된 모든 파일 이름을 하나의 문자열로 연결합니까? 모두 정말 필요한

내 생각은있다 : PHP 애플리케이션에서 시스템 호출을 통해 그것을 실행하려고 할 때이 창에 나에게 일어난

@echo off 
for %%i in (*.html) do "Complete path to wkhtmltopdf\wkhtmltopdf.exe" "%%i" "%%~ni.pdf" 
0

. 빠르고 더러운 해결책은 bin 디렉토리의 내용을 PHP/웹 응용 프로그램의 디렉토리에 복사하는 것입니다.

웹 서버 등을 다시 시작하여 경로 설정을 시도했습니다. 명령 줄에서 호출 할 때 올바르게 작동하지만 PHP 응용 프로그램에서 시스템 호출을 통해 실행될 때 제대로 작동하지 않습니다 ... 전체 경로를 지정하더라도 .

올바르게 구성한 유닉스 기반 웹 서버에 응용 프로그램을 포팅하면 파일 복사에 대한 혼란없이 작동 할 것입니다.

인생이 너무 짧아서 MFST의 단점을 알 수 없지만 누군가가 알아낼 수 있다면 기쁜 일입니다.