将两个 pdf 合并为一个并附加到 apex 中的电子邮件中
merging two pdfs in to single and attaching in the email in apex
我有一个要求,我想将两个 pdf 合并为一个 pdf 并将附件附加到 salesforce 中的自定义对象,然后通过电子邮件发送这个合并的 pdf。
这是我的代码片段。其中contentPdf是一个pdf,b是另一个需要合并的pdf内容。
PageReference pdf = PageReference(/apex/FirstPDF?id='+ccId);
Blob contentPdf = pdf.getContent();
PageReference cadre = new PageReference('/apex/SecondPDF?id=' + ccId);
Blob b = cadre.getContentPdf();
String combinedPdf = EncodingUtil.convertToHex(contentPdf)+EncodingUtil.convertToHex(b);
Blob horodatagePdf = EncodingUtil.convertFromHex(combinedPdf);
Attachment attachment = new Attachment();
attachment.Body = horodatagePdf;
attachment.Name = String.valueOf('New pdf.pdf');
attachment.ParentId = ccId;
insert attachment;
但问题是它没有显示合并的正确文档,而是在我的机器中保存的最终 pdf 中只显示一页。我曾尝试使用 contentAsPdf() 从 pageReference 检索内容,但它不起作用。此外,我在附件中得到的页面生成得不是很好。或者如果有任何其他方法可以快速完成。
我认为您不能那样合并 PDF 文档。看起来很疯狂。您可以简单地将文本文件连接在一起,但任何更复杂的文件(JPEG、PDF...)都有特殊的结构...您的代码很可能会工作,因为它生成的文件大小是单个文件的总和'尺寸,但它不是有效文档,因此只有第一部分呈现正常。
尝试制作另一个页面,通过调用它们(使用 <apex:include>
)来重用其他 2 个页面。检查它是否呈现接近您所追求的效果(例如,可能存在样式冲突)以及它是否有任何好处 - 对此调用 getContentAsPdf()
?
我有一个要求,我想将两个 pdf 合并为一个 pdf 并将附件附加到 salesforce 中的自定义对象,然后通过电子邮件发送这个合并的 pdf。
这是我的代码片段。其中contentPdf是一个pdf,b是另一个需要合并的pdf内容。
PageReference pdf = PageReference(/apex/FirstPDF?id='+ccId);
Blob contentPdf = pdf.getContent();
PageReference cadre = new PageReference('/apex/SecondPDF?id=' + ccId);
Blob b = cadre.getContentPdf();
String combinedPdf = EncodingUtil.convertToHex(contentPdf)+EncodingUtil.convertToHex(b);
Blob horodatagePdf = EncodingUtil.convertFromHex(combinedPdf);
Attachment attachment = new Attachment();
attachment.Body = horodatagePdf;
attachment.Name = String.valueOf('New pdf.pdf');
attachment.ParentId = ccId;
insert attachment;
但问题是它没有显示合并的正确文档,而是在我的机器中保存的最终 pdf 中只显示一页。我曾尝试使用 contentAsPdf() 从 pageReference 检索内容,但它不起作用。此外,我在附件中得到的页面生成得不是很好。或者如果有任何其他方法可以快速完成。
我认为您不能那样合并 PDF 文档。看起来很疯狂。您可以简单地将文本文件连接在一起,但任何更复杂的文件(JPEG、PDF...)都有特殊的结构...您的代码很可能会工作,因为它生成的文件大小是单个文件的总和'尺寸,但它不是有效文档,因此只有第一部分呈现正常。
尝试制作另一个页面,通过调用它们(使用 <apex:include>
)来重用其他 2 个页面。检查它是否呈现接近您所追求的效果(例如,可能存在样式冲突)以及它是否有任何好处 - 对此调用 getContentAsPdf()
?