2012-09-06 4 views
1

그래서 저는 텍스트 편집기의 종류 인 프로그램을 가지고 있습니다. pdf가되도록 출력 형식이 필요하지만 다시 한번 그 PDF를 다시 편집 할 수 있어야합니다. 내 프로그램 출력은 결코 복잡하지 않으며 내 프로그램이 PDF를 작성한 사람이기 때문에 작성된 PDF에서 직접 읽을 수는 있지만 읽기 쉽도록 다른 파일을 PDF에 첨부하는 것이 더 쉽다고 생각했습니다.Java에서 문자열로 PDF 읽기

그러나 사용자가 파일이 PDF에 첨부 된 것을보고 싶지는 않습니다.

/EmbeddedFiles/Embeddedfiles으로 변경하여 PDF 리더를 속일 수있는 곳을 한 번 읽었습니다. 그렇게하면 처리중인 PDF에 첨부 된 파일이 감지되지 않습니다.

질문은 변경을 수행하기 위해 PDF를 읽을 수 있고, 다시 편집하기 전에 다시 되돌릴 수 있습니까?

PDF를 "손상"하려고하기 때문에 PDF 라이브러리가 여기 도움이된다고 생각하지 않습니다. 나는 그것을 문자열의 일부로서 파싱해야하고, 내가 바꿀 부분 문자열을 찾아야한다고 생각한다. 하지만 PDF 형식에 익숙하지 않아서 실제로 그렇게 간단하지 않거나 구체적인 방법이 있는지 알 수는 없습니다 ...

+0

:(너무 지역화 된 ... .... 몇 가지 코드도 표시 할 수 있습니까? – Sap

+0

아무 것도 쓰지 않았습니다 ... PDF를 편집 할 수있는 문자열로 읽는 방법을 묻는 중입니다. PDF 파일을 다시 편집 할 수 있습니다.하지만 PDF의 핵심 구조를 망쳐 놓고 있기 때문에 PDF 라이브러리에 대한 지원이 필요하지 않습니다 .ist가 도움이되지 않는다면 파일은 항상 맨 위의 어딘가에 첨부되어야합니다. 문서, 그것은 내 프로그램에 의해 만들어진 모든 문서에 대해 동일합니다 ... – Karlovsky120

+0

호기심 : 제공하려는 기능에 필수적인 경우 첨부 파일을 숨기려면 어떻게해야합니까? – TheBlastOne

답변

1

바이너리 형식의 고유 한 버전을 만든 다음 PDF로만 호출하는 경우 PDF 파일의 2 진 개체에 "사용자 지정"항목을 추가하고 해당 항목에 데이터 스트림을 연결할 수 있습니다 . 엔트리가 PDF 스펙 밖에 있으므로, 잘 구현 된 모든 독자는이를 무시할 수 있어야합니다.
PdfDictionary.put을 사용하여 iText를 사용하여이 작업을 수행 할 수 있으며 예를 들어 카탈로그 사전에 비표준 데이터를 추가 할 수 있습니다.

2

PDF는 첨부 파일을 편집하거나 추가 할 수있는 형식이 아닙니다 (숨김 또는 나는 잘 모르겠다) 일종의 iffy입니다. 귀하의 트릭을 가정하면 :

  • 유효한 PDF입니까? 독자를 속이려는 경우가 있지만 잘못된 PDF를 작성하면 사용하려는 방법보다 더 많이 걱정됩니다.

  • PDF 리더가 유효하지 않은 구문을 지원하도록 기능을 업데이트하면 어떻게 될까요? 그건 갑자기 파일이 보이고 의도를 깨는 것을 의미합니다.

가장 좋은 방법은 다음과 같습니다

는 사용자가 문서를 만들어 보자. 텍스트를 프로그램 폴더에 저장하십시오. PDF를 작성하십시오. 편집 할 때 PDF 제목을 기반으로 텍스트 문서 (또는 무엇이든)를로드하면됩니다. 다시 한번, PDF는 편집 형식이 아닙니다.

또는 Jonathan의 솔루션을 사용하십시오. 텍스트를 로컬에 저장하는 방법.

어느 쪽이든, PDF 파일을 손상시키는 것은 바람직하지 않습니다.

+0

방금 ​​다른 방법을 찾았습니다. PDF를 텍스트 편집기에서 열어 첨부 파일과 관련된 모든 행을 '%'라고 추가하여 주석을 달 수 있습니다. 그러면 아마도 더 좋은 방법이 될 것입니다 ... 그러나 아직 Java로 어떻게 해야할지 모르겠군요. 다른 텍스트 파일이나 그 밖의 다른 파일과 같은 PDF를 열어 볼 수 있습니까? – Karlovsky120

+0

@ Karlovsky120 "PDF를 텍스트 편집기에서 열어서 모든 행의 처음에 %를 추가 할 수 있습니다." 아니, 그럴 수 없어. PDF는 바이너리 형식입니다. PDF 파일에 그렇게하면 파일이 손상되어 읽을 수 없게됩니다. – yms

+0

정확하게 입력하십시오. 그렇다면 내가 부패하지 않도록하기 위해 Java에서 어떻게 사용합니까? 오후 8시 30 분 P.S. 좋아, 텍스트 편집기가 아니라 Eclipse를 사용하여 편집했습니다 ... – Karlovsky120