나는 계층화되지 않은 PDF 파일을 수신하는 프로세스가 있습니다. 레이어 화되지 않은 PDF 파일의 경우 "잘라 내기"라는 레이어를 추가합니다. 계층화 된 PDF 파일의 경우 이미 "잘라 내기"라는 레이어가 있는지 확인해야합니다. 그렇다면 "잘라 내기"레이어를 추가하지 마십시오. ABCPDF 8을 사용하여 PDF의 모든 레이어 이름을 가져 와서 "잘라 내기"라는 레이어가 있는지 어떻게 알 수 있습니까?ABCPDF 8 - PDF의 각 레이어 이름을 얻으려면 어떻게해야합니까?
0
A
답변
2
iTextSharp에서 레이어의 이름을 쉽게 찾을 수 있습니다. 다음은이를 수행하는 방법에 대한 코드 스 니펫입니다.
tempOutputFile = System.IO.Path.GetTempFileName();
iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfFile);
iTextSharp.text.pdf.PdfStamper pdfStamper = new iTextSharp.text.pdf.PdfStamper(pdfReader, new System.IO.FileStream(tempOutputFile, System.IO.FileMode.Create));
System.Collections.Generic.Dictionary<string, iTextSharp.text.pdf.PdfLayer> layers = pdfStamper.GetPdfLayers();
pdfStamper.Close();
pdfReader.Close();
System.IO.File.Delete(tempOutputFile);
레이어 사전의 키는 레이어 이름입니다. 그만!
0
ABCpdf 버전 10에는이를 수행하는 방법을 보여주는 OCGLayers라는 프로젝트가 포함되어 있습니다.
Page page = ... get a page ...
List<Group> groups = oc.GetGroups(page);
List<int> indents = new List<int>();
oc.SortGroupsForPresentation(groups, indents);
for (int i = 0; i < groups.Count; i++) {
Group group = groups[i];
string indent = new string(' ', indents[i] * 3);
layersCheckedListBox.Items.Add(indent + group.EntryName.Text, group.Visible);
}
이 프로젝트는 또한 레이어를 편집하다하는 방법을 보여주는 코드가 포함되어 있습니다 : 예를 들어
는 다음과 같은 형식의 코드를 사용하는 모든 명명 된 레이어를 얻을 수 있습니다. 이는 설명 된 작업을 고려할 때 유용 할 수 있습니다.
0
public Dictionary<String, PdfLayer> GetPdfLayerNames()
{
PdfReader reader1 = new PdfReader("D:\\pdf\\ClaimOut4e0907cbdb6845549458e82900db7be0.pdf");
PdfStamper stamper1 = new PdfStamper(reader1, new FileStream("D:\\new_stamper.pdf", FileMode.Append));
Dictionary<String, PdfLayer> layers = stamper1.GetPdfLayers();
stamper1.Close();
reader1.Close();
return layers;
}
당신은 사전에 고통이이 층이 실제로 선택적 컨텐츠 그룹으로 알려져있다 PDF
내에서 레이어의 이름입니다 PDF 파일에서 모든 레이어의 이름을 가져 (OCG의)에이를 수 있습니다 사용. 당신이 ABCpdf에게 그들과 거래하기위한 코드를 요청하면, 당신에게 그것을 보낼 것입니다. – OnceUponATimeInTheWest