我是iTextSharp来获取文本块来构建单词并从现有PDF中获取位置。我正在使用字体大小来计算“单词”的内联块和大小。这一直运行良好,但最近我遇到了一个作者(ClarityPDF)创建的现有PDF,该作者制作了字体TT1B4t00。当我使用iTextSharp阅读块时,我得到了不同的大小,这给了我一个不正确的位置。
所有的PDF文档都使用Arial Narrow 12pt。我在同一个文档上使用ClarityPDF和BluebeamPDF编写器进行了一个简单的测试。
结果是:
文件夹https://drive.google.com/file/d/1uq9rWz10u31Fhkp39UtkYc-W1GZPooih/view?usp=sharing https://drive.google.com/file/d/1E0LPXRGWATBW1nrlDKk4Oo4BvMBnxBIC/view?usp=sharing
下面是我的Render text方法的示例代码,它获取文本位置和字体大小。
// **************************RenderText**************************
public void RenderText(TextRenderInfo renderInfo)
{
// Get the current line
LineSegment segment = renderInfo.GetBaseline();
var location = new TextChunk(renderInfo.GetText(), segment.GetStartPoint(), segment.GetEndPoint(), renderInfo.GetSingleSpaceWidth());
Debug.Print(renderInfo.GetText());
// Get position and location of text.
Vector horizonCoordinate = renderInfo.GetDescentLine().GetStartPoint();
Vector verticalRight = renderInfo.GetAscentLine().GetEndPoint();
location.PosLeft = horizonCoordinate[Vector.I1];
location.PosRight = verticalRight[Vector.I1];
location.PosBottom = horizonCoordinate[Vector.I2];
location.PosTop = verticalRight[Vector.I2];
location.curFontSize = location.PosTop - segment.GetStartPoint()[Vector.I2];
string strKey = string.Concat(renderInfo.GetFont().PostscriptFontName, location.curFontSize);
// Add fonts types to a list.
if (!ThisPdfDocFonts.ContainsKey(strKey))
{
ThisPdfDocFonts.Add(strKey, renderInfo.GetFont());
Console.WriteLine(strKey);
Console.WriteLine(location.curFontSize);
}
// Set font type to chunk
location.FontIndex = ThisPdfDocFonts.IndexOfKey(strKey);
// add chunk to list
string txt = location.text;
locationalResult.Add(location);
}
非常感谢。
PDF编写器正在将PDF旋转90度,我可以使用itext-rups-5.5.9看到它。这很奇怪,因为在查看器中看不到这种旋转。此外,ClarityPDF编写器正在图形中间Y轴上镜像坐标系。一旦我解释了这两件事,区块位置就正确了。
问题内容: Enthough Canopy Mayavi mlab中的字体大小设置似乎已损坏。 这两个命令都没有: 直接菜单字体大小命令(高级设置)也不起作用。 我已经用Enthought记录了一个错误报告,但是它看起来像是一个更普通的Mayavi错误,请参见 Mayavi“字体大小”文本属性是否起作用? 问题答案: 正如您所说,这是与mayavi层和vtk层之间的转换有关的错误。但是现在您可以使
2013年7月17日1:05:28 PM org.apache.pdfbox.util.pdfstreamengine processOperator信息:不支持/禁用操作:BDC 2013年7月17日1:05:29 PM org.apache.pdfbox.util.pdfstreamengine processOperator信息:不支持/禁用操作:EMC DeviceGray org.apa
我不知道发生了什么,但在浏览器控制台中,我可以看到3个与字体相关的错误 我知道这是荒谬的,我不能自己解决这个问题,但一切似乎都好,在我的index.html我有这样的东西 这就是我所有与字体相关的东西,我已经检查了路径,我没有错。 这是发生在你们中间的吗? 更新 这是NGINX部分,我在头部加载了一些内容
在上载PDF过程开始之前,我需要检查PDF是否具有以下属性,
我试图使用ITextSharp旋转PDF文档中的各个页面。它看起来很有效,因为当我在土坯上打开时,一切看起来都很好。然而,当试图在itextSharp中重新打开时,会抛出各种异常。我可以看出文档出了问题,因为adobe总是问我是否要保存更改时,打开一个与itextSharp操纵的文档,这表明它修复了损坏。 疯狂的是,我甚至不必对文档进行任何操作,只需创建一个新的压模并关闭它。下面是代码,被剥离到仍
出身背景 我使用iTextSharp已经有一段时间了。我已经创建了一个带有两个可签名的PdfFormFields的pdf文档。如果我打开pdf文档,我可以手动对每个字段进行手动签名。我希望通过iTextSharp完成这件事。 我目前正在从X509Store检索证书。直到现在,我都能弄明白。 问题 有人能告诉我如何使用X509Certificate2签署一个已经存在的签名字段吗。 工具书类 以下参考