以下内容有效,可将/tmp/file.docx
转换为/tmp/file.pdf
。
libreoffice3.5. --headless --convert-to pdf --outdir /tmp /tmp/file.docx
如何转换https://www.mysite.com/getfile.php?id=123(将返回docx文件)并将其保存为/tmp/file_123.pdf
?我希望它需要wget,管道和输入/输出重定向。
谢谢
编辑 - 回应zebediah49的帖子
> libreoffice3.5 --headless --convert-to pdf --outdir /tmp <(wget -O - "http://www.mysite.com/demo/lib/m.php?cid=9&controller=detail&task=displayDocument&id=56&x=fc872c033770e3bc8706e6a90bcdff02")
--2012-07-03 14:09:03-- http://www.mysite.com/demo/lib/m.php?cid=9&controller=detail&task=displayDocument&id=56&x=fc872c033770e3bc8706e6a90bcdff02
Resolving www.mysite.com... 99.999.999.999
Connecting to www.mysite.com|99.999.999.999|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29696 (29K) [application/msword]
Saving to: `STDOUT'
0K .......... .......... ......... 100% 14.2M=0.002s
2012-07-03 14:09:03 (14.2 MB/s) - `-' saved [29696/29696]
编辑 - 响应rekire的第一个解决方案
> wget http://www.mysite.com/demo/lib/m.php?cid=9&controller=detail&task=displayDocument&id=56&x=fc872c033770e3bc8706e6a90bcdff02 --no-check-certificate -O /tmp/file.docx
--2012-07-03 14:34:12-- http://www.mysite.com/demo/lib/m.php?cid=9
Resolving www.mysite.com... bash: --no-check-certificate: command not found
99.999.999.999
Connecting to www.mysite.com|99.999.999.999|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1236 (1.2K) [text/html]
Saving to: `m.php?cid=9.8'
0K . 100% 42.1M=0s
2012-07-03 14:34:12 (42.1 MB/s) - `m.php?cid=9.8' saved [1236/1236]
> libreoffice3.5 --headless --convert-to pdf --outdir /tmp /tmp/file.docx
编辑 - 响应rekire的第二个解决方案
> TMPFILE=`mktemp -u`
> wget http://www.mysite.com/demo/lib/m.php?cid=9&controller=detail&task=displayDocument&id=56&x=fc872c033770e3bc8706e6a90bcdff02 --no-check-certificate -O $TMPFILE
--2012-07-03 14:24:09-- http://www.mysite.com/demo/lib/m.php?cid=9
Resolving www.mysite.com... bash: --no-check-certificate: command not found
99.999.999.999
Connecting to www.mysite.com|99.999.999.999|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1236 (1.2K) [text/html]
Saving to: `m.php?cid=9.5'
0K . 100% 42.1M=0s
2012-07-03 14:24:09 (42.1 MB/s) - `m.php?cid=9.5' saved [1236/1236]
> libreoffice3.5 --headless --convert-to pdf --outdir /tmp $TMPFILE
答案 0 :(得分:3)
如果您想要一行,可以使用重定向来执行
libreoffice3.5. --headless --convert-to pdf --outdir /tmp <(wget -O - "https://www.mysite.com/getfile.php?id=123")
编辑:
我担心libreoffice在使用--convert-to
时可能不允许保存名称。如果您愿意,这里的版本将使用临时目录,但将输出保存在当前目录中(我假设您不想通过/ tmp来查找您的内容......
TEMP_DIR=`mktemp -d`
wget -P "$TEMP_DIR" "https://www.mysite.com/getfile.php?id=123"
libreoffice3.5. --headless --convert-to pdf --outdir ./ "$TEMD_DIR/*"
rm -r "$TEMP_DIR"
我将它格式化为好像是在脚本中...如果你只是自己运行它就可以知道你不会破坏任何东西和/或在当前目录中执行所有操作,从而只需使用
wget "https://www.mysite.com/getfile.php?id=123"
libreoffice3.5. --headless --convert-to pdf "getfile.php?id=123"
答案 1 :(得分:2)
根据你的命令,这两行应该有效:
wget https://www.mysite.com/getfile.php?id=123 --no-check-certificate -O /tmp/file.docx
libreoffice3.5. --headless --convert-to pdf:outfile.pdf --outdir /tmp /tmp/file.docx
或者像zebediah49用独特的文件名说:
TMPFILE=`mktemp -u`
wget https://www.mysite.com/getfile.php?id=123 --no-check-certificate -O $TMPFILE
libreoffice3.5. --headless --convert-to pdf:outfile.pdf --outdir /tmp $TMPFILE
请注意:每次运行都会覆盖outfile,因此您还应该为输出文件使用唯一的名称。