バイト入力ストリームを動的に作成してPDFに変換するコードがあります。私はiText 5.1.2のバージョンを使用しています。コードは、Pdfreader上でgetNumberOfPages()メソッドを呼び出して、それを反復処理し、完全なPDFを構築しますが、このメソッドが1を返して、最初のページだけが印刷されます。 2ページ目に入るデータが失われています。 文字列の内容がPDFに変換されるのを見ると、上流のすべてのデータが表示されます。以下は私のコードです:私はあなたの質問を理解して何からPdfReader getNumberOfPages()は常に1ページだけを返します
int getPageCount(String str) throws Exception{
Document doc = new Document();
ByteArrayOutputStream out = new ByteArrayOutputStream();;
str = str.replaceAll("</lf>", "\n");
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
PdfReader reader;
reader = new PdfReader(new ByteArrayInputStream(str.getBytes()));
int i = reader.getNumberOfPages();
for (int page = 0; page < i;) {
copy.addPage(copy.getImportedPage(reader, ++page));
}
copy.freeReader(reader);
doc.close();
out.flush();
return i;
}
こんにちはとスタックオーバーフローを歓迎する、通過する時間がかかるしてください(HTTPS [ツアーを歓迎]。ここであなたのやり方を知るために(そして最初のバッジを得るため)、[最小限の、完全で、証明可能な例(https://stackoverflow.com/help/mcve)を作成する方法、 [良い質問をする方法](https://stackoverflow.com/help/how-to-ask)フィードバックと有用な回答を得るチャンスを増やす。 – DarkCygnus
あなたのソースを正しく読んでいますか?あなたは、文字列を取る、いくつかの文字列の操作を行う、バイト配列にエンコードし、PDFとして読むことを試みる?それはあなたがそれを読むことができますすべてのPDFを読むことが運がいいです... – mkl