、それは理にかなっています。
iTextはpdfライブラリです。画像操作ライブラリではありません。
イメージを圧縮しようとすると、通常の古いjavaを使用することもできます。
public static void writeJPG(BufferedImage bufferedImage, OutputStream outputStream, float quality) throws IOException
{
Iterator<ImageWriter> iterator = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter imageWriter = iterator.next();
ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality(quality);
ImageOutputStream imageOutputStream = new MemoryCacheImageOutputStream(outputStream);
imageWriter.setOutput(imageOutputStream);
IIOImage iioimage = new IIOImage(bufferedImage, null, null);
imageWriter.write(null, iioimage, imageWriteParam);
imageOutputStream.flush();
}
しかし、実際には、スキャンされた画像をpdfに入れておくと、はるかに難しくなります。あなたの後にその文書を扱わなければならない人々を想像してください。彼らはそれを開き、テキストを見て、それを選択しようとし、何も起こらない。あなたのPdfWriter
インスタンスを作成する際
Additionaly、あなたはWriterProperties
を変えるかもしれない:
PdfWriter writer = new PdfWriter(dest,
new WriterProperties().setFullCompressionMode(true));
全圧縮モードは、オブジェクトストリームに特定のオブジェクトを圧縮し、それはまた、PDFの相互参照テーブルを圧縮します。ドキュメント内のほとんどのオブジェクトはイメージ(すでに圧縮されている)なので、オブジェクトの圧縮はあまり効果がありませんが、ページ数が多い場合、クロスリファレンステーブルを圧縮するとPDFファイルが小さくなることがあります。
本、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースを推奨するか、見つけようとする質問は、オピニオン回答と迷惑メールを引き付ける傾向があるため、スタックオーバーフローに関するトピックです。 – Lexi
私はiTextを使用した圧縮のコード例が必要です...私は丁寧に質問を書こうとしました:)) – dkkd
そしてここでBe Niceポリシーに従ったことは素晴らしいことです!残念ながら、このコミュニティは、人々がコード例を求めているときに好きではない。あなたが実装しようとしたコードのいくつかを表示して、それについて何がうまくいかないか/あなたが何か助けを必要としているかを説明するほうが好きです。それはあなたにいくつかのまともな応答を得て、多分あなたが受け取った下降音のいくつかを取り除く可能性が高いです – Lexi