Word(2013)文書の一部をJavaで保護し、読み取り専用にする必要があります。 Apache POIで可能でしょうか?そしてもしそうなら、どうですか? 私は文書全体を保護する可能性しか見つけませんでした。Apache POIで単語文書の一部を保護する方法
(私は、ヘッダーとフッターだけでなく、体の部分でいくつかの行だけでなく、保護する必要があります。)
Word(2013)文書の一部をJavaで保護し、読み取り専用にする必要があります。 Apache POIで可能でしょうか?そしてもしそうなら、どうですか? 私は文書全体を保護する可能性しか見つけませんでした。Apache POIで単語文書の一部を保護する方法
(私は、ヘッダーとフッターだけでなく、体の部分でいくつかの行だけでなく、保護する必要があります。)
あなたはWord
文書で施行できる保護複数の種類があります。読み取り専用保護を実施している場合は、範囲を保護から除外するには、CTPermStartとCTPermを使用して範囲をマークします。
例:
import java.io.*;
import org.apache.poi.wp.usermodel.*;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPermStart;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STEdGrp;
public class CreateWordPartialProtected {
public static void main(String[] args) throws Exception {
XWPFDocument document= new XWPFDocument();
// create header
XWPFHeader header = document.createHeader(HeaderFooterType.DEFAULT);
XWPFParagraph paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.LEFT);
XWPFRun run = paragraph.createRun();
run.setText("The page header:");
// create footer
XWPFFooter footer = document.createFooter(HeaderFooterType.DEFAULT);
paragraph = footer.createParagraph();
paragraph.setAlignment(ParagraphAlignment.CENTER);
run = paragraph.createRun();
run.setText("Page ");
paragraph.getCTP().addNewFldSimple().setInstr("PAGE \\* MERGEFORMAT");
run = paragraph.createRun();
run.setText(" of ");
paragraph.getCTP().addNewFldSimple().setInstr("NUMPAGES \\* MERGEFORMAT");
// the body content
paragraph = document.createParagraph();
run=paragraph.createRun();
run.setText("This body part is protected.");
paragraph = document.createParagraph();
// CTPermStart marking the start of unprotected range
CTPermStart ctPermStart = document.getDocument().getBody().addNewPermStart();
ctPermStart.setEdGrp(STEdGrp.EVERYONE);
ctPermStart.setId("123456"); //note the Id
paragraph = document.createParagraph();
run=paragraph.createRun();
run.setText("This body part is not protected.");
// CTPerm marking the end of unprotected range
document.getDocument().getBody().addNewPermEnd().setId("123456"); //note the same Id
paragraph = document.createParagraph();
paragraph = document.createParagraph();
run=paragraph.createRun();
run.setText("This body part is protected again.");
paragraph = document.createParagraph();
document.enforceReadonlyProtection(); //enforce readonly protection
document.write(new FileOutputStream("CreateWordPartialProtected.docx"));
document.close();
}
}
あなたがフォームの保護を埋める強制したい場合は、複数のセクションが必要となることから、それはより複雑になります。
ありがとうございます!実際には、すでにドキュメントが読み込まれており、後で保護する部品を定義する必要があります。私はあなたの提案をチェックし、私が必要とするものに変換しようとする... :) – maria
@マリア:それはまさに質問が明確である必要がある理由です。だから問題があり、次の質問があれば、**あなたがすでに持っているものの[短く、自己完結型、正しい(コンパイル可能な)、例文(http://sscce.org/)どこに問題があるのか正確に説明します。 –
MS Wordでこれをどうやってやりますか? – jmarkmurphy
「開発者」タブおよび「編集を制限する」を選択すると、文書の一部を「読み取り専用」として定義できます。 ( '編集の制限'と 'セクションの選択...'で、保護されるセクション/保護されないセクションを定義できます) – maria