我有几份产品数据表。每个文件都是一个单独的文件。我想做的是使用iText根据Web表单的答案生成一组摘要/建议的操作,然后将所有相关的数据表附加到这些操作中。这样,我只需要在浏览器中打开一个新选项卡来打印所有信息,而不是为摘要打开一个选项卡,为所需的每个数据表打开一个选项卡。
那么,使用iText可以做到这一点吗?
如果要添加两个字节数组并以PDF/A格式返回一个字节数组
public static byte[] mergePDF(byte [] first, byte [] second) throws IOException {
// Initialize PDF writer
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(arrayOutputStream);
// Initialize PDF document
PdfADocument pdf = new PdfADocument(writer, PdfAConformanceLevel.PDF_A_1B, new PdfOutputIntent("Custom", "",
"https://www.color.org", "sRGB IEC61966-2.1", new FileInputStream("sRGB_CS_profile.icm")));
PdfMerger merger = new PdfMerger(pdf);
//Add pages from the first document
PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(new ByteArrayInputStream(first)));
merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages());
//Add pages from the second pdf document
PdfDocument secondSourcePdf = new PdfDocument(new PdfReader(new ByteArrayInputStream(second)));
merger.merge(secondSourcePdf, 1, secondSourcePdf.getNumberOfPages());
firstSourcePdf.close();
secondSourcePdf.close();
writer.close();
pdf.close();
return arrayOutputStream.toByteArray();
}
这个问题没有指定语言,所以我用C#添加了一个答案;这对我有用。我正在创建三个独立但相关的PDF,然后将它们合并为一个。
在创建了三个独立的PDF文档并将数据添加到它们之后,我以这种方式组合它们:
PdfDocument pdfCombined = new PdfDocument(new PdfWriter(destCombined));
PdfMerger merger = new PdfMerger(pdfCombined);
PdfDocument pdfReaderExecSumm = new PdfDocument(new PdfReader(destExecSumm));
merger.Merge(pdfReaderExecSumm, 1, pdfReaderExecSumm.GetNumberOfPages());
PdfDocument pdfReaderPhrases = new PdfDocument(new PdfReader(destPhrases));
merger.Merge(pdfReaderPhrases, 1, pdfReaderPhrases.GetNumberOfPages());
PdfDocument pdfReaderUncommonWords = new PdfDocument(new PdfReader(destUncommonWords));
merger.Merge(pdfReaderUncommonWords, 1, pdfReaderUncommonWords.GetNumberOfPages());
pdfCombined.Close();
因此,合并后的PDF是PDFWriter类型的PdfDocuments,合并后的部分是PdfReader类型的PdfDocuments,而PdfMerger是将其粘合在一起的粘合剂。
是的,您可以使用iText 7合并PDF。例如,看看iText 7跳转启动教程示例C06E04_88th_Oscar_Combine,关键代码是:
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfMerger merger = new PdfMerger(pdf);
//Add pages from the first document
PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(SRC1));
merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages());
//Add pages from the second pdf document
PdfDocument secondSourcePdf = new PdfDocument(new PdfReader(SRC2));
merger.merge(secondSourcePdf, 1, secondSourcePdf.getNumberOfPages());
firstSourcePdf.close();
secondSourcePdf.close();
pdf.close();
(C06E04第88个奥斯卡组合方法createPdf
)
根据您的用例,您可能希望将pdfdensemmerge与其助手类PageVerticalAnalyzer一起使用,而不是此处的PdfMerger
。它试图将来自多个源页面的内容放到单个目标页面上,并对应于此答案中的iText 5 PdfVeryDenseMergeTool。由于PDF文件的性质,这只适用于没有页眉、页脚和类似工件的PDF文件。
我试图从多个内存流生成一个PDF文件,但在确定将2个PDF MemoryStream合并为一个PDF MemoryStream的正确方法时遇到了很多困难,该PDF MemoryStream包含来自两个源PDF MemoryStream的所有页面。这看起来很简单,我认为下面的代码设置正确,但生成的PDF内存流并不包含这两个文件的组合。 我很难确定将2个PDF MemoryStream合并为一个PDF
问题内容: 我正在尝试使用Jenkinsfile创建Jenkins工作流。我要做的就是监视’develop’分支中的更改。发生更改时,我希望它进行git标签并合并到master。我正在使用GitSCM步骤,但它似乎唯一支持的就是git clone。我不想掏出钱来做标记/合并,但我看不到解决办法。有人知道这是否可能吗?我在我的Git服务器上使用BitBucket(本地)。 问题答案: 目前尚不可能,
我可以找到tqdm进度条用于group by和其他pandas操作的示例。但找不到任何有关合并或加入的信息。 有可能在熊猫上使用tqdm进行合并吗?
我正在尝试创建Java程序,它可以读取多个pdf文件,并将它们合并成一个单一的pdf文件。然后打印PDF,但在打印时,我需要将多个PDF页面合并在一个页面中并打印。即使它是一个新的pdf创建,那对我来说是好的。我需要一些开源的Java pdf操纵库来处理这个。我知道一个解决方案是在打印时,选择多个打印选项,将多页打印到一张纸上。但我可以访问的打印机没有这样的功能。有谁能为这个问题提出一些解决方案,
问题内容: 比如有收藏,,。任何避免迭代器循环的方法都可以通过Java 8流API交错这些集合以获得以下结果- 吗? 问题答案: 我不确定Stream API是否有更简单的方法,但是您可以在所有列表的索引上使用流来考虑以下问题: 这将获得给定列表中最大列表的大小。然后,对于每个索引,它使用该列表中每个列表的元素在该索引处形成的流(如果该元素存在的话)进行平面映射。 然后,您可以将其与 使用prot
我也需要扩展WebMvcConfigurationSupport类,修改两个内容: 我喜欢从WebMvcAutoConfiguration类注册的默认值,但是由于类上的条件注释,当我扩展WebMvcConfigurationSupport类时,它会防止自动配置的发生。 提前道谢!