PDF を TIFF 画像に変換するには Java ライブラリが必要です。PDF は FAX です。TIFF に変換して、画像をバーコード認識できるようにします。PDF から TIFF への変換に適した無料のオープン ソース ライブラリを推奨できる人はいますか?
9 に答える
コード ライブラリを推奨することはできませんが、GhostScript を使用して PDF をビットマップ形式に変換するのは簡単です。以下のスクリプト (netpbm ユーティリティも使用) を個人的に使用して、PDF の最初のページを JPEG サムネイルに変換しました。
#!/bin/sh
/opt/local/bin/gs -q -dLastPage=1 -dNOPAUSE -dBATCH -dSAFER -r300 \
-sDEVICE=pnmraw -sOutputFile=- $* |
pnmcrop |
pnmscale -width 240 |
cjpeg
を使用-sDEVICE=tiff...して、GhostScript からさまざまな TIFF サブフォーマットで直接 TIFF 出力を取得できます。
icepdf ライブラリ (Apache 2.0 ライセンス) を使用できます。彼らは、サンプルソースコードの1つとして、この正確なユースケースも提供しています: http://wiki.icesoft.org/display/PDF/Multi-page+Tiff+Capture
ここでは、高解像度と低解像度の PDF -> G3 tiff への変換も行っています。私の経験から、最高のツールは Adobe PDF SDK ですが、唯一の問題は非常識な価格です。だから私たちはそれを使用しません。
私たちにとってうまくいくのはghostscriptです。最後のバージョンはかなり堅牢で、ほとんどのpdfを正しくレンダリングします。そして、私たちはそれらのかなりの数を日中に来ています。本番環境では、gsdll32.dll を使用して変換が行われます。ただし、試してみたい場合は、次のコマンドラインを使用してください。
gswin32c -dNOPAUSE -dBATCH -dMaxStripSize=8192 -sDEVICE=tiffg3 -r204x196 -dDITHERPPI=200 -sOutputFile=test.tif prefix.ps test.pdf
PDFを高解像度G3 TIFFに変換します。そして prefix.ps コードはここにあります:
<< currentpagedevice /InputAttributes get
0 1 2 index length 1 sub {1 index exch undef } for
/InputAttributes exch dup 0 <</PageSize [0 0 612 1728]>> put
/Policies << /PageSize 3 >> >> setpagedevice
この SDK のもう 1 つの点は、オープン ソースであることです。c と ps (postscript) の両方のソース コードが得られます。また、別のツールを使用する場合は、pdf レンダリングを強化するために必要なエンジンの種類を確認してください。gs を使用している可能性があります。たとえば、LeadTools のように。
これが役に立てば幸いです、よろしく
PDF を TIFF に変換する必要はないかもしれません。ファックスは PDF に埋め込まれた画像である可能性が高いため、これらの画像を再度抽出するだけで済みます。これは、前述の iText ライブラリで可能になるはずです。
これが他のアプローチよりも簡単かどうかはわかりません。
これは、C#.NETでGhostScriptを使用するための優れた記事とラッパークラスです...これを本番環境で使用することになりました
http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx
私はiTextでいくつかの素晴らしい経験を持っています(現在、私は5.0.6バージョンを使用しています)。これはtiffをpdfに変換するためのコードです:
private static String convertTiff2Pdf(String tiff) {
// target path PDF
String pdf = null;
try {
pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf";
// New document A4 standard (LETTER)
Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf));
int pages = 0;
document.open();
PdfContentByte cb = writer.getDirectContent();
RandomAccessFileOrArray ra = null;
int comps = 0;
ra = new RandomAccessFileOrArray(tiff);
comps = TiffImage.getNumberOfPages(ra);
// Convertion statement
for (int c = 0; c < comps; ++c) {
Image img = TiffImage.getTiffImage(ra, c + 1);
if (img != null) {
System.out.println("page " + (c + 1));
img.scalePercent(7200f / img.getDpiX(), 7200f / img.getDpiY());
document.setPageSize(new Rectangle(img.getScaledWidth(), img.getScaledHeight()));
img.setAbsolutePosition(0, 0);
cb.addImage(img);
document.newPage();
++pages;
}
}
ra.close();
document.close();
} catch (Exception e) {
logger.error("Convert fail");
logger.debug("", e);
pdf = null;
}
logger.debug("[" + tiff + "] -> [" + pdf + "] OK");
return pdf;
}