如何更改代码以使其与itext 7配合使用
以下代码与iText 5配合得很好:如何更改代码以使其与itext 7配合使用,itext,itext7,Itext,Itext7,以下代码与iText 5配合得很好: LEVEL = PdfAConformanceLevel.PDF_A_3A writer = PdfAWriter.getInstance(document, baos, LEVEL) iText 7的正确语法是什么 在哪里可以找到有关iText 7的示例和文档?为什么如此负面?似乎你想给我额外的压力来写文档。这有点令人沮丧。我认为鼓励更有效。然而,你声称没有文件是错误的 见 您忽略了一个示例,在该示例中,我们将一个CSV文件转换为PDF/a-3文档,并将
LEVEL = PdfAConformanceLevel.PDF_A_3A
writer = PdfAWriter.getInstance(document, baos, LEVEL)
iText 7的正确语法是什么
在哪里可以找到有关iText 7的示例和文档?为什么如此负面?似乎你想给我额外的压力来写文档。这有点令人沮丧。我认为鼓励更有效。然而,你声称没有文件是错误的 见 您忽略了一个示例,在该示例中,我们将一个CSV文件转换为PDF/a-3文档,并将该CSV文件添加为附件
public void createPdf(String dest) throws IOException, XMPException {
PdfADocument pdf = new PdfADocument(new PdfWriter(dest),
PdfAConformanceLevel.PDF_A_3A,
new PdfOutputIntent("Custom", "", "http://www.color.org",
"sRGB IEC61966-2.1", new FileInputStream(INTENT)));
Document document = new Document(pdf, PageSize.A4.rotate());
document.setMargins(20, 20, 20, 20);
//Setting some required parameters
pdf.setTagged();
pdf.getCatalog().setLang(new PdfString("en-US"));
pdf.getCatalog().setViewerPreferences(
new PdfViewerPreferences().setDisplayDocTitle(true));
PdfDocumentInfo info = pdf.getDocumentInfo();
info.setTitle("iText7 PDF/A-3 example");
//Add attachment
PdfDictionary parameters = new PdfDictionary();
parameters.put(PdfName.ModDate, new PdfDate().getPdfObject());
PdfFileSpec fileSpec = PdfFileSpec.createEmbeddedFileSpec(
pdf, Files.readAllBytes(Paths.get(DATA)), "united_states.csv",
"united_states.csv", new PdfName("text/csv"), parameters,
PdfName.Data, false);
fileSpec.put(new PdfName("AFRelationship"), new PdfName("Data"));
pdf.addFileAttachment("united_states.csv", fileSpec);
PdfArray array = new PdfArray();
array.add(fileSpec.getPdfObject().getIndirectReference());
pdf.getCatalog().put(new PdfName("AF"), array);
//Embed fonts
PdfFont font = PdfFontFactory.createFont(FONT, true);
PdfFont bold = PdfFontFactory.createFont(BOLD_FONT, true);
// Create content
Table table = new Table(new float[]{4, 1, 3, 4, 3, 3, 3, 3, 1});
table.setWidthPercent(100);
BufferedReader br = new BufferedReader(new FileReader(DATA));
String line = br.readLine();
process(table, line, bold, true);
while ((line = br.readLine()) != null) {
process(table, line, font, false);
}
br.close();
document.add(table);
//Close document
document.close();
}
public void process(Table table, String line, PdfFont font, boolean isHeader) {
StringTokenizer tokenizer = new StringTokenizer(line, ";");
while (tokenizer.hasMoreTokens()) {
if (isHeader) {
table.addHeaderCell(new Cell().setHorizontalAlignment(HorizontalAlignment.CENTER).add(new Paragraph(tokenizer.nextToken()).setHorizontalAlignment(HorizontalAlignment.CENTER).setFont(font)));
} else {
table.addCell(new Cell().setHorizontalAlignment(HorizontalAlignment.CENTER).add(new Paragraph(tokenizer.nextToken()).setHorizontalAlignment(HorizontalAlignment.CENTER).setFont(font)));
}
}
}
事实上,我确实这样做了,对于那个版本来说仍然是这样,但这需要相当大的更改,而这些更改没有适当的文档记录(目前网站上可能有一个更改日志,但在我搜索了一个多小时后发现的任何地方都没有)。最近我收到了很多电子邮件,鼓励我在欧洲竞争中投票支持该公司,与开发者分享你所做的包更改以及如何使用新模型,这似乎不是一个好主意吗?我看到我的上升投票将负分变成了中性的0分。没有更改日志,因为iText 7是从头重写的。变更日志根本没有任何意义。关于文档,您是对的:我们需要更多文档。然而,我们决定使用精益方法,并以与iText 0.30相同的方式提供iText 7。我们本可以等到iText 7发布完成文档,但从本质上讲,我们仍然是开源开发人员,我们回到了我们的基层:让我们发布代码,这样操作系统开发人员就可以使用iText 7了。顺便说一下:每一个不必要的问题都会占用编写过程的时间。这本书还有第二个教程:当我有任务要做而阻碍写作时,不要低估我作为一名作家的挫败感。写作很难。我宁愿有人给我发建设性的批评(比如带有打字错误和错误的报告),也不愿有人通过发表负面批评来放慢写作速度。