順便說一句,作爲一個側面的問題,是一個好主意?
號PDF的DCTDecode
濾料JPG文件爲是,而這可能是你想要的東西 - JPEG的PDF容器,放置沒有任何重新壓縮和沒有你或觸摸JPEG內容的任何軟件。因此,不僅Acrobat,而且例如ImageMagick在你的樹上的使用不是一個好主意。我想不出將現成的工具包裝成PDF格式的JPEG,但小程序將有所幫助。
use strict;
use warnings;
use File::Find;
use PDF::Reuse;
use Image::Info qw(image_info dim);
find(sub {
return unless /\.jpg$/i;
my ($w, $h) = dim(image_info($_));
prFile($_.'.pdf');
prMbox(0, 0, $w, $h);
prAdd("q $w 0 0 $h 0 0 cm /".prJpeg($_, $w, $h)." Do Q\n");
prEnd()
}, $ARGV[0]);
應該非常快,預計樹根作爲參數,不正是我說:你的包裝JPG格式爲PDF。
p.s.至少有一些檢查是明智的 - 的$ W和$ H definedness? PDF ::重用允許日誌記錄,可能會有所幫助。
p.p.s.請注意,這個模塊假定RGB,但如果你的JPG文件可以灰度或CMYK - 檢查它在image_info
哈希和做小修改PDF::Reuse
源。它還假定72 dpi的 - 否則,此外,檢查image_info
哈希分辨率和調整上述 參數prMbox
和prAdd
電話。
另一個更新:上述
代碼是Perl的。在Windows上,您安裝ActiveState的版本(然後你加上其PPM工具模塊),或草莓的Perl(與CPAN客戶端安裝模塊)。File::Find
是核心模塊。 PDF::Reuse
和Image::Info
- 您安裝。
這樣做,然後將源保存爲例如jpegs_2_pdfs.pl
,地方几個RGB JPEG樣品到某個文件夾(樹結構裏面,或者只是簡單的列表 - 無所謂了),然後從命令提示符下運行:
perl jpegs_2_pdfs.pl path_to_my_folder
應該爲每個JPG創建PDF文件。這只是爲了給你一個口味。如果你覺得你需要所有這些,而且你願意並且可以花費時間和精力,這是值得的 - 那麼我將詳細說明「如果文件不是RGB文件怎麼辦」以及「如果文件不是RGB, dpi「 - 雖然我不會爲你寫一個現成的解決方案,但你需要編碼自己:-)
請注意,雖然我說」避免重新壓縮「,但質量損失,如果你保留像素尺寸甚至與JPEG
重新壓縮
convert file.jpg -compress JPEG file.pdf
是完全可以忽略不計。 Convert
是ImageMagick的工具,如果你不進入編程(只需爲你的樹創建一個批處理文件),也許這就是你的方式。
請注意,當您說「jpgs是混合顏色/灰度/ b & w」時,它不可能如此,因爲您無法將雙級圖像保存爲jpeg。
謝謝,這個作品完美。問題:在重複使用同一個子shell的同時,有沒有辦法做到這一點,而不是爲每個文件啓動一個新進程? – Ruby
好問題,我添加了一個更有效的解決方案。 – janos
謝謝。 $''做什麼?對於這個問題, - – Ruby