我想使用JPod库将图像添加到生成的pdf中。

JPod DrawInLineImagePlain示例(位于https://github.com/born2snipe/learning-jpod/blob/master/not-in-repo/examples/de/intarsys/pdf/example/content/DrawInlineImagePlain.java )建议添加类似因此(假设先前已定义CSCreator创建者):

// 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不再支持perform()。

看来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中会很好显示。

#1楼 票数:0 已采纳

inlineImage是,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将常规图像添加​​到文档中

  ask by David translate from so

未解决问题?本站智能推荐:

2回复

使用itext创建PDF,并通过按钮嵌入动画

我正在尝试使用iText库创建PDF。 PDF必须嵌入一个动画,该动画是一组位图。 并且有控制动画的按钮。 要了解它,请参阅以下文件: http : //www.texample.net/media/tikz/examples/PDF/wankel-motor.pdf 如何从iTex
1回复

在flying-saucer的pdf页面之间打破了嵌入的图像

我对图像有一些问题(所有图像都嵌入在html中作为base64字符串)。 我用css 它有帮助但并非总是如此。 在某些情况下,可以正确处理相同的图像,而在其他情况下在页面之间划分。 这取决于许多因素,例如: 图像被指定为块元素 以前的图像是或不是块元素
1回复

使用没有图像的PDFBox将PDF转换为GREYSCALE?

我正在使用Apache PDFBox, 我想不使用图像方法将RGB PDF文件转换为另一个GREYSCALE文件,因为它使文件很大-_-! 所以这是我的步骤: 从Adobe InDesign导出(A4)First.pdf,其中包含图像,文本,矢量对象。 我阅读了Fi
7回复

将PDF文件转换为图像

我想将PDF文档转换为图像。 我正在使用Ghost4j。 问题:Ghost4J需要gsdll32.dll文件在运行时,我不希望使用的DLL文件。 问题1:在ghost4j中,有没有办法在没有dll的情况下转换图像? 问题2:我在PDFBox API中找到了解决方案。 org
2回复

使用itext将图像文件插入PDF时找不到文件

如何使用itext向pdf添加图像和设计页眉,页脚? 我已经写了这个,但是找不到异常文件。 谢谢
1回复

使用页码从其他PDF生成PDF

作为我正在进行的项目的一部分,我需要尝试合并我拥有的多个PDF并在每个PDF上放置连续的页码(可能不是从1开始)。 理想情况下,我需要能够从Java程序中调用它。 我知道有iText , PDFBox和Pdftk等工具,但是这些能够处理页码吗? 我已经调查过他们并且没有找到任何处理这个
3回复

是否可以使用Ghost4j创建图像的PDF文件?

我需要使用Ghost4j创建一个包含多个图像的PDF文件吗?它真的可能吗?我在他们的网站上找不到任何相关的文档......欢迎任何有价值的建议。
1回复

从本地计算机移动文件时,使用PDFBox生成的PDF中的图像会消失

我一直在使用JPEG文件生成PDF并在顶部添加徽标。 PDF中的图像在我的本地计算机(OS X)上显示正常。 一旦我将文件发送到其他任何地方,图像将不再出现。 我正在使用java和PDFBox来生成PDF。