2011-03-10 77 views
1

itextsharp的新增功能。我不確定這是否是合適的論壇;這是因爲我將在下面描述的項目中涉及三個程序:Silverlight 4,Silverlight的Amyuni PDF和itextsharp 4.此外,我使用的代碼是在項目中獲得的網絡將silverlight inkpresenter翻譯成圖像。這包括調用png編碼器類的「editableimage」類。正如你所看到的,我急於得到這個工作,我發現了很多工具,其中任何一個都可能會導致我的問題(把它翻譯成意味着我錯誤地使用了一個或多個工具:-)。通過itextsharp保存後,pdf中的分辨率發生變化

我有一種感覺,這是我用itextsharp來保存PDF的方式,儘管它發生在我身上,pngencoder可能與它有關。至少我可以看到它並不壓縮它創建的png。

我有一個項目,我使用Amyuni的Pdf for Silverlight從文件加載到Silverlight inkpresenter。作爲概念證明,我使用Amyuni將pdf的第一頁帶入了演示者,使用writeablebitmap創建了一個位圖,並將其傳遞給上面提到的editableimage對象和png編碼器。然後將png流式傳輸到httphandler,itextsharp將其轉換爲pdf。這個pdf保存在數據庫表中。我確保pdf的矩形具有與可寫位圖和editableimage創建的位圖相同的尺寸。

然後,我使用Amyuni Pdf for Silverlight將保存在數據庫中的pdf讀回到inkpresenter。出於某種原因,加載的pdf比pdf文件中的原始頁面大。字體更大,更少的pdf適合同一個inkpresenter。我不確定,但似乎保存到數據庫的pdf頁面的尺寸比它們從文件中加載到同一個inkpresenter時的尺寸要大。我懷疑這是使用itext sharp保存PDF頁面時發生的一些錯誤。我在這裏看到帖子在其他人都經歷過同樣的事情。我已盡了最大努力通過Google搜索瞭解到這一點,但不幸的是,考慮到我使用的所有不同類型的軟件,很難將問題歸結爲問題。

Any advice would be appreciated. 

Fig000

+0

第一步如果可能的話是在*所有*步驟保存文檔的版本和EVAL他們並排側項目的範圍之外。是的,這聽起來像是你的像素尺寸正在改變。我在itextsharp上發現的一些小信息表明,當您創建新實例時,它會默認邊距。如果您正在創建一個沒有顯式邊距參數的新對象,然後在頁面上將生成的BMP設置爲100%大小,那麼可能會發生一些縮放。在重新渲染PDF之前,可能會在原始BMP的邊緣繪製1px邊框,然後查看它是否正確註冊。 – horatio 2011-03-10 16:07:54

回答

1

如果您已經使用Amyuni PDF創建用於顯示在Silverlight中的PDF文件,你也可以用它來與PNG圖像生成PDF文件,在服務器端。

的代碼看起來就像這樣:

PDFCreactiveX pdfdoc = new PDFCreactiveXClass(); 
pdfdoc.CreateObject(ObjectTypeConstants.acObjectTypePicture, "Picture1"); 
pdfdoc.set_ObjectAttribute("Picture1", "FileName", "C:\\mytemppicture.png"); 
pdfdoc.set_ObjectAttribute("Picture1", "Left", 0); 
pdfdoc.set_ObjectAttribute("Picture1", "Top", 0); 
pdfdoc.Save("c:\\mytemppdf.pdf", FileSaveOptionConstants.acFileSaveDefault);