Lệnh sau thực thi ghostscript trên tệp pdf. (Biến pdf_file
chứa đường dẫn đến pdf mà)Kết quả khác nhau khi tập lệnh R được tự động
bbox <- system(paste("C:/gs/gs8.64/bin/gswin32c.exe -sDEVICE=bbox -dNOPAUSE -dBATCH -f", pdf_file, "2>&1"), intern=TRUE)
Sau khi thực hiện bbox
bao gồm các chuỗi ký tự sau đây.
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
Chuỗi này sau đó được xử lý để kích thước BoundingBox (36 2544 248 2825) được tách biệt và được sử dụng để xén tệp pdf. Cho đến nay tất cả mọi thứ hoạt động ok. Tuy nhiên, khi tôi lên lịch tập lệnh này trong Trình quản lý Tác vụ (sử dụng Rscript.exe hoặc Rcmd.exe BATCH), hoặc khi tập lệnh nằm trong một đoạn R và tôi nhấn knit HTML
, bbox nhận chuỗi ký tự sau thiếu BoundingBox thông tin và không sử dụng được:
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
Làm cách nào để vượt qua vấn đề này và chạy tập lệnh tự động?
(Kịch bản xuất phát từ câu trả lời chấp nhận that question)
Hộp bounding được ghi vào stderr, và '2> & 1' chuyển hướng stderr thành stdout. Nhưng cú pháp này dường như không được Windows nhận diện. –
Nó được công nhận bởi bộ xử lý lệnh Windows, nhưng điều này không được thực thi dưới dạng lệnh shell, do đó việc chuyển hướng sẽ không diễn ra. – KenS
Có 'pdf_file' chứa đường dẫn đầy đủ của PDF không? – robertklep