1

以下工作并将转换/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
4

2 回答 2

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"
于 2012-07-03T20:44:05.733 回答
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

请注意:输出文件将在每次运行时被覆盖,因此您还应该为输出文件使用唯一名称。

于 2012-07-03T20:41:20.343 回答