2

サイズに基づいて、1 つの大きな PDF ファイルを複数の PDF ファイルに分割しようとしています。分割できましたが、1 つのファイルしか作成されず、残りのファイル データは失われます。分割するために複数のファイルを作成しないことを意味します。誰でも助けてもらえますか?これが私のコードです

public static void main(String[] args) {
    try {
        PdfReader Split_PDF_By_Size = new PdfReader("C:\\Temp_Workspace\\TestZip\\input1.pdf");
        Document document = new Document();
        PdfCopy copy = new PdfCopy(document, new FileOutputStream("C:\\Temp_Workspace\\TestZip\\File1.pdf"));
        document.open();

        int number_of_pages = Split_PDF_By_Size.getNumberOfPages();
        int pagenumber = 1; /* To generate file name dynamically */
        // int Find_PDF_Size; /* To get PDF size in bytes */
        float combinedsize = 0; /* To convert this to Kilobytes and estimate new PDF size */
        for (int i = 1; i < number_of_pages; i++ ) {
            float Find_PDF_Size;
            if (combinedsize == 0 && i != 1) {
                document = new Document();
                pagenumber++;
                String FileName = "File" + pagenumber + ".pdf";
                copy = new PdfCopy(document, new FileOutputStream(FileName));
                document.open();
            }

            copy.addPage(copy.getImportedPage(Split_PDF_By_Size, i));
            Find_PDF_Size = copy.getCurrentDocumentSize();
            combinedsize = (float)Find_PDF_Size / 1024;
            if (combinedsize > 496 || i == number_of_pages) {
                document.close();
                combinedsize = 0;
            }
        }

        System.out.println("PDF Split By Size Completed. Number of Documents Created:" + pagenumber);                        
    }
    catch (Exception i)
    {
        System.out.println(i);
    }
}

}

4

1 に答える 1

0

(ところで、あなたの質問にもitextのタグを付けていればよかったのに。)

PdfCopyPdfReadersページ インポートのソースPdfReaderが切り替えられたとき、またはが閉じられたときはいつでも、インポートされたページを閉じるために使用されますPdfCopy。これは、複数のソース PDF から1 つのターゲット PDFを作成するという本来の意図されたユース ケースと、多くのユーザーが .pdf を閉じるのを忘れているという事実との組み合わせによるものです。PdfReaders

したがって、最初の target を閉じるとPdfCopyPdfReaderも閉じられ、それ以上のページは抽出されません。

iText SVN リポジトリへの最新のチェックインを正しく解釈すると、この暗黙の終了はPdfReadersコードから削除されます。したがって、次のiTextバージョンのいずれかで、コードが意図したとおりに動作する可能性があります。

于 2012-11-14T23:51:37.480 に答える