23

PDFに入れたい透かしがあります。透かしは .bmp 画像で、サイズは 2290 x 3026 です。この画像をページに合わせてサイズ変更するのに苦労しています。何か提案はありますか?

Document document = new Document(); 
PdfWriter.getInstance(document, new FileOutputStream("result.pdf")); 
document.open(); 
document.add(new Paragraph("hello")); 
document.close(); 
PdfReader reader = new PdfReader("result.pdf"); 
int number_of_pages = reader.getNumberOfPages(); 
PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream("result_watermark.pdf")); 
// Get the PdfContentByte type by pdfStamper. 
Image watermark_image = Image.getInstance("abstract(0307).bmp"); 
int i = 0; 
watermark_image.setAbsolutePosition(0, 0);
watermark_image.scaleToFit(826, 1100);
System.out.println(watermark_image.getScaledWidth());
System.out.println(watermark_image.getScaledHeight()); 
PdfContentByte add_watermark; 
while (i < number_of_pages) { 
    i++; 
    add_watermark = pdfStamper.getUnderContent(i); 
    add_watermark.addImage(watermark_image); 
} 
pdfStamper.close();

getScaled()メソッドの出力は次のとおりです。

826.0 - Width
1091.4742 - Height

PDFの写真を皆さんと共有したいのですが、残念ながらできません。

代わりに .jpg を使用する必要がありますか? iText がさまざまな画像拡張子をどれだけうまく処理できるかはよくわかりません。

4

7 に答える 7

63

私はそのようにします:

//if you would have a chapter indentation
int indentation = 0;
//whatever
Image image = coolPic;

float scaler = ((document.getPageSize().getWidth() - document.leftMargin()
               - document.rightMargin() - indentation) / image.getWidth()) * 100;

image.scalePercent(scaler);
于 2012-06-20T14:19:44.960 に答える
22

使用する

watermark_image.scaleAbsolute(826, 1100);

それ以外の

watermark_image.scaleToFit(826, 1100);
于 2013-01-11T11:40:30.233 に答える
16

画像の高さがドキュメントの高さを超えている場合:

float documentWidth = document.getPageSize().width() - document.leftMargin() - document.rightMargin();
float documentHeight = document.getPageSize().height() - document.topMargin() - document.bottomMargin();
image.scaleToFit(documentWidth, documentHeight);
于 2014-10-14T12:01:43.790 に答える
15

あなたが使用することができます

imageInstance.scaleAbsolute(requiredWidth, requiredHeight);
于 2013-04-05T05:24:57.103 に答える
7

別のアプローチを使用することもできます。iText を使用してプログラムで行うのではなく、「手動で」(つまり、画像処理ソフトウェアを使用して) 画像のサイズを変更します。

最終的な寸法はハードコードされているように見えるので、すでにサイズ変更された画像を使用して、PDF ドキュメントに透かしを入れるたびに処理時間を節約できます。

于 2012-06-25T19:15:10.503 に答える