我尝试从 iText5 转换为 iText7。从 Nuget 获取 iText7 的软件包。
这在 iText 7 快速入门教程的第 5 章中进行了解释。不再有PdfStamper
课程了。只有一个
PdfDocument
类用于创建文件以及用于操作文件。 你的问题很不完整。
您的代码用于填写表格吗?在这种情况下,你需要这样的东西:
PdfDocument pdf = new PdfDocument(
new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
Map<String, PdfFormField> fields = form.getFormFields();
fields.get("name").setValue("Abhishek Kumar");
pdf.close();
或者在 C# 中:
PdfDocument pdf = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField toSet;
fields.TryGetValue("name", out toSet);
toSet.SetValue("Abhishek Kumar");
form.FlattenFields();
pdf.Close();
您的代码是否用于向文档添加额外内容?在这种情况下,你需要这样的东西:
PdfDocument pdfDoc =
new PdfDocument(new PdfReader(src), new PdfWriter(dest));
Document document = new Document(pdfDoc);
Rectangle pageSize;
PdfCanvas canvas;
int n = pdfDoc.getNumberOfPages();
for (int i = 1; i <= n; i++) {
PdfPage page = pdfDoc.getPage(i);
pageSize = page.getPageSize();
canvas = new PdfCanvas(page);
// add new content
}
pdfDoc.close();
在显示
// add new content
的地方,您可以将内容添加到
canvas
。您是否将
PdfStamper
用于其他用途?在这种情况下,你需要改进你的问题。
ImageData
对象
PdfCanvas
中
// bis is ByteArratInputStream
// bos ByteArrayOutputStream, also available constructor with string path
val pdfDoc = new PdfDocument(new PdfReader(bis), new PdfWriter(bos));
val page = pdfDoc.getPage(1);
val canvas = new PdfCanvas(page);
// Create image from a source (string)
val imageData = ImageDataFactory.create("./src/main/resources/images/my_image.jpg");
// Add image into canvas at x:450, y:30 with 'inline' as false
canvas.addImageAt(imageData , 450, 30, false);