online mac ilove pdf printing watermark

mac - ilove pdf watermark



PDF Watermark para imprimir solo, programáticamente (4)

Estoy atascado con el siguiente problema:

Puedo filtrar cualquier archivo PDF, y las imágenes que contiene, todo está bien, pero ahora necesito que la marca de agua solo aparezca cuando se imprime el PDF ... ¿Es esto posible? ¿Cómo?

Necesito hacer esto programáticamente, por supuesto ...

Estoy realmente atrapado y me estoy quedando sin tiempo, cualquier ayuda será muy apreciada.

¡Gracias!


Probablemente deberías aprovechar el hecho de que la pantalla usa RGB y la impresora CMYK. Debería poder crear dos colores en CMYK que se correlacionen con el mismo valor RGB. Esto, por supuesto, no es suficiente contra un especialista determinado.


Para los lectores futuros, esto es posible envolviendo la marca de agua en una capa de PDF (Grupo de Contenido Opcional), luego configurando el atributo de Uso de esta capa como Solo Impresión. Consulte el Documento de referencia en PDF , Capítulo 4- Gráficos , parte 4.10 - Contenido opcional para obtener más detalles.



Específicamente, al utilizar itextsharp, pude hacer que funcionara con lo siguiente, específicamente - pdf versión 1.7 y SetPrint ("Marca de agua", verdadero)

string oldfile = @"c:/temp/oldfile.pdf"; string newFile = @"c:/temp/newfile.pdf"; PdfReader pdfReaderS = new PdfReader(oldfile); Document document = new Document(pdfReaderS.GetPageSizeWithRotation(1)); PdfWriter pdfWriterD = PdfWriter.GetInstance(document, new FileStream(newFile, FileMode.Create, FileAccess.Write)); pdfWriterD.SetPdfVersion(PdfWriter.PDF_VERSION_1_7); document.Open(); PdfContentByte pdfContentByteD = pdfWriterD.DirectContent; BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); int n = pdfReaderS.NumberOfPages; string text = "UNCONTROLLED"; for (int i = 1; i <= n; i++) { iTextSharp.text.Rectangle pageSizeS = pdfReaderS.GetPageSizeWithRotation(i); float pageWidth = pageSizeS.Width / 2; float pageheight = pageSizeS.Height / 2; document.SetPageSize(pageSizeS); document.NewPage(); PdfImportedPage pdfImportedPage = pdfWriterD.GetImportedPage(pdfReaderS, i); PdfLayer layer1 = new PdfLayer("Watermark", pdfWriterD); layer1.SetPrint("Watermark", true); layer1.View = false; layer1.On = false; layer1.OnPanel = false; pdfContentByteD.BeginLayer(layer1); pdfContentByteD.SetColorFill(BaseColor.RED); pdfContentByteD.SetFontAndSize(bf, 30); ColumnText.ShowTextAligned(pdfContentByteD, Element.ALIGN_CENTER, new Phrase(text), 300, 700, 0); pdfContentByteD.EndLayer(); pdfContentByteD.AddTemplate(pdfImportedPage, 0, 0);//, 0, 1, 0, 0); } document.Close(); pdfReaderS.Close();