使用 evo pdf 转换 word 文档时图像质量差
Posted
技术标签:
【中文标题】使用 evo pdf 转换 word 文档时图像质量差【英文标题】:Poor image quality when converting word docs with evo pdf 【发布时间】:2021-07-26 14:41:01 【问题描述】:我使用 evo 的 WordToPdfConverter 将 Word 文档转换为 PDF。 Word 文档为 RTF 格式,包含二维码等图片。
很遗憾,生成的 PDF 中的图像质量非常差(因此 QR 码无法读取)。即使我禁用图像压缩或将其设置为最低级别(=> 最佳质量),生成的图像质量也很差。
还有其他方法可以控制图像质量吗?或者有没有办法告诉 evo 的 WordToPdfConverter 不要使用 JPG 作为生成的图像格式,而是坚持使用源格式(例如 PNG)?
var pdfConverter = new WordToPdfConverter();
// Set Pdf image options
pdfConverter.PdfDocumentOptions.JpegCompressionEnabled = false;
pdfConverter.PdfDocumentOptions.JpegCompressionLevel = 0;
var filename = @"C:\temp\evo\TestWordDoc.rtf";
pdfConverter.ConvertWordFileToFile(filename, Path.Combine(Path.GetDirectoryName(filename), $"Path.GetFileNameWithoutExtension(filename)_DateTime.Now:yyyyMMddHHmmss.pdf"));
【问题讨论】:
所以你最好使用 MS Word 自动化。类似于:Picture.Image.Save(imgName, System.Drawing.Imaging.ImageFormat.Png); save PictureBox.Image to file? 如果它的 rtf 你不应该使用 rtf 到 pdf 转换器吗?我没有看到这里涉及的词。我可以推测某些 rtf 到 docx 到 pdf 的转换在这里出错了。 没有商业工具,您可以简单地解析 RTF 文件:Extract Embedded Image Object in RTF @Ralf:Evo 建议我使用“WordToPdfConverter”进行 rtf 到 pdf 的转换,因为“RtfToPdfConverter”的问题更多。 @Daemon-5:我不想提取图像。我希望将整个布局好的 word 文档(包括图像)转换为 pdf 文件。 【参考方案1】:我不明白为什么人们对二维码有问题,比如这个只是一个模板(我无法下载上面的任何旧样本进行比较。)
这是一个 PNG 演示模板文件,设计用于从最远 4 英尺的距离(例如海报)进行扫描,但它可以用于生产,小得多,即页面扫描的比例更小。
我将 RTF 放在写字板打印到 pdf 快捷方式上,然后几乎立即在查看器中显示 pdf。
使用 RTF PNG 和别名查看器会有一些自然退化,但关键是保持自然比例。您需要的每样东西都是原生的,与 Windows 一起提供。 MSPaint、写字板、CMD 打印我可以将预览发送到 Edge 中的 PDFium 查看器。
【讨论】:
【参考方案2】:由于 RTF 是一种文本格式,您应该将其转换为 PDF,而无需进行任何图像压缩,因为这将花费更长的时间来处理并且会导致输出文件更大 + 您可能会遇到嵌入图像的图像质量问题.
我创建了一个示例 RTF 文件 (test.rtf),其中包含您描述的 QR 码:
然后,我使用 RTF 并通过 Document Converter 从 Leadtools.Document.sdk Nuget 运行它。作为免责声明:我与此库相关联。
此文档转换器保留文本并按原样解析源文档中的图像,然后将其输出为 PDF。
您可以从此处下载输出 PDF:test.pdf
这里是一些示例代码:
using (var documentConverter = new DocumentConverter())
var filename = @"C:\temp\evo\TestWordDoc.rtf";
var document = DocumentFactory.LoadFromStream(filename, new LoadDocumentOptions());
var jobData = DocumentConverterJobs.CreateJobData(filename, Path.Combine(Path.GetDirectoryName(filename), $"Path.GetFileNameWithoutExtension(filename)_DateTime.Now:yyyyMMddHHmmss.pdf"), DocumentFormat.Pdf);
var job = documentConverter.Jobs.CreateJob(jobData);
documentConverter.Jobs.RunJob(job);
【讨论】:
感谢您的回复!我们的系统是一个庞大的遗留系统,我不能(轻易)切换到另一个 PDF 渲染器。以上是关于使用 evo pdf 转换 word 文档时图像质量差的主要内容,如果未能解决你的问题,请参考以下文章