-1

PDFドキュメントをMS Wordに変換し、必要に応じてWordドキュメントをフォーマットするためにc#でコーディングしています。

誰でも私に方法を提案できますか

  1. カーソル フォーカスを各文の最後に設定し、各文の最後で Enter キーを押します。
  2. すべての段落の最初のアルファベットのみを選択して書式設定します。

私が使用しているコードは次のとおりです。

for (int i = 0; i < selectedFiles; i++)
{

    inFileName = openFile.SafeFileNames[i];
    outFileName = inFileName;
    pos = inFileName.LastIndexOf('.');
    if (pos > 0)
        outFileName = outFileName.Substring(0, pos);
    outFileName += ".doc";

    //outFileName = savePDFFile.FileName;

    //Convert(openFile.SafeFileNames[i], outFileName);
    Convert(cPath + inFileName, cPath + outFileName);

    Object oMissing = System.Reflection.Missing.Value;
    //OBJECTS OF FALSE AND TRUE
    Object oTrue = true;
    Object oFalse = false;
    //Create word document  


    Word.Application oWord = new Word.Application();
    Word.Document oWordDoc = new Word.Document();
    Object oTemplatePath = cPath + outFileName;

    oWordDoc = oWord.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);

    #region Replace Keyword
    this.FindAndReplace(oWord, "   ", " ");
    this.FindAndReplace(oWord, ". ", ".");
    this.FindAndReplace(oWord, " . ", ".");
    this.FindAndReplace(oWord, " .", ".");
    this.FindAndReplace(oWord, "-", " – ");
    this.FindAndReplace(oWord, ",", " ,");
    this.FindAndReplace(oWord, " , ", " ,");
    this.FindAndReplace(oWord, " -", "-");
    this.FindAndReplace(oWord, " - ", "-");
    this.FindAndReplace(oWord, "- ", "-");
    #endregion Replace Keyword
    Word.Range rng = null;
    if (oWordDoc.Sentences.Count > 0)
    {
        object startLocation = oWordDoc.Sentences[1].Start;
        object endLocation = oWordDoc.Sentences[1].End;
        // Supply a Start and End value for the Range. 
        rng = oWordDoc.Range(ref startLocation, ref endLocation);
        // Select the Range.
        rng.Select();
    }
    object missing = Missing.Value;
    object what = Word.WdGoToItem.wdGoToLine;
    object which = Word.WdGoToDirection.wdGoToLast;
    oWordDoc.GoTo(ref what, ref which, ref missing, ref missing);
    for (int j = 0; j < oWordDoc.Sentences.Count; j++)
    {
        //oWordDoc.Sentences[j].Text = oWordDoc.Sentences[j].Text.ToString() + "\n";
    }
    // add header
    foreach (Section section in oWordDoc.Sections)
    {
        Range headerRange = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
        headerRange.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
        headerRange.Font.Size = 12;
        headerRange.Font.Name = "Ariel";

        if (rng != null)
            headerRange.Text = rng.Text.Trim();
    }
    rng.Text = "";
    object findStr = "rr"; //sonething to find
    while (oWord.Selection.Find.Execute(ref findStr))  //found...
    {
        //change font and format of matched words
        oWord.Selection.Font.Name = "Tahoma"; //change font to Tahoma
        oWord.Selection.Font.Size = 48;
        oWord.ActiveWindow.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle;
        //oWord.ActiveWindow.Selection.ParagraphFormat.SpaceAfter = 0.0F;
        oWord.Selection.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdRed;  //change color to red
    }
    oWordDoc.Content.Font.Name = "Franklin Gothic Book";
    oWordDoc.Content.Font.Size = 11.5F;
    oWordDoc.Content.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify;
    //oWordDoc.Content.Start = 0;
    oWordDoc.ShowGrammaticalErrors = false;
    oWordDoc.ShowSpellingErrors = false;
    //oWordDoc.Content.Sections.First
    oWordDoc.SaveAs(cPath + outFileName);
    progressBar1.Value = (((i + 1) * 100) / selectedFiles);
}
4

2 に答える 2

1

InsertParagraphAfter関数を使用して、各文の後に新しい行を追加できます。

何かのようなもの:

       int count = oWordDoc.Sentences.Count;
       for(int i=1; i<=count;i++)
       {
          object startLocation = oWordDoc.Sentences[i].Start;
          object endLocation = oWordDoc.Sentences[i].End;
          // Supply a Start and End value for the Range. 
          rng = oWordDoc.Range(ref startLocation, ref endLocation);
          // Select the Range.
          rng.Select();
          rng.InsertParagraphAfter();
       }
于 2013-03-14T08:26:31.977 に答える