我正在尝试使用PDFBox专门为PDF添加水印.我已经能够让图像显示在每个页面上,但它会失去背景透明度,因为它看起来好像PDJpeg将其转换为JPG.也许有一种方法可以使用PDXObjectImage来完成它.
这是我到目前为止所写的内容:
public static void watermarkPDF(PDDocument pdf) throws IOException
{
// Load watermark
BufferedImage buffered = ImageIO.read(new File("C:\\PDF_Test\\watermark.png"));
PDJpeg watermark = new PDJpeg(pdf, buffered);
// Loop through pages in PDF
List pages = pdf.getDocumentCatalog().getAllPages();
Iterator iter = pages.iterator();
while(iter.hasNext())
{
PDPage page = (PDPage)iter.next();
// Add watermark to individual page
PDPageContentStream stream = new PDPageContentStream(pdf, page, true, false);
stream.drawImage(watermark, 100, 0);
stream.close();
}
try
{
pdf.save("C:\\PDF_Test\\watermarktest.pdf");
}
catch (COSVisitorException e)
{
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 我知道之前已经回答过类似的问题:
......但是,由于他们没有直接回答我的具体问题,我会再试一次.
我想知道,我如何覆盖两个postscript文件:一个 - 一个徽标:
...在另一个之上 - 图形背景:
....在Linux中使用命令行方法.
在此重要的是,图形背景最大程度地保留其原始内容.因此,如果我能以某种方式连接两个原始的postscript文件内容(见下文),我可能会感到最开心 - 但除此之外,我想知道命令行工具如何ghostscript用于此目的.
这是更详细的问题 - 我想在PCB板印刷的顶部添加徽标.我kicad用来开发PCB打印; 完成后,我导出一个带有各个图层的postscript文档.通常,我希望前面的铜层"镜像"; 我经常尝试将.ps输出加载到,比方说,inkscape然后尝试在那里进行镜像.使用inkscape也很方便,因为可以在那里轻松添加徽标(然后将打印和徽标一起镜像).
然而,使用inkscape处理postscript输出是一个昂贵的操作(因为它需要一段时间inkscape来加载,并进行镜像和保存)...虽然,这里的主要显示停止是:处理后,一些维度可能会在输出文件中略微改变inkscape(当目标是打印小于1毫米宽的轨道时,它会产生很大的不同).
因此,假设kicads"Plot"命令有一个镜像选项 - 当然,对于我来说,直接从kicads"Plot"命令"镜像"图层打印要好得多; 输出再次是postscript文件.tmp-Front.ps是这样一个(镜像的)postscript文件的示例.请注意,通常情况下,"铜"部分填充黑色 - 我基本上喜欢在它上面有一个白色徽标.
现在,因为这个打印已经"镜像" - 如果我想在它上面添加一个徽标,我最好还要镜像徽标.所以我开火了inkscape; 和:
command-line ×1
image ×1
java ×1
kicad ×1
linux ×1
pdf ×1
pdfbox ×1
postscript ×1
watermark ×1