如何使用 java 在 IText7 中将图像置于前面(text/image)或将图像发送到后面((text/image))?
How to bring image to the front(of the text/image) or send the image to the back((of the text/image)) in IText7 using java?
如何使用 [=25] 在 IText7(7.0.8) 中将图像置于前面(text/image)或将图像发送到后面((text/image)) =]?
import java.io.FileNotFoundException;
import java.io.IOException;
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfResources;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
public class AddImageUnderlayToPDF {
public static void main(String[] args) throws FileNotFoundException, IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfReader("c:\Development\test.pdf"),
new PdfWriter("c:\Development\test_result.pdf"));
ImageData img = ImageDataFactory.create("c:\Development\kishore signature.png");
PdfCanvas under = new PdfCanvas(pdfDoc.getFirstPage().newContentStreamBefore(), new PdfResources(), pdfDoc);
under.addImage(img, 100, 0f, 0f, 100, 100, 300, false);
under.saveState();
pdfDoc.close();
}
}
..但它不起作用,它不显示 pdf 中的图像。我在打开 pdf 时也注意到一个错误:
类似的方法适用于文本但不适用于图像。感谢任何帮助。
错误与您的错误相同:您使用了一次性资源对象,因此结果中缺少图像资源。
您可以使用实际页面资源来解决此问题。只需替换
PdfCanvas under = new PdfCanvas(pdfDoc.getFirstPage().newContentStreamBefore(), new PdfResources(), pdfDoc);
来自
PdfCanvas under = new PdfCanvas(pdfDoc.getFirstPage().newContentStreamBefore(), pdfDoc.getFirstPage().getResources(), pdfDoc);
此外,删除
under.saveState();
line as saveState
仅当您稍后使用匹配的 restoreState
.
时才有意义
如何使用 [=25] 在 IText7(7.0.8) 中将图像置于前面(text/image)或将图像发送到后面((text/image)) =]?
import java.io.FileNotFoundException;
import java.io.IOException;
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfResources;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
public class AddImageUnderlayToPDF {
public static void main(String[] args) throws FileNotFoundException, IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfReader("c:\Development\test.pdf"),
new PdfWriter("c:\Development\test_result.pdf"));
ImageData img = ImageDataFactory.create("c:\Development\kishore signature.png");
PdfCanvas under = new PdfCanvas(pdfDoc.getFirstPage().newContentStreamBefore(), new PdfResources(), pdfDoc);
under.addImage(img, 100, 0f, 0f, 100, 100, 300, false);
under.saveState();
pdfDoc.close();
}
}
..但它不起作用,它不显示 pdf 中的图像。我在打开 pdf 时也注意到一个错误:
类似的方法适用于文本但不适用于图像。感谢任何帮助。
错误与您的错误相同
您可以使用实际页面资源来解决此问题。只需替换
PdfCanvas under = new PdfCanvas(pdfDoc.getFirstPage().newContentStreamBefore(), new PdfResources(), pdfDoc);
来自
PdfCanvas under = new PdfCanvas(pdfDoc.getFirstPage().newContentStreamBefore(), pdfDoc.getFirstPage().getResources(), pdfDoc);
此外,删除
under.saveState();
line as saveState
仅当您稍后使用匹配的 restoreState
.