用大虾加水印(使用模板)

| 我需要能够为从模板创建的文档添加水印。我现在有以下代码:
# Note: the raw PDF text (body variable below) is sent from a remote server.
Prawn::Document.new(:template => StringIO.new(body), :page_size =>
\'A4\') do |document|
  # ... including other pages and sections to the template here ...

  # watermark
  d.page_count.times do |i|
    d.go_to_page i
    d.stroke_line [d.bounds.left, d.bounds.bottom], [d.bounds.right, d.bounds.top]
    d.draw_text \"Watermark\", :rotate => 45, :at => [100,100], :size => 100
  end
end
由于某些我无法理解的原因,它忽略了模板化页面。现在,这里的图变厚了:如果服务器添加了水印,则此代码将按预期工作(例如,直接的Ruby代码=在非对虾生成的页面上没有覆盖文本,但是对预先加水印的页面进行加水印模板)。我唯一的猜测是有某种方法可以创建服务器正在执行的z-index /层,但是Prawn本身不能。 这是来自执行PDF的服务器的部分代码 本身,这会使用iText进行水印处理:
PdfStamper stamper = new PdfStamper(...);
PdfContentByte over = stamper.GetOverContent(i + 1);
over.BeginText();
over.SetTextMatrix(20, 40);
over.SetFontAndSize(bf, 20);
over.SetColorFill(new Color(97, 150, 58));
over.ShowTextAligned(Element.ALIGN_CENTER,
                     watermarkText,
                     document.PageSize.Width / 2,
                     document.PageSize.Height / 2,
                     55);
over.EndText();
over.Stroke();
如果在我使用Prawn中的原始数据可以加水印之前运行, 数字。 所以我的问题是: 任何人都知道我如何可以使用大虾来达到相同的效果 混合动力?我宁愿在本地处理水印。 大虾中有ѭ2的基本含义吗? 是否有更好的方法将一串原始PDF数据导入Prawn 不使用
:template
StringIO
? (我看到了
#add_content
方法 但这没用) TL; DR:我需要在Prawn模板化文本上方浮动文本 给文档加水印。 我可以研究的任何见解或路径将不胜感激。如果这 我无法澄清。     
已邀请:
您可以尝试在文档上加盖印章。
create_stamp(\"watermark\") do
 rotate(30, :origin => [-5, -5]) do
   stroke_color \"FF3333\"
   stroke_ellipse [0, 0], 29, 15
   stroke_color \"000000\"
   fill_color \"993333\"
   font(\"Times-Roman\") do
     draw_text \"Watermark\", :at => [-23, -3]
   end
   fill_color \"000000\"
 end
end

stamp_at \"watermark\", [210, 210] 
    
        create_stamp(\"stamp\") do
            fill_color \"cc0000\"
            text_rendering_mode(:fill_stroke) do
                transparent(0.5){
                text_box \"WATERMARK\",
                :size   => 50,
                :width  => bounds.width,
                :height => bounds.height,
                :align  => :center,
                :valign => :center,
                :at     => [0, bounds.height],
                :rotate => 45,
                :rotate_around => :center
            }
            end
          end

        repeat (:all) do
            stamp(\"stamp\")
        end
    

要回复问题请先登录注册