TL: DR: Sử dụng trình duyệt không đầu để hiển thị PDF từ dịch vụ dịch PDF của Google.
PDF là định dạng phức tạp và có thể bao gồm nhiều thành phần là văn bản. Để dịch nó tôi sẽ mô tả giải pháp từ dễ đến một nâng cao hơn.
Dịch văn bản thô
Nếu bạn chỉ cần bản dịch mà không có đầu ra hình ảnh, bạn có thể trích xuất văn bản và đưa nó cho Google Translate.
Vì bạn không cung cấp thông tin về dự án của bạn (ngôn ngữ, môi trường, ...) Tôi sẽ chuyển hướng bạn đến này thread on how to extract text
Dịch toàn bộ văn bản
Nếu bạn cần phải nhận được văn bản từ tất cả mọi thứ trong bạn PDF, điều đó khá là khó. Để tránh đau đầu (một phần), bạn có thể chuyển đổi PDF sang hình ảnh (sử dụng imagemagick công cụ hoặc tương tự) và sau đó bạn có ba lựa chọn:
- OCR văn bản từ hình ảnh, sau đó đưa nó cho google, một lần nữa bạn mất hình thức ban đầu.
OCR văn bản, nhưng lưu vị trí (một số thư viện có thể làm điều đó, một lần nữa vì bạn không chỉ định thông tin dự án của mình, xem các liên kết này: #1, #2, #3, #4).
Sau đó dịch nó bằng google api và ghi kết quả vào hình ảnh. Để có kết quả tuyệt vời, bạn cần tính đến màu chữ, màu và màu nền. Khá khó, nhưng khả thi.
Dịch hình ảnh bằng cách sử dụng google translate image service. Rất tiếc, tính năng này không có sẵn trong API công khai, do đó, trừ khi thực hiện một số kỹ thuật đảo ngược, điều này là không thể.
Dịch sử dụng dịch vụ PDF dịch của Google
Các giải pháp mà bạn cung cấp bằng cách sử dụng các trang web dịch có thể được tự động khá dễ dàng. Lý do là do quá trình này là quá trình nặng và có thể bạn sẽ không đánh bại Google.
Sử dụng trình duyệt không có đầu, bạn có thể tải trang dịch bằng pdf của mình, sau đó quan sát rằng nội dung đã dịch đang nằm trong iframe, nhận iframe đó và cuối cùng in sang PDF.
Dưới đây là một ví dụ ngắn sử dụng SlimerJS (nên tương thích cho Phantomjs)
var page = require("webpage").create();
// here you may want to setup page size and options
// get the page
page.open('https://translate.google.fr/translate?hl=fr&sl=en&u=http://example.com/pdf-sample.pdf', function(status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
// find the iframe with querySelector
var iframe_src = page.evaluate(function() {
return document.querySelector('#contentframe').querySelector('iframe').src;
});
console.log('Found iframe: ' + iframe_src);
// render the iframe
page.open(iframe_src, function(status) {
// wait a bit for javascript to translate
// this can be optimized to be triggered in javascript when translation is done
setTimeout(function() {
// print the page into PDF
page.render('/tmp/test.pdf', { format: 'pdf' });
phantom.exit(0);
}, 2000);
});
}
});
Giving tập tin này: http://www.cbu.edu.zm/downloads/pdf-sample.pdf
Nó tạo ra kết quả này (được dịch bằng tiếng Pháp): (tôi đã đăng một ảnh chụp màn hình kể từ khi tôi không thể nhúng PDF;))
Điều này có vẻ thú vị 'Dịch sử dụng dịch vụ dịch PDF của Google' nhưng kích thước tệp của tôi trong khoảng 1Mb google cho biết giới hạn vượt quá: ( Ngoài ra tôi cũng có tài liệu word và ppt .. – Adeel
một vấn đề nhỏ ... Bạn có thể chia nhỏ pdf của bạn thành một phần nhỏ hơn với [Imagemagick] (http://www.imagemagick.org/script/index.php) 'convert x.pdf x-% 03d.pdf' – Cyrbil