2011-03-10 79 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);