URL 및 mailto 형식의 하이퍼 링크가 포함 된 PDF가 있습니다. 이제 좌표, 링크 유형 및 대상 주소와 같은 PDF 하이퍼 링크 메타 정보 양식을 추출 할 수있는 방법이나 도구 (타사가 될 수 있음)가 있습니까? 어떤 도움을 주셔서 감사합니다.PDF에서 하이퍼 링크 감지
나는 이미 iText와 PDFBox로 시도했지만 큰 성공을 거두지 못했고 일부 타사 소프트웨어도 나에게 원하는 출력을 제공하지 못했습니다.
나는 당신의 PDF 파일이 복사 방지하는 경우, 당신은 그들이 복사 할 수없는 경우 2 단계로 시작할 수 있습니다, 1 단계부터 시작해야 iText를
PdfReader myReader = new PdfReader("pdf File Path");
PdfDictionary pageDict = myReader.getPageN(1);
PdfArray annots = pageDict.getAsArray(PdfName.ANNOTS);
System.out.println(annots);
ArrayList<String> dests = new ArrayList<String>();
if(annots != null)
{
for(int i=0; i<annots.size(); ++i)
{
PdfDictionary annotDict = annots.getAsDict(i);
PdfName subType = annotDict.getAsName(PdfName.SUBTYPE);
if (subType != null && PdfName.LINK.equals(subType))
{
PdfDictionary action = annotDict.getAsDict(PdfName.A);
if(action != null && PdfName.URI.equals(action.getAsName(PdfName.S)))
{
dests.add(action.getAsString(PdfName.URI).toString());
} // else { its an internal link }
}
}
}
System.out.println(dests);
@ Bobrovsky의 답변은 Doxotic을 사용하는 링크 주석을 검색하고 iText를 사용하여 링크 주석을 검색하거나 PDFBox도 비슷하게 설계되었습니다. 따라서 정말로 문서의 해당 링크가 실제로 링크 주석입니까? 예 : Adobe Reader에는 콘텐츠의 주소를 링크 주석처럼 클릭 할 수있게 만드는 옵션이 있습니다. 어쩌면 그러한 기능으로 인해 실제로 링크 된 주석이없는 동안 링크 주석이 있다고 믿게 할 수 있습니다. (BTW, 시도한 코드를 제공하는 것이 좋을 수도 있으며, 아마도 잘못된 것일 수도 있습니다.) – mkl
감사합니다. 많이 해 주셔서 감사합니다.사실 내 코드는 잘 동작하고 있는데, 이는 Adobe의 속성 중 하나 인 호버 링크입니다. Adobe에서 해당 속성을 만들어서 확인할 수 있도록 사양을 알려 주실 수 있습니다. –
Adobe Reader는 페이지 내용에서 URL을 고려하고 상호 작용하도록 검색합니다. 환경 설정에서이 동작을 켜고 끌 수 있습니다. 어떤 사양 *을 제공할지 모르겠습니다. – mkl