我在一个程序中写下我的信件并以PDF格式导出。我最近实现了一个小的控制台程序,它应该迭代每个页面并设置我的特殊设计字母(包含我的地址等)作为背景。
问题是,我的信件是用Calibri写的。在使用pdf压模之前,原始PDF看起来很棒,在设置背景后,(未修改的文本)的样式看起来有点不同。
请参阅截图,我的意思。
我无法向我解释,因此我认为这可能是一个错误。你有什么建议吗?
我的代码在这里。
public static void main(String[] args) throws IOException, DocumentException {
PdfBackgroundSetter.setBackgroundToPdf(args[0], args[1], args[2]);
}
public static void setBackgroundToPdf(String inputContentPdfPath, String outputPdfPath, String inputBackgroundPdfPath) throws IOException, DocumentException {
PdfReader inputContentReader = new PdfReader(inputContentPdfPath);
PdfStamper outputStamper = new PdfStamper(inputContentReader, new FileOutputStream(outputPdfPath));
PdfReader inputBackgroundReader = new PdfReader(inputBackgroundPdfPath);
PdfImportedPage backgroundPage = outputStamper.getImportedPage(inputBackgroundReader, 1);
int numberOfPages = inputContentReader.getNumberOfPages();
for (int i = 1; i <= numberOfPages; i++) {
outputStamper.getUnderContent(i).addTemplate(backgroundPage, 0, 0);
}
outputStamper.close();
inputContentReader.close();
inputBackgroundReader.close();
}
可以在此处找到稍加修改(匿名)的PDF文件:
答案 0 :(得分:0)
正如@Chris已经说过,这基本上是由Adobe Reader / Acrobat引入的工件。它尤其取决于相关的Adobe Acrobat / Reader版本,可以通过在后台PDF中不使用透明组来防止。
我可以仅针对某些Adobe软件版本Acrobat 9.5重现该问题,而不是针对当前版本,但我在Adobe Reader XI中看不到问题。
在Acrobat 9.5中与普通内容合并的内容和内容:
普通内容和内容与Reader XI中的背景合并:
工件似乎与透明组在后台文件中使用的事实有关。删除后台文件中的所有透明组后,我得到了这个:
在Acrobat 9.5中,普通内容和内容与没有透明度组的背景合并:
在最近的Adobe Acrobat和Reader版本中,透明度组的处理实际上已经有了很多改进。我大多意识到与实际透明度问题和淘汰赛组相关的改进,但这似乎是另一个。