Следующая команда выполняет ghostscript в pdf-файле. (Переменная pdf_file
содержит путь к этому PDF)Различные результаты при автоматическом скрипте R
bbox <- system(paste("C:/gs/gs8.64/bin/gswin32c.exe -sDEVICE=bbox -dNOPAUSE -dBATCH -f", pdf_file, "2>&1"), intern=TRUE)
После выполнения bbox
включает в себя следующую строку символов.
GPL Ghostscript 8.64 (2009-02-03)
Copyright (C) 2009 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
%%BoundingBox: 36 2544 248 2825
%%HiResBoundingBox: 36.395015 2544.659922 247.070032 2824.685914
Error: /undefinedfilename in (2>&1)
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push
Dictionary stack:
--dict:1147/1684(ro)(G)-- --dict:1/20(G)-- --dict:69/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 8.64: Unrecoverable error, exit code 1
Эта строка затем манипулировать для того, чтобы размеры BoundingBox (36 2544 248 2825), чтобы быть выделены и использованы для обрезки файла PDF. Пока все работает нормально.
Однако, когда я планирую этот сценарий в диспетчере задач (используя Rscript.exe или Rcmd.exe BATCH) или когда скрипт находится внутри фрагмента R, и я нажимаю knit HTML
, bbox получает следующую строку символов, которой не хватает BoundingBox информацию и делает ее непригодной:
GPL Ghostscript 8.64 (2009-02-03)
Copyright (C) 2009 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Error: /undefinedfilename in (2>&1)
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push
Dictionary stack:
--dict:1147/1684(ro)(G)-- --dict:1/20(G)-- --dict:69/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
Как решить эту проблему и запустить автоматический запуск сценария?
(сценарий исходит из принятого ответа на that question)
Габаритный прямоугольник записывается в stderr, и '2> & 1' перенаправляет stderr на stdout. Но этот синтаксис, по-видимому, не распознается Windows. –
Он распознается командным процессором Windows, но это не выполняется из командной оболочки, поэтому перенаправление не выполняется. – KenS
Предоставляет ли 'pdf_file' полный путь PDF? – robertklep