回答編集履歴

3

見直しキャンペーン中

2023/07/17 05:55

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -1,135 +1,69 @@
1
1
  あきらめていたのですができてしまいました。
2
-
3
2
  パスワード付きや暗号化?されているとPDFsharpが開けずエラーになります(web上にあるものって結構パスワード付いてるんですね)
4
3
 
5
-
6
-
7
4
  PDFsharpで作ったもの以外にもいくつかやってみましたが、ミラー化できました。
8
-
9
5
  Google Chromeで見たときにページ送り?(元は横に矢印が出てるのに縦スクロールになる)が違ってしまうpdfがありましたがよくわかりません。
10
6
 
7
+ 参考
8
+ [PDFsharp Sample: Two Pages on One - PDFsharp and MigraDoc Wiki](http://www.pdfsharp.net/wiki/TwoPagesOnOne-sample.ashx?AspxAutoDetectCookieSupport=1)
11
9
 
12
-
13
- [参考](http://www.pdfsharp.net/wiki/TwoPagesOnOne-sample.ashx)
14
-
15
-
16
-
17
- ```C#
10
+ ```cs
18
-
19
11
  using System.Diagnostics;
20
-
21
12
  using PdfSharp.Drawing;
22
-
23
13
  using PdfSharp.Pdf;
24
14
 
25
-
26
-
27
15
  namespace Questions226967
28
-
29
16
  {
30
-
31
17
  class Program
32
-
33
18
  {
34
-
35
19
  /// <summary>PDFを鏡像化して保存します</summary>
36
-
37
20
  /// <param name="inputFilePath">元になるファイルパス</param>
38
-
39
21
  /// <param name="outputFilePath">鏡像化したファイルパス</param>
40
-
41
22
  static void MirrorPdf(string inputFilePath, string outputFilePath)
42
-
43
23
  {
44
-
45
24
  XPdfForm form = XPdfForm.FromFile(inputFilePath); // XPdfFormがポイント
46
-
47
25
  PdfDocument output = new PdfDocument();
48
26
 
49
-
50
-
51
27
  for(int i = 0; i < form.PageCount; i++)
52
-
53
28
  {
54
-
55
29
  form.PageNumber = i + 1;
56
-
57
30
  PdfPage page = output.AddPage();
58
-
59
31
  page.Width = form.Page.Width;
60
-
61
32
  page.Height = form.Page.Height;
62
33
 
63
-
64
-
65
34
  XRect box = new XRect(0, 0, page.Width, page.Height);
66
-
67
35
  XGraphics gfx = XGraphics.FromPdfPage(page);
68
36
 
69
-
70
-
71
37
  gfx.TranslateTransform(page.Width, 0);
72
-
73
38
  gfx.ScaleTransform(-1, 1);
74
-
75
39
  gfx.DrawImage(form, box);
76
-
77
40
  }
78
41
 
79
-
80
-
81
42
  output.Save(outputFilePath);
82
-
83
43
  }
84
-
85
44
  // 単に入力用のpdfを作っているだけ
86
-
87
45
  static void SamplePdf(string outputFilePath)
88
-
89
46
  {
90
-
91
47
  PdfDocument document = new PdfDocument();
92
-
93
48
  document.Info.Title = "Created with PDFsharp";
94
-
95
49
  XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic);
96
-
97
50
  XImage image = XImage.FromFile(@"file_icon_text_pdf.png");
98
-
99
51
  PdfPage page = document.AddPage();
100
-
101
52
  XGraphics gfx = XGraphics.FromPdfPage(page);
102
-
103
53
  gfx.DrawString("Hello, World!", font, XBrushes.Black,
104
-
105
54
  new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
106
-
107
55
  gfx.DrawImage(image, 0, 0);
108
-
109
56
  document.Save(outputFilePath);
110
-
111
57
  }
112
-
113
58
  static void Main()
114
-
115
59
  {
116
-
117
60
  string input = @"HelloWorld.pdf";
118
-
119
61
  string output = "HelloWorld_Mirror.pdf";
120
-
121
62
  SamplePdf(input);
122
63
 
123
-
124
-
125
64
  MirrorPdf(input, output);
126
-
127
65
  Process.Start(output);
128
-
129
66
  }
130
-
131
67
  }
132
-
133
68
  }
134
-
135
69
  ```

2

あきらめていたのですができてしまいました。

2019/12/05 08:32

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -1,4 +1,16 @@
1
+ あきらめていたのですができてしまいました。
2
+
3
+ パスワード付きや暗号化?されているとPDFsharpが開けずエラーになります(web上にあるものって結構パスワード付いてるんですね)
4
+
5
+
6
+
1
- PDFsharpのサンプルのぎはぎですが、こういうこといいのでょうか?
7
+ PDFsharpで作ったも以外にもいくかやってみましたが、ミラー化きまた。
8
+
9
+ Google Chromeで見たときにページ送り?(元は横に矢印が出てるのに縦スクロールになる)が違ってしまうpdfがありましたがよくわかりません。
10
+
11
+
12
+
13
+ [参考](http://www.pdfsharp.net/wiki/TwoPagesOnOne-sample.ashx)
2
14
 
3
15
 
4
16
 
@@ -20,7 +32,59 @@
20
32
 
21
33
  {
22
34
 
35
+ /// <summary>PDFを鏡像化して保存します</summary>
36
+
37
+ /// <param name="inputFilePath">元になるファイルパス</param>
38
+
39
+ /// <param name="outputFilePath">鏡像化したファイルパス</param>
40
+
41
+ static void MirrorPdf(string inputFilePath, string outputFilePath)
42
+
43
+ {
44
+
45
+ XPdfForm form = XPdfForm.FromFile(inputFilePath); // XPdfFormがポイント
46
+
47
+ PdfDocument output = new PdfDocument();
48
+
49
+
50
+
51
+ for(int i = 0; i < form.PageCount; i++)
52
+
53
+ {
54
+
55
+ form.PageNumber = i + 1;
56
+
57
+ PdfPage page = output.AddPage();
58
+
59
+ page.Width = form.Page.Width;
60
+
61
+ page.Height = form.Page.Height;
62
+
63
+
64
+
65
+ XRect box = new XRect(0, 0, page.Width, page.Height);
66
+
67
+ XGraphics gfx = XGraphics.FromPdfPage(page);
68
+
69
+
70
+
71
+ gfx.TranslateTransform(page.Width, 0);
72
+
73
+ gfx.ScaleTransform(-1, 1);
74
+
75
+ gfx.DrawImage(form, box);
76
+
77
+ }
78
+
79
+
80
+
81
+ output.Save(outputFilePath);
82
+
83
+ }
84
+
85
+ // 単に入力用のpdfを作っているだけ
86
+
23
- static void Main()
87
+ static void SamplePdf(string outputFilePath)
24
88
 
25
89
  {
26
90
 
@@ -32,61 +96,35 @@
32
96
 
33
97
  XImage image = XImage.FromFile(@"file_icon_text_pdf.png");
34
98
 
35
-
36
-
37
-
38
-
39
- // 1ページ目 通常
40
-
41
99
  PdfPage page = document.AddPage();
42
100
 
43
101
  XGraphics gfx = XGraphics.FromPdfPage(page);
44
102
 
45
-
46
-
47
103
  gfx.DrawString("Hello, World!", font, XBrushes.Black,
48
104
 
49
- new XRect(0, 0, page.Width, page.Height),
105
+ new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
50
-
51
- XStringFormats.Center);
52
106
 
53
107
  gfx.DrawImage(image, 0, 0);
54
108
 
109
+ document.Save(outputFilePath);
110
+
111
+ }
112
+
113
+ static void Main()
114
+
115
+ {
116
+
117
+ string input = @"HelloWorld.pdf";
118
+
119
+ string output = "HelloWorld_Mirror.pdf";
120
+
121
+ SamplePdf(input);
55
122
 
56
123
 
57
124
 
125
+ MirrorPdf(input, output);
58
126
 
59
- // 2ページ目 ミラー
60
-
61
- page = document.AddPage();
62
-
63
- gfx = XGraphics.FromPdfPage(page);
64
-
65
-
66
-
67
- gfx.TranslateTransform(page.Width, 0);
68
-
69
- gfx.ScaleTransform(-1, 1);
70
-
71
-
72
-
73
- gfx.DrawString("Hello, World!", font, XBrushes.Black,
74
-
75
- new XRect(0, 0, page.Width, page.Height),
76
-
77
- XStringFormats.Center);
78
-
79
- gfx.DrawImage(image, 0, 0);
80
-
81
-
82
-
83
-
84
-
85
- const string filename = "HelloWorld.pdf";
86
-
87
- document.Save(filename);
88
-
89
- Process.Start(filename);
127
+ Process.Start(output);
90
128
 
91
129
  }
92
130
 
@@ -95,9 +133,3 @@
95
133
  }
96
134
 
97
135
  ```
98
-
99
- ![pdf](90609e8687bb967ce9d3a7284da6ddc2.png)
100
-
101
- 初めて使ったので何か頓珍漢なことをしているかもしれません。
102
-
103
- 画像は「いらすとや」さんからお借りしました。

1

PDFsharp

2019/12/05 08:32

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -1,4 +1,4 @@
1
- PdfSharpのサンプルのつぎはぎですが、こういうことでいいのでしょうか?
1
+ PDFsharpのサンプルのつぎはぎですが、こういうことでいいのでしょうか?
2
2
 
3
3
 
4
4