有沒有辦法用C#提取具有特定顏色的矢量物件的坐標和尺寸?例如,像“切割線”或“切割線”?我嘗試使用 PDFSharp 庫,但它似乎沒有這樣的功能。我可以使用相應的顏色提取色板,但不能提取物件的坐標或尺寸。
uj5u.com熱心網友回復:
您可以使用PDF4NET列出 PDF 頁面中的矢量圖形,如下所示(假設您的切割線和切割線是分離色):
PDFFixedDocument document = new PDFFixedDocument(pdfFile);
PDFContentExtractor ce = new PDFContentExtractor(document.Pages[pageNumber]);
PDFVisualObjectCollection pageVisualObjects = ce.ExtractVisualObjects(false);
for (int i = 0; i < pageVisualObjects.Count; i )
{
switch (pageVisualObjects[i].Type)
{
case PDFVisualObjectType.Path:
PDFPathVisualObject pathVisualObject = pageVisualObjects[i] as PDFPathVisualObject;
if ((pathVisualObject.Pen != null) &&
(pathVisualObject.Pen.Color.ColorSpace.Type == PDFColorSpaceType.Separation))
{
PDFSeparationColorSpace cs =
pathVisualObject.Pen.Color.ColorSpace as PDFSeparationColorSpace;
if (cs.Colorant == "dieline")
{
Console.WriteLine("dieline stroke");
for (int j = 0; j < pathVisualObject.PathItems.Count; j )
{
Console.Write("{0}: ", pathVisualObject.PathItems[j].Type);
if (pathVisualObject.PathItems[j].Points != null)
{
for (int k = 0; k < pathVisualObject.PathItems[j].Points.Length; k )
{
Console.Write("[{0:0.######}, {1:0.######}] ",
pathVisualObject.PathItems[j].Points[k].X,
pathVisualObject.PathItems[j].Points[k].Y);
}
}
Console.WriteLine("");
}
}
}
if ((pathVisualObject.Brush != null) &&
(pathVisualObject.Brush.Color.ColorSpace.Type == PDFColorSpaceType.Separation))
{
PDFSeparationColorSpace cs =
pathVisualObject.Brush.Color.ColorSpace as PDFSeparationColorSpace;
if (cs.Colorant == "dieline")
{
Console.WriteLine("dieline fill");
for (int j = 0; j < pathVisualObject.PathItems.Count; j )
{
Console.Write("{0}: ", pathVisualObject.PathItems[j].Type);
if (pathVisualObject.PathItems[j].Points != null)
{
for (int k = 0; k < pathVisualObject.PathItems[j].Points.Length; k )
{
Console.Write("[{0:0.######}, {1:0.######}] ",
pathVisualObject.PathItems[j].Points[k].X,
pathVisualObject.PathItems[j].Points[k].Y);
}
}
Console.WriteLine("");
}
}
}
break;
}
}
這是包含填充和描邊矩形的示例 PDF 檔案的輸出:
dieline stroke
MoveTo: [20, 605]
LineTo: [270, 605]
LineTo: [270, 705]
LineTo: [20, 705]
CloseSubpath:
dieline fill
MoveTo: [20, 605]
LineTo: [270, 605]
LineTo: [270, 705]
LineTo: [20, 705]
CloseSubpath:
免責宣告:我為開發 PDF4NET 庫的公司作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/358583.html
上一篇:如何從base64字串顯示PDF
