2017-08-15 25 views
0

JPodライブラリを使用して、生成されたpdfに画像を追加したいと思います。JPodを使用してPDFに画像を埋め込む方法は?

// image bytes 
private byte[] data = new byte[] { (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170 }; 

creator.transform(400, 0, 0, 400, 100, 100); 
creator.perform("BI"); 
creator.perform("/W 16 /H 16 /BPC 1 /CS /G ID"); 
COSString stringData = COSString.create(data); 
creator.perform("EI", stringData); 

creator.close(); 

JPodは、もはや(実行サポートしているので、しかし、私はこれを行うことはできません):

https://github.com/born2snipe/learning-jpod/blob/master/not-in-repo/examples/de/intarsys/pdf/example/content/DrawInlineImagePlain.javaで)JPod DrawInLineImagePlainの例は、(CSCreator作成者が事前に定義されていると仮定)ので、同様に画像を追加することを示唆しています。

inlineImage()はイメージを埋め込むことができるようです。 JPodドキュメントでは、次のようにinlineImage()を記述しています。

ストロークインラインイメージ。 PDFグラフィックス演算子 "BI"、 "ID"、 "EI"。

これはinlineImage()はDrawInLineImagePlain例ではグラフィック演算子の全てをコードすることができ、また、使用して幅、高さ、ビットあたりの成分、色空間、画像データを符号化することができると仮定することは私を導いPDImageパラメーターの情報

だから私は(再びCSCreator作成者が事前に定義されていると仮定)のような例を平行してみました:

// image bytes 
byte[] data = new byte[] { (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170, (byte) 170, 
    (byte) 170, (byte) 170, (byte) 170, (byte) 170 }; 

PDImage imageData = (PDImage) PDImage.META.createNew(); 
imageData.setBytes(data); 
imageData.setHeight(16); 
imageData.setWidth(16); 
imageData.setBitsPerComponent(1); 
imageData.setColorSpace(PDColorSpace.getNamed(PDColorSpace.CN_CS_DeviceGray)); 

creator.inlineImage(imageData); 

creator.close(); 

これは、残念ながら空白のPDFを生成します。イメージをPDFに表示するには、何を変更する必要がありますか?

この画像の埋め込みをテキストや線画に置き換えることができるので、文書やページの設定に問題はないと思われます。テキストや線はPDFでうまく表示されます。

答えて

0

inlineImageは、残念ながらCSCreatorでは実装されていません。コンテンツを直接ストリームに追加するにはaddOperandを使用してください。あなたのイメージのためのコードは次のようになります。

content.addOperation(new CSOperation(CSOperators.CSO_BI)); 
CSOperation operationID = new CSOperation(CSOperators.CSO_ID); 
operationID.addOperand(PDImage.DK_W); 
operationID.addOperand(COSInteger.create(16)); 
operationID.addOperand(PDImage.DK_H); 
operationID.addOperand(COSInteger.create(16)); 
operationID.addOperand(PDImage.DK_BPC); 
operationID.addOperand(COSInteger.create(1)); 
operationID.addOperand(PDImage.DK_CS); 
operationID.addOperand(PDColorSpace.CN_CS_G); 
content.addOperation(operationID); 
CSOperation operationEI = new CSOperation(CSOperators.CSO_EI); 
operationEI.addOperand(COSString.create(data)); 
content.addOperation(operationEI); 

またdoImage

でドキュメントに定期的に画像を追加
関連する問題