私は、iTextSharp(縦向きのA4サイズ)で作成された単一ページのドキュメントを持っています。今、私は最初のページをコピーし、2番目に貼り付けます - 同じ2つのページがあります。 Acrobat Readerには、1ページに複数の用紙を印刷するオプションがあります。そのため、2ページを横向きに1枚印刷できます。iTextSharpでマルチシートページを作成するには?
どのようにiTextSharpだけを使用して同じ効果を達成するには?
私は、iTextSharp(縦向きのA4サイズ)で作成された単一ページのドキュメントを持っています。今、私は最初のページをコピーし、2番目に貼り付けます - 同じ2つのページがあります。 Acrobat Readerには、1ページに複数の用紙を印刷するオプションがあります。そのため、2ページを横向きに1枚印刷できます。iTextSharpでマルチシートページを作成するには?
どのようにiTextSharpだけを使用して同じ効果を達成するには?
iTextは7を使用する方法についてのチュートリアルを読んで、より具体的にChapter 6: Reusing existing PDF documents
その章では、あなたがTheGoldenGateBridge_N_up
と呼ばれる例見つけることができますしてください:この例では
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfDocument sourcePdf = new PdfDocument(new PdfReader(SRC));
//Original page
PdfPage origPage = sourcePdf.getPage(1);
Rectangle orig = origPage.getPageSize();
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
//N-up page
PageSize nUpPageSize = PageSize.A4.rotate();
PdfPage page = pdf.addNewPage(nUpPageSize);
PdfCanvas canvas = new PdfCanvas(page);
//Scale page
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
nUpPageSize.getWidth()/orig.getWidth()/2f,
nUpPageSize.getHeight()/orig.getHeight()/2f);
canvas.concatMatrix(transformationMatrix);
//Add pages to N-up page
canvas.addXObject(pageCopy, 0, orig.getHeight());
canvas.addXObject(pageCopy, orig.getWidth(), orig.getHeight());
canvas.addXObject(pageCopy, 0, 0);
canvas.addXObject(pageCopy, orig.getWidth(), 0);
// close the documents
pdf.close();
sourcePdf.close();
を、私たちは4ページを追加既存のPDFの1ページにこの原理はN-uppingと呼ばれ、Nを2の累乗で置き換えます。この例では、4-uppingを行います。 2倍にしたい。 4-upの例を2-upの例に変更するのは、単純な数学を適用する場合に限られます。
また、このFAQ項目を読むこともできます:How to convert an A4 size PDF to a PDF booklet?まだ古いバージョンのiTextを使用している場合は、iText 5 version of the FAQ entryを読むことができます。
注:私は投票と重要なコメントを参照してください。あなたが使用しているiTextのバージョン(私は最新のものを前提としています)に言及していないし、試したことを示すコードを投稿していないので、あなたの質問に深刻な欠陥があることに注意してください。スタックオーバーフロー)。
_Research;実験;デバッグ; SOに尋ねる。実験;デバッグ;船!_。 [質問] - – MickyD