샘플 코드.
재현 할 수 없습니다. 또한 새로운 예를 만들어 기존의 예를 적응 : AddEmbeddedFiles
public static final String[] ATTACHMENTS = {
"hello", "world", "what", "is", "up"
};
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
for (String s : ATTACHMENTS) {
PdfFileSpecification fs = PdfFileSpecification.fileEmbedded(
stamper.getWriter(), null, String.format("%s.txt", s),
String.format("Some test: %s", s).getBytes());
stamper.addFileAttachment(String.format("Content: %s", s), fs);
}
stamper.close();
}
결과는 모든 예상되는 첨부 파일이 포함 :
내가 볼 수있는 유일한 차이를, 당신이 모든을 제공한다는 것입니다 임베디드 파일에 같은 이름이 있지만, 그렇게해도 첨부 파일을 모두 올바르게 볼 수 있습니다.
또 다른 차이점은 String
값의 배열을 사용하지만 실제로는 문제가되지 않습니다. cmaOrder.getFileName()
이 실제로 파일 이름 (예 : "order1.doc", "order2.xls")을 반환한다고 가정합니다.)이고 cmaOrder.getFileData()
은 해당 파일의 실제 바이트가있는 byte[]
을 반환합니다. SOSCustomerOrderFile
클래스가 무엇인지 알려주지 않으면, 우리는 그러한 가정을하도록 강요하고 있습니다. 당신이 디스크에있는 파일이있는 경우
, 당신은 또한 같은 것을 할 수 있습니다 :
입니다
PdfFileSpecification fs = PdfFileSpecification.fileEmbedded(
stamper.getWriter(), cmaOrder.getFilePath(), cmaOrder.getFileName(), null);
다음 SOSCustomerOrderFile
클래스는 파일의 경로를 반환하는 getFilePath()
방법이있는 경우. 우리는 당신이 완전한 코드 기반에 접근 할 수 없으며 접근 할 필요도 없다는 것을 알지 못합니다. 문제를 재현하기 위해 SSCCE 만 생성 할 수 있으며 SSCCE는 귀하의 주장이 잘못되었음을 알려줍니다. SSCCE를 시스템에서 실행하고 문제를 재현 할 수있는 방식으로 SSCCE를 적용하여 자신이 옳다는 것을 증명할 수 있습니다.
모든 반복에서 첨부 파일을 무시하고있는 것 같습니다. –
나는 그것을 테스트했습니다. 분명히 그렇게하는 것이 좋습니다. 문제를 재현 할 수 없습니다. –
어떤 iText 버전을 사용하십니까? – mkl