6

私は PdfBox を使用するのが初めてで、画像を表示するときに小さな問題が発生しています。サイズが 800*900 ピクセルの画像をインポートでき、既存の PDF を 100% で表示するときれいに見えます。ただし、結果の PDF が以下のコードを使用して生成されると、画像がぼやけ、画像が A4 ページの境界を超えてはみ出します。

pdfboxで正しく表示されるように画像のサイズ変更/保存する別の方法はありますか?

public class PDFtest {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException, COSVisitorException {
    // TODO code application logic here
    // Create a document and add a page to it
    PDDocument document = new PDDocument();
    PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
    document.addPage(page);

    // Create a new font object selecting one of the PDF base fonts
    PDFont font = PDType1Font.HELVETICA_BOLD;
    InputStream in = new FileInputStream(new File("img.jpg"));
    PDJpeg img = new PDJpeg(document, in);
    // Start a new content stream which will "hold" the to be created content
    PDPageContentStream contentStream = new PDPageContentStream(document, page);

    // Define a text content stream using the selected font, moving the cursor and drawing the text "Hello World"

    contentStream.drawImage(img, 10, 700);
    contentStream.beginText();        
    contentStream.setFont(font, 12);
    contentStream.moveTextPositionByAmount(10, 650);
    contentStream.drawString("Hello World");
    contentStream.endText();

    // Make sure that the content stream is closed:
    contentStream.close();

    // Save the results and ensure that the document is properly closed:
    document.save("Hello World.pdf");
    document.close();
    }
4

5 に答える 5

6

この質問で同じ問題を尋ねましたが、与えられた答えは正しくありません。

いくつかの調査の後、解決策を見つけました。

関数 drawImage を使用する代わりに、関数 drawXObject を使用します。

contentStream.drawXObject( img, 10, 700, 100, 100 );

最後の 2 つの数値は、描画するイメージのサイズを指定します。

于 2015-10-19T07:52:03.903 に答える
0

あなたの意図がPDF上のA4サイズの写真である場合、典型的なA4の実際のサイズをピクセルで見つけることができると思います.

また、jpg、gif、bmp など、表示する画像の拡張子に注意する必要があります。

私があなたのコードで見たものから、画像のサイズは 10 X 700 で、かなり小さいサイズだと思います。

contentStream.drawImage(img, 10, 700);

写真の拡張子は jpg です。

InputStream in = new FileInputStream(new File("img.jpg"));

それらを確認し、戻って詳細を確認してください。

それで全部です。幸運を'''

于 2013-07-27T06:44:35.010 に答える