【问题标题】:Change in resolution in pdf after save by itextsharp通过 itextsharp 保存后 pdf 中的分辨率变化
【发布时间】:2011-03-10 15:37:44
【问题描述】:

itextsharp 的新手。我不确定这是否是正确的论坛;这是因为我将在下面描述的项目中涉及三个程序:silverlight 4、Amyuni 的 Silverlight 的 PDF 和 itextsharp 4。此外,我使用的是我在项目中获得的代码网络将 silverlight inkpresenter 转换为图像。这包括调用 png 编码器类的“可编辑图像”类。正如您在急于完成这项工作时所看到的那样,我发现了许多工具,其中任何一种都可能导致我的问题(将其翻译为意味着我错误地使用了一个或多个它们:-)。

我感觉这与我使用 itextsharp 保存 pdf 的方式有关,尽管我想到 pngencoder 可能与它有关。至少我可以看到它不会压缩它创建的 png。

我有一个项目,我使用 Amyuni 的 Silverlight 的 Pdf 将文件中的 pdf 加载到 silverlight inkpresenter。作为概念证明,我使用 Amyuni 将 pdf 的第一页带入演示者,使用 writeablebitmap 创建位图,将其传递给可编辑图像对象和上面提到的 png 编码器。然后将 png 流式传输到 httphandler,在其中 itextsharp 将其转换为 pdf。此 pdf 保存在数据库表中。我确保 pdf 的矩形具有与可写位图和可编辑图像创建的位图相同的尺寸。

然后我使用 Amyuni Pdf for Silverlight 将保存在数据库中的 pdf 读回给 inkpresenter。由于某种原因,加载的 pdf 比 pdf 文件中的原始页面大。字体更大,更少的 pdf 适合同一个 inkpresenter。我不确定,但似乎保存到数据库的 pdf 页面的尺寸比从文件加载到同一个 inkpresenter 时的尺寸要大。我怀疑这是我在使用 itext sharp 保存 pdf 页面时犯的一些错误。我在stackoverflow中看到过其他人经历过同样事情的帖子。我已经尽力通过谷歌搜索来解决这个问题,但不幸的是,考虑到我使用的所有不同类型的软件,很难确定这个问题。

  Any advice would be appreciated. 

图000

【问题讨论】:

  • 如果可能,第一步是在所有步骤中保存文档的版本,并在项目上下文之外并排评估它们。是的,听起来您的像素尺寸正在改变。我在 itextsharp 上找到的小信息表明,当您创建新实例时,它会默认边距。如果您正在创建一个没有显式边距参数的新对象,然后将生成的 BMP 设置为页面上的 100% 大小,则可能会发生一些缩放。在重新渲染 PDF 之前,可能会在原始 BMP 的边缘画一个 1px 的边框,看看它是否正确注册。

标签: png itextsharp


【解决方案1】:

如果您已经在使用 Amyuni PDF Creator 在 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2010-11-05
    • 2016-11-21
    • 2010-10-01
    相关资源
    最近更新 更多