我卡具有以下問題:PDF水印只進行打印,編程
我已經水印任何PDF,以及裏面的圖片,一切就OK了,但現在我需要的水印只顯示在PDF起來打印...這可能嗎?怎麼樣?
我必須這樣做編程的過程...
我真的被卡住,時間不多了,任何幫助將不勝感激。
謝謝!
我卡具有以下問題:PDF水印只進行打印,編程
我已經水印任何PDF,以及裏面的圖片,一切就OK了,但現在我需要的水印只顯示在PDF起來打印...這可能嗎?怎麼樣?
我必須這樣做編程的過程...
我真的被卡住,時間不多了,任何幫助將不勝感激。
謝謝!
您應該利用屏幕使用RGB和打印機CMYK這一事實。您應該能夠在CMYK中創建映射到相同RGB值的兩種顏色。對於一個堅定的專家來說,這當然是不夠的。
非常感謝您的幫助......我想我不會這樣做......看起來畢竟是不可能的...... 現在我花了一些時間深入學習PDF格式:)。 – Reinier 2010-01-09 11:40:28
對於未來的讀者,這是有可能通過包裝在(可選內容組)水印做,然後配置該層作爲打印只的使用屬性。請參閱PDF Reference Document,第4章 - 圖形,部分4.10-可選內容瞭解更多詳情。
bOnScreen參數確定在計算機屏幕上查看PDF時是否顯示水印,bOnPrint確定在打印PDF時是否顯示水印。
- https://acrobatusers.com/tutorials/watermarking-a-pdf-with-javascript
具體而言,使用iTextSharp的,我能得到它與下面的工作,特別是 - PDF版本1.7,SetPrint( 「水印」,真)
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();
iTextShazrp是一個用於PDF操作的.NET庫。一個好的解決方案 - 謝謝! Upvoted。 – KeyszerS 2015-09-19 07:09:21
我不認爲這是可能的。首先,你將如何防止人們打印截圖? – SLaks 2010-01-07 19:23:19
你將如何防止他們使用Photoshop? – 2010-01-07 19:26:30
您確定要這樣做嗎?我一直認爲PDF的一個要點是要創建一個幾乎可以在任何平臺上查看的電子文檔,並準確顯示它將如何打印。考慮到後者,我會在電子視圖中加入水印。 – Jay 2010-01-07 19:29:12