2016-12-28 6 views
-1

私は、iTextSharp(縦向きのA4サイズ)で作成された単一ページのドキュメントを持っています。今、私は最初のページをコピーし、2番目に貼り付けます - 同じ2つのページがあります。 Acrobat Readerには、1ページに複数の用紙を印刷するオプションがあります。そのため、2ページを横向きに1枚印刷できます。iTextSharpでマルチシートページを作成するには?

どのようにiTextSharpだけを使用して同じ効果を達成するには?

+2

_Research;実験;デバッグ; SOに尋ねる。実験;デバッグ;船!_。 [質問] - – MickyD

答えて

3

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のバージョン(私は最新のものを前提としています)に言及していないし、試したことを示すコードを投稿していないので、あなたの質問に深刻な欠陥があることに注意してください。スタックオーバーフロー)。

+0

私は教育的なメモを追加しました... –

+0

ありがとうございました:) – MickyD

+0

ああ!!!それはあなたが帽子をどうやっているのですか?笑。心配しない:)幸せな新年 – MickyD

関連する問題