2012-08-17 28 views
1

在我的應用中,我想將PDF文件轉換爲圖像,但看起來像node.js中沒有模塊。所以我想用java應用程序來完成這項工作。從雲代工節點調用java命令應用

我們可以在雲代工節點應用程序中調用java命令嗎?

謝謝。

香港

+0

我想更好的想法是有獨立的應用程序作爲服務。看看[apache commons deamon](http://commons.apache.org/daemon/index.html) – 2012-08-17 06:35:50

+0

Imagemagick應該能夠做到這一點。 我只是在本地嘗試和轉換失敗,一個相當奇怪的錯誤... – 3on 2012-08-17 06:38:39

+0

@ViktorStolbin如果不能找到一個JavaScript庫或者在Cloud Foundry服務做這個工作,創建一個Java Web應用程序的轉換服務是確實只有選擇。謝謝。 – CManLH 2012-08-17 07:08:38

回答

4

好了,我已經建立了一個明確的應用程序,沒有工作;

app.js看起來像這樣;

/** 
* Module dependencies. 
*/ 

var express = require('express') 
    , routes = require('./routes') 
    , util = require('util') 
    , fs = require('fs') 
    , exec = require('child_process').execFile 
    , http = require('http'); 

process.env.MAGICK_TMPDIR = __dirname + '/tmp' 

var app = express(); 

app.configure(function(){ 
    app.set('port', process.env.VCAP_APP_PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser({uploadDir:__dirname + "/uploads"})); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler()); 
}); 

app.get('/', routes.index); 

app.post('/convert', function(req, res) { 

    var pdf_file = req.files.pdf.path; 
    var uploadsPath = __dirname + "/uploads" 

    var filename = pdf_file.split("/")[pdf_file.split('/').length - 1] 
    var out = __dirname + '/public/images/' + filename + '.png'; 

    exec('convert', [pdf_file, '-append', out], function(err, stdout, stderr) { 

    res.redirect('/images/' + filename + '.png'); 

    }); 

}); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

索引視圖看起來像這樣(只是一個簡單的多部分形式);

<!DOCTYPE html> 
<html> 
    <head> 
    <title><%= title %></title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
    </head> 
    <body> 
    <h1><%= title %></h1> 
    <form action="/convert" method="post" enctype="multipart/form-data"> 
     <label>PDF File</label> 
     <input type="file" name="pdf" /> 
     <input type="submit" /> 
    </form> 
    </body> 
</html> 

這一切工作在我的Cloud Foundry(VCAP),但不是在CloudFoundry.com的私有實例很好,我認爲這是由於權限問題。我將與工程團隊一起追查此問題,並確定是否可以使用正確的權限調用ImageMagick。

=========

UPDATE

我已經訂好CloudFoundry.com的問題,它似乎從使用/ tmp目錄作爲一個臨時目錄中的環境變量MAGICK_TMPDIR有停止的ImageMagick要設置,你現在可以在app.js文件的頂部看到它。

我現在也重定向到圖像,而不是閱讀它,就像一個魅力! - http://pdf2png.cloudfoundry.com

====

+0

非常感謝。真的行。 – CManLH 2012-08-17 13:36:15

相關問題