我正在使用itextSharp在pdf文檔中添加偏移量。iTextSharp z-index
我已經包含保存在它的圖像的PDF文檔,這是一個印章。
因此,我在郵票上繪製了一些筆畫,當我在WPF中繪製它們時,一切都很順利,但是當我通過電子郵件使用iTextSharp發送PDF進行轉換時,我繪製的線條現在位於郵票下方。
我該如何解決這個問題?
謝謝
我正在使用itextSharp在pdf文檔中添加偏移量。iTextSharp z-index
我已經包含保存在它的圖像的PDF文檔,這是一個印章。
因此,我在郵票上繪製了一些筆畫,當我在WPF中繪製它們時,一切都很順利,但是當我通過電子郵件使用iTextSharp發送PDF進行轉換時,我繪製的線條現在位於郵票下方。
我該如何解決這個問題?
謝謝
您發佈作爲answer的解釋(順便說一句,更中肯本來編輯您的問題包含數據)解釋了這個問題。
有兩個PDF頁面上可見的主要類型的對象:
註釋總是顯示在頁面內容上方,如果它們全部顯示的話。
在你的情況,你的圖像添加到PDF頁面內容(使用OverContent或UnderContent只改變其中相對於其他的PDF頁面的內容資料的補充出現的)。另一方面,郵票很可能是通過註釋來實現的。因此,郵票註釋始終高於您的添加項。
如果您希望您的增加出現在上面蓋章,你要麼必須添加補充一些類型的註釋,太多,或者你可以選擇添加的東西之前,壓平印章標記信息的頁面內容。
以下哪一些變體比較好,取決於你的要求。是否有任何要求將郵票保留爲郵票註釋?是否有任何要求將您的添加內容保留爲內容的一部分?請詳細說明您的要求。由於內容和註釋在顯示或打印時有一些不同的屬性,請說明所有要求。
,此外,請提供樣本文件。
所以就像我說的原始PDF有郵票保存在它裏面,如果我打開PDF與Acrobat Reader能打動我的印記。
所以在這裏我的代碼編寫一些招:
using (var outputStream = new FileStream(outputPath, FileMode.Create, FileAccess.Write, FileShare.Read))
using (var intputStream = new FileStream(pathPdf, FileMode.Open, FileAccess.Read, FileShare.Read))
{
PdfReader reader = new PdfReader(intputStream);
using (var pdfStamper = new PdfStamper(reader, outputStream))
{
foreach (var page in pages)
{
if (page != null && page.ExportedImages.HasItems())
{
PdfContentByte pdfContent = pdfStamper.GetOverContent(page.PageIndex);
Rectangle pageSize = reader.GetPageSizeWithRotation(page.PageIndex);
PdfLayer pdfLayer = new PdfLayer(string.Format(ANNOTATIONNAMEWITHPAGENAME, page.PageIndex), pdfContent.PdfWriter);
foreach (ExporterEditPageInfoImage exportedInfo in page.ExportedImages)
{
Image image = PngImage.GetImage(exportedInfo.Path);
image.Layer = pdfLayer;
if (quality == PublishQuality.Normal || quality == PublishQuality.Medium || quality == PublishQuality.High)
{
float width = (float)Math.Ceiling((image.Width/image.DpiX) * 72);
float height = (float)Math.Ceiling((image.Height/image.DpiY) * 72);
image.ScaleAbsolute(width, height);
float x = (float)(exportedInfo.HorizontalTile * (page.TileSize * (72/96d)));
float y = (float)Math.Max(0, (pageSize.Height - ((exportedInfo.VerticalTile + 1) * (page.TileSize * (72/96d)))));
image.SetAbsolutePosition(x, y);
}
else
throw new NotSupportedException();
pdfContent.AddImage(image);
GC.Collect();
GC.WaitForPendingFinalizers();
}
}
}
pdfStamper.Close();
}
}
所以我的筆畫在PDF保存好這個問題的郵票總是在一切之上,我認爲是正常的,所以我可以做一個變通方法爲了這 ?
除非有人能夠快速提供答案,請提供一些你正在做什麼和如何做的代碼。此外請提供一個PDF輸出樣本。 – mkl 2013-02-11 18:37:00