2017-08-31 5 views
-3

既存の/ソースのPDFソースドキュメントがあり、そこから選択したページをコピーして、選択したページで宛先PDFを生成します。 4ページ4ページ=> 923キロバイトと=> 175キロバイト iText7を使用して生成されたPDFを圧縮するベストプラクティス

  • 生成された文書(私はこれがあると仮定して、ドキュメントを生成

    1. :既存の/ソース文書が異なる解像度でスキャンし、それはサイズが変化するのすべてのページ

    このページを圧縮するのにはどのようなベストプラクティスが適していますか? ソース文書のコピーされたページを異なる解像度で構成した最終的なPDFの圧縮/縮小サイズのコードサンプルはありますか?あなただけのPDF文書にスキャンを追加する場合は、高解像度の画像を使用している場合、結果のドキュメントのサイズが上がるするため

    親切よろしく

  • +0

    本、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースを推奨するか、見つけようとする質問は、オピニオン回答と迷惑メールを引き付ける傾向があるため、スタックオーバーフローに関するトピックです。 – Lexi

    +0

    私はiTextを使用した圧縮のコード例が必要です...私は丁寧に質問を書こうとしました:)) – dkkd

    +1

    そしてここでBe Niceポリシーに従ったことは素晴らしいことです!残念ながら、このコミュニティは、人々がコード例を求めているときに好きではない。あなたが実装しようとしたコードのいくつかを表示して、それについて何がうまくいかないか/あなたが何か助けを必要としているかを説明するほうが好きです。それはあなたにいくつかのまともな応答を得て、多分あなたが受け取った下降音のいくつかを取り除く可能性が高いです – Lexi

    答えて

    2

    、それは理にかなっています。

    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ファイルが小さくなることがあります。

    +0

    Bruno、完全圧縮の仕組みを説明してくれてありがとう。私のソースPDFには最大/最大ページ数がありませんでした。 10ページとそれは別のアプリケーションを介してスキャンされた物理的な文書が含まれており、ソースPDFがどのように生成されるかを変更することはできません。ブルーノはフルコンプレッションには適していました。また、あなたが提案した通常のJava圧縮を適用することも考えましたが、最終的には生成された文書をファイルシステムに保存し、画像を圧縮する必要はありませんでした。答えをもう一度ありがとうございます。 – dkkd

    +0

    あなたはBrunoとJorisを混乱させています。 :) –

    +0

    @Amedee:あまり混乱しないように:)) – dkkd

    関連する問題